From 7b3445e8cd1f4e2dff313434fc818d84cebf7c48 Mon Sep 17 00:00:00 2001
From: pabois <pierreandre.boissinot@noesya.coop>
Date: Tue, 19 Oct 2021 11:45:58 +0200
Subject: [PATCH] cookie banner

---
 Gemfile                                      | 1 +
 Gemfile.lock                                 | 7 +++++++
 app/assets/javascripts/admin.js              | 1 +
 app/assets/javascripts/application.js        | 1 +
 app/assets/stylesheets/admin.sass            | 1 +
 app/assets/stylesheets/admin/appstack.sass   | 5 +++++
 app/assets/stylesheets/application.sass      | 1 +
 app/views/admin/application/_nav.html.erb    | 8 ++++++++
 app/views/admin/layouts/application.html.erb | 1 +
 app/views/layouts/application.html.erb       | 2 +-
 app/views/layouts/devise.html.erb            | 1 +
 config/locales/en.yml                        | 1 +
 config/locales/fr.yml                        | 1 +
 13 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/Gemfile b/Gemfile
index cbe540a33..e9225d991 100644
--- a/Gemfile
+++ b/Gemfile
@@ -13,6 +13,7 @@ gem 'delayed_job_web'
 gem 'bootsnap', '>= 1.4.4', require: false
 gem 'bugsnag'
 gem 'sib-api-v3-sdk'
+gem 'gdpr'
 
 # Back
 gem 'rails'
diff --git a/Gemfile.lock b/Gemfile.lock
index 2ddd2c3fa..aded56c9f 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -179,6 +179,10 @@ GEM
     figaro (1.2.0)
       thor (>= 0.14.0, < 2)
     front_matter_parser (1.0.1)
+    gdpr (1.2.0)
+      js_cookie_rails
+      rails
+      sassc-rails
     globalid (0.5.2)
       activesupport (>= 5.0)
     i18n (1.8.10)
@@ -194,6 +198,8 @@ GEM
       rails-dom-testing (>= 1, < 3)
       railties (>= 4.2.0)
       thor (>= 0.14, < 2.0)
+    js_cookie_rails (2.2.0)
+      railties (>= 3.1)
     json (2.6.0)
     kamifusen (1.9)
       image_processing
@@ -388,6 +394,7 @@ DEPENDENCIES
   enum_help
   figaro
   front_matter_parser
+  gdpr
   image_processing
   jbuilder
   jquery-rails
diff --git a/app/assets/javascripts/admin.js b/app/assets/javascripts/admin.js
index 226a7da47..9105ed405 100644
--- a/app/assets/javascripts/admin.js
+++ b/app/assets/javascripts/admin.js
@@ -7,4 +7,5 @@
 //= require cropperjs/dist/cropper
 //= require jquery-cropper/dist/jquery-cropper
 //= require appstack/app
+//= require gdpr/cookie_consent
 //= require_tree ./admin
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
index d0d43a439..dfa08489a 100644
--- a/app/assets/javascripts/application.js
+++ b/app/assets/javascripts/application.js
@@ -7,3 +7,4 @@
 //= require jquery-cropper/dist/jquery-cropper
 //= require simple_form_password_with_hints
 //= require simple_form_bs5_file_input
+//= require gdpr/cookie_consent
diff --git a/app/assets/stylesheets/admin.sass b/app/assets/stylesheets/admin.sass
index 945fc63ec..bb3070795 100644
--- a/app/assets/stylesheets/admin.sass
+++ b/app/assets/stylesheets/admin.sass
@@ -4,5 +4,6 @@
 @import 'simple_form_password_with_hints'
 @import 'simple_form_bs5_file_input'
 @import 'cropperjs/dist/cropper'
+@import 'gdpr/cookie_consent'
 @import 'commons/*'
 @import 'admin/*'
diff --git a/app/assets/stylesheets/admin/appstack.sass b/app/assets/stylesheets/admin/appstack.sass
index a5c456e88..d0d744972 100644
--- a/app/assets/stylesheets/admin/appstack.sass
+++ b/app/assets/stylesheets/admin/appstack.sass
@@ -1,6 +1,11 @@
 main.content
     padding-bottom: 65px
 
+.sidebar
+    footer
+        a
+            padding: .125rem
+
 .sidebar.collapsed + .footer.fixed
     left: 0
     transition: left .35s ease-in-out
diff --git a/app/assets/stylesheets/application.sass b/app/assets/stylesheets/application.sass
index b5505231d..819e1e0d4 100644
--- a/app/assets/stylesheets/application.sass
+++ b/app/assets/stylesheets/application.sass
@@ -3,5 +3,6 @@
 @import 'simple_form_password_with_hints'
 @import 'simple_form_bs5_file_input'
 @import 'cropperjs/dist/cropper'
+@import 'gdpr/cookie_consent'
 @import 'commons/*'
 @import 'application/*'
diff --git a/app/views/admin/application/_nav.html.erb b/app/views/admin/application/_nav.html.erb
index d29518d0e..d336bfb7e 100644
--- a/app/views/admin/application/_nav.html.erb
+++ b/app/views/admin/application/_nav.html.erb
@@ -4,5 +4,13 @@
       <%= image_tag 'osuny-white.svg', class: 'img-fluid' %>
     <% end %>
     <%= render_navigation context: :admin %>
+
+    <footer class="text-center">
+      <%= current_university %>
+      <br>
+      <%= link_to t('terms_of_service'), '', class: 'sidebar-link' %>
+      <%= link_to t('privacy_policy'), '', class: 'sidebar-link' %>
+      <%= link_to t('cookies_consent_choice'), '', class: 'sidebar-link js-gdpr__cookie_consent__display_again' %>
+    </footer>
   </div>
 </nav>
diff --git a/app/views/admin/layouts/application.html.erb b/app/views/admin/layouts/application.html.erb
index 2f86440c2..74398af46 100644
--- a/app/views/admin/layouts/application.html.erb
+++ b/app/views/admin/layouts/application.html.erb
@@ -38,6 +38,7 @@
       </div>
     </div>
     <%= javascript_include_tag 'admin' %>
+    <%= render 'gdpr/cookie_consent' %>
     <%= render 'bugsnag' %>
   </body>
 </html>
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index c2009000b..76d2c8aa4 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -13,11 +13,11 @@
   <body>
     <%= render 'nav' %>
     <main class="container">
-      
       <%= render_breadcrumbs builder: Appstack::BreadcrumbsOnRailsBuilder %>
       <%= yield %>
     </main>
     <%= render 'footer' %>
+    <%= render 'gdpr/cookie_consent' %>
     <%= render 'bugsnag' %>
   </body>
 </html>
diff --git a/app/views/layouts/devise.html.erb b/app/views/layouts/devise.html.erb
index d6f738760..c919ef4e1 100644
--- a/app/views/layouts/devise.html.erb
+++ b/app/views/layouts/devise.html.erb
@@ -38,6 +38,7 @@
       </div>
     </div>
     <%= render 'footer' %>
+    <%= render 'gdpr/cookie_consent' %>
     <%= render 'bugsnag' %>
   </body>
 </html>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 0c146dd09..9a780fe65 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -44,6 +44,7 @@ en:
     users_alerts:
       not_locked_html: '<i>%{model}</i> was not locked.'
       successfully_unlocked_html: "<i>%{model}</i> was successfully unlocked."
+  cookies_consent_choice: Cookies consent choice
   create: Create
   delete: Delete
   devise:
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 602f7cb05..f03349b20 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -45,6 +45,7 @@ fr:
     users_alerts:
       not_locked_html: "<i>%{model}</i> n'était pas verrouillé(e)."
       successfully_unlocked_html: "<i>%{model}</i> a bien été déverrouillé(e)."
+  cookies_consent_choice: Choix en matière de cookies
   create: Créer
   delete: Supprimer
   devise:
-- 
GitLab