GSoC 2021 - Cookie Manager | Week 7
By Private Profile 2fb40d6b on 2021-07-29 10:45 in GSoC 21 Feature Enhancement - 2
Date: 19 July 2021 - 25 July 2021
Location: Glip
Hi, this is the progress report for the cookie manager project which is currently part of GSoC.
In the 7th week of the program, we implemented the cookie block/unblock process using a system plugin.
Discussion Outline:
This week, we implemented the cookie block/unblock process which was discussed in this report (week 5) with some modifications in it.
Tasks completed this week:
- We have implemented a JavaScript-based solution for the cookie block/unblock process.
- Admin has to include all the cookie setting codes in the backend in the Cookie manager scripts section.
- On users’ first visit, scripts that require consent will not be rendered.
- Also, we block iframes, embeds, objects, links, and images that can set cookies on the first visit.
- All the scripts that are generating cookies, will be sent from backend to frontend using addScriptOptions, based on the user’s consent options.
- For blocking of iframes, embeds, links, we use regex to search for the particular iframes, links and change the attribute to block, according to its type.
- According to the consented category, required scripts will be executed.
- Scripts will be executed according to their position also.
- For executing scripts, we use document.createRange() to parse the script.
- Once users’ gave consent, we set a cookie for each category with its value true and false, cookie_category_[category]=true or cookie_category_[category]=false.
- When users set their preferences, then one cookie cookieBanner=shown will be set. All the cookie consent and cookie banner related information will be merged into one single cookie on a future update.
- Script codes will be sent from backend to frontend only if the cookie for that category has not been set.
- On subsequent visits, scripts will be rendered according to cookie cookie_category_[category].
- We use an output buffer with the str_replace function to replace the old content with the new content which includes scripts, according to its position.
- The cookie banner will be shown to the users only if cookieBanner=shown has not been set.
Pull Request - https://github.com/joomla-projects/gsoc21_cookie-manager/pull/7