fluffy-factory / gdpr-bundle
GDPR Bundle
Installs: 940
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 0
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=7.2.0
- ext-json: *
README
Installation
Install package
composer require fluffy-factory/gdpr-bundle
Install assets
php bin/console asset:install
Configuration
# config/packages/gdpr.yaml gdpr: redirection_url: 'fluffy_gdpr' # If you don't specify a route, the user will be redirected to the route he is on. btn: deny: true accept: true design: disable: false bg_color: '#292e33' text_color: '#ffffff' btn_deny_bg_color: '#D23A4B' btn_deny_text_color: '#ffffff' btn_allow_bg_color: '#0ED198' btn_allow_text_color: '#ffffff' cookies: my_cookie_required: name: cookie_name description: "description ..." detail: "expiration date ..." required: true my_cookie_optionnal: name: cookie_name_1 description: "description ..." detail: "expiration date ..." required: false
NOTE
If the design.disable property is true so the style attribute will not be added to template's elements.
Route
The bundle provide the route 'fluffy_gdpr'. You can edit the content to explain your cookies and configure them.
# config/routes/gdpr.yaml gdpr: resource: "@GdprBundle/Controller/GdprController.php" type: annotation
{# privacy.html.twig #} {% block required_cookies_table %} <h2 id="params">{{ 'cookies.required.title'|trans({},'GdprBundle') }}</h2> <table> <thead> <tr> <th>{{ 'cookies.name'|trans({},'GdprBundle') }}</th> <th>{{ 'cookies.description'|trans({},'GdprBundle') }}</th> <th>{{ 'cookies.details'|trans({},'GdprBundle') }}</th> </tr> </thead> <tbody> {% for cookie in required_cookies %} <tr> <td>{{ cookie.name|trans({},'GdprBundle') }}</td> <td>{{ cookie.description|trans({},'GdprBundle') }}</td> <td>{{ cookie.detail|trans({},'GdprBundle') }}</td> </tr> {% endfor %} </tbody> </table> {% endblock %} {% block optionnal_cookies_table %} <h2>{{ 'cookies.optionnal.title'|trans({},'GdprBundle') }}</h2> {{ form_start(form) }} {% for key, optionnal in optionnal_cookies %} {{ optionnal.name }} {{ form_widget(form[key]) }} <p>{{ optionnal.description }}</p> <p>{{ optionnal.detail }}</p> {% endfor %} <button type="submit">{{ 'cookies.accept'|trans({},'GdprBundle') }}</button> {{ form_end(form) }} {% endblock %}
Twig
Add this script tag, the cookies.js
script need it to knows which cookies write when the user accept or deny the privacy policy from the cookie_bar.html.twig
<head> <script type="text/javascript"> var optionnalCookies = {{ getOptionnalCookiesNames() }} </script> </head> {% block javascripts %} <script src="{{ asset('bundles/gdpr/js/cookies.js') }}"></script> {% endblock %}
Add stylesheets
{% block stylesheets %} <link rel="stylesheet" href="{{ asset('bundles/gdpr/css/style.css') }}"> {% endblock %}
showCookieBar() check if the user already has all your cookies from the configuration file.
{% if showCookieBar() %} {% include '@Gdpr/cookie_bar.html.twig' %} {% endif %}
In case of optionnals cookies you can manage them in case-by-case with the twig function allowedCookie('cookie_name')
{% if allowedCookie('google_analytics') %} {# insert your code here ... #} {% endif %}