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: