From 129bd5febc98d9b027fa46fa1eb06f3ef89f9e0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Gaya?= <sebastien.gaya@gmail.com> Date: Thu, 15 Sep 2022 12:28:51 +0200 Subject: [PATCH] resend confirmation banner --- app/controllers/users/confirmations_controller.rb | 9 +++++++++ app/views/admin/layouts/application.html.erb | 8 ++++++++ config/locales/fr.yml | 2 ++ config/routes.rb | 2 ++ 4 files changed, 21 insertions(+) diff --git a/app/controllers/users/confirmations_controller.rb b/app/controllers/users/confirmations_controller.rb index 98000946c..663067dd4 100644 --- a/app/controllers/users/confirmations_controller.rb +++ b/app/controllers/users/confirmations_controller.rb @@ -1,3 +1,12 @@ class Users::ConfirmationsController < Devise::ConfirmationsController include Users::AddUniversityToRequestParams + + def resend + unless signed_in_resource.confirmed? + signed_in_resource.resend_confirmation_instructions + redirect_back(fallback_location: admin_root_path, notice: t('devise.confirmations.send_instructions')) + else + redirect_back(fallback_location: admin_root_path, alert: t('admin.users_alerts.already_confirmed')) + end + end end diff --git a/app/views/admin/layouts/application.html.erb b/app/views/admin/layouts/application.html.erb index 7ed091692..425183182 100644 --- a/app/views/admin/layouts/application.html.erb +++ b/app/views/admin/layouts/application.html.erb @@ -33,6 +33,14 @@ <%= render 'admin/application/top' %> <main class="content"> <div class="container-fluid p-0"> + <% unless current_user.confirmed? %> + <div class="alert alert-warning"> + <div class="alert-message"> + <%= t('admin.users_alerts.pending_confirmation', duration: distance_of_time_in_words(Rails.configuration.devise.allow_unconfirmed_access_for)) %> + <%= link_to t('devise.confirmations.new.resend_confirmation_instructions'), resend_user_confirmation_path, method: :post, class: 'alert-link' %> + </div> + </div> + <% end %> <div class="d-flex justify-content-between"> <h1><%= yield :title %></h1> <p class="text-end pt-1"><%= yield :title_right %></p> diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 25cb07d8a..dd33b0f80 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -106,8 +106,10 @@ fr: successfully_removed_html: "<i>%{model}</i> a bien été retiré(e)." successfully_updated_html: "<i>%{model}</i> a bien été mis(e) à jour." users_alerts: + already_confirmed: "Votre compte est déjà confirmé." not_locked_html: "<i>%{model}</i> n'était pas verrouillé(e)." successfully_unlocked_html: "<i>%{model}</i> a bien été déverrouillé(e)." + pending_confirmation: "Vous avez reçu un e-mail pour confirmer votre compte. Celui-ci est utilisable pendant %{duration}." will_be_published_html: "<i>%{model}</i> va bientôt être publié(e)." batch_selectable: title: Modifier la sélection diff --git a/config/routes.rb b/config/routes.rb index 2e983de6e..b97709544 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -13,11 +13,13 @@ Rails.application.routes.draw do } devise_scope :user do + post '/users/confirmation/resend' => 'users/confirmations#resend', as: :resend_user_confirmation match '/users/auth/saml/setup' => 'users/omniauth_callbacks#saml_setup', via: [:get, :post] end namespace :admin do resources :users do + post 'resend_confirmation_email' => 'users#resend_confirmation_email', on: :member patch 'unlock' => 'users#unlock', on: :member end draw 'admin/administration' -- GitLab