diff --git a/Gemfile b/Gemfile index cbe540a336787fe7752d573a0f0ffc9a9bb03eea..e9225d991247a52d914baef50c81415fe35fb8a5 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 2ddd2c3fa634699f17f4aee60d2e74cacb64c585..aded56c9f7cbf3e3387d2fd5c8a095e8b79bc891 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 226a7da476cfad834caf00d3f108d2bed34a6f00..9105ed40506e8626ec4191987405cf1d73c3c7eb 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 d0d43a439b800d3b58b32b6d1408f7712c1411ce..dfa08489abc1149b10059962156830f56f7d54b6 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 945fc63ec514b4bca3bdb2a2ce21a852fa255bf8..bb3070795a9d36bfdd6469f255ae799e6e1c0708 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 a5c456e88919ae7f89e0a18cd27e3f22d18730e6..d0d74497224dd9f304c736654d04bc468b90ae51 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 b5505231df998e867116ddc0a89768d23426b58e..819e1e0d4ec1e07d84d8299ae5dd4435054b3481 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 d29518d0eb758811fc9bc34589dc8d3211ad8760..d336bfb7e0b53e253b51ce17681bfd73d1764c56 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 2f86440c2136320c7263d3708f1084666d0931dd..74398af46fc7728b72b48e9fcc0dc5d46b24883e 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 c2009000b5c58802d3e48fd056ba82807ca6198f..76d2c8aa48bb84105884003cce09f1a8ed6b0123 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 d6f7387607692c78c8b9163a8b37b3feb75f1f47..c919ef4e1b865035a7b09b9d3c3165ac93f9da79 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 0c146dd09c0492939508dea5339135713749d805..9a780fe654db4d071907ac4f14ba850705dcad00 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 602f7cb050f24c5217f65a2806f6132851151d0d..f03349b204312c84cf2f95839d736f2c33c8258c 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: