Git Product home page Git Product logo

cookie-consent-bundle's Introduction

Installation

1 : Composer

Ajouter le repo et l'installer

#composer.json
"repositories": [
#...
  {
    "type": "git",
    "url": "https://github.com/webetdesign/cookie-consent-bundle.git"
  }
]
#terminal
composer require webetdesign/cookie-consent-bundle

2 : Activer le bundle

<?php
// config/bundles.php
return [
// ...
    WebEtDesign\CookieConsentBundle\WDCookieConsentBundle::class => ['all' => true],
// ...
];

3 : Activer le routing

# config/routes/wd_cookie_consent.yaml
wd_cookie_consent:
    resource: "@WDCookieConsentBundle/Resources/config/routing.yaml"

4 : Configuration des cookies

Créer un catégorie pour chaque demande de consentement désirer

#config/packages/wd_cookie_consent.yaml
wd_cookie_consent:
    categories:
        - 'analytics'

5 : Activer ESI

#config/packages/framework.yaml
framework:
  #...
    esi: true

6 : Assets configuration

Pour ajouter des assets en admin vous appelez vos assets via extra_javascripts et extra_stylesheets dans config/packages/sonata/sonata_admin.yaml
Il faut faire pareil mais en front dans notre application.

Pour cela, il faut d'abord configurer l'entrée webpack

#config/packages/assets.yaml
framework:
  assets:
    packages:
     #...
      cookie:
        json_manifest_path: '%kernel.project_dir%/public/bundles/wdcookieconsent/build/manifest.json'
#config/packages/webpack_encore.yaml
webpack_encore:
  builds:
    #...
    cookie: '%kernel.project_dir%/public/bundles/wdcookieconsent/build'

Assets implémentation

//templates/base.html.twig
//...
{% block stylesheets %}
    {% for file in encore_entry_css_files('cookie', 'cookie') %}
        <link rel="stylesheet" href="{{ preload(file, { as: 'style', importance: 'high' }) }}">
    {% endfor %}
    {% for file in encore_entry_css_files('base', 'main') %}
        <link rel="stylesheet" href="{{ preload(file, { as: 'style', importance: 'high' }) }}">
    {% endfor %}
{% endblock %}
//...
{% block javascripts %}
    {{ encore_entry_script_tags('cookie', null, 'cookie') }}
    {{ encore_entry_script_tags('base', null, 'main') }}
{% endblock %}

Rendu

Charger le module de cookie via render_esi (pour ne pas mettre en cache )

//templates/base.html.twig
{{ render_esi(path('wd_cookie_consent.show', { 'locale' : 'en' })) }}

Cookies

Lorsqu'un utilisateur soumet le formulaire, les préférences sont enregistrées sous forme de cookies.
Les cookies ont une durée de vie de 1 an.
Les cookies suivants sont enregistrés :

  • Cookie_Consent: date de soumission
  • Cookie_Consent_Key: Clé générée en tant qu'identifiant du consentement de cookie soumis de l'utilisateur
  • Cookie_Category_[CATEGORY]: valeur (true ou false)

Logging

RGPD exige que toutes les préférences de cookies des utilisateurs soient explicables par les webmasters. Pour cela, nous enregistrons toutes les préférences de cookies dans la base de données. Les adresses IP sont anonymisées.

Database logging

TwigExtension

Les fonctions TwigExtension suivantes sont disponibles :

WDCookieConsent_isCategoryAllowedByUser vérifier si l'utilisateur a donné son autorisation pour une categorie de cookie

{% if WDCookieConsent_isCategoryAllowedByUser('analytics') == true %}
    ...
{% endif %}

WDCookieConsent_isCookieConsentSavedByUser vérifier si l'utilisateur a enregistré des préférences

{% if WDCookieConsent_isCookieConsentSavedByUser() == true %}
    ...
{% endif %}

Customization

Categories

Vous pouvez ajouter ou supprimer n'importe quelle catégorie en modifiant la configuration et en vous assurant que des traductions sont disponibles pour ces catégories.

#config/packages/wd_cookie_consent.yaml
wd_cookie_consent:
    categories:
        - 'analytics'
        - 'youtube'
        - 'facebook'

Translations

Pour chaque catégorie crée, ajouter un block de catégorie dans le fichier de trad

#translations/WDCookieConsentBundle.fr.yml
wd_cookie_consent:
  analytics: #catégorie
    title: 'Google Analytics'
    description: "Permet d'analyser les statistiques de consultation de notre site"
    link: "https://support.google.com/analytics/answer/6004245"
    link_label: "En savoir plus"

Styling

Pour changer la couleur principale du module, surcharger la varriable css --cookie-primary

:root {
    --cookie-primary: #00abdf;
    //ou avec interpolation de variable scss
    --cookie-primary: #{$primary};
}

Events

Si un cookie est accepté un événement est automatiquement envoyé à googleTagManager :

dataLayer.push({
  event: `rgpd_activate_${cat}`
});

il faut donc avoir préalablement installé GTM pour pouvoir gérer ce qu'il se passe une fois le consentement donné.

Update bundle

yarn build puis versionner les fichiers dans src/Resources/public/build

cookie-consent-bundle's People

Contributors

matthijsch avatar kevinsaul avatar maartenvanasperen avatar reyostallenberg avatar niklasbr avatar beatroy avatar jaapio avatar xorgxx avatar mozan avatar hectorprats avatar kdefives avatar oliverfehmel avatar romanapunts avatar ensag-dev avatar grandmaster44 avatar hello-devs avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.