resent email if link too old and better style email

This commit is contained in:
Lisa Durand 2024-07-15 11:30:30 +02:00
parent 3eabcb0736
commit e9f5389f83
No known key found for this signature in database
GPG key ID: 0DF91F2CA1E8B816
4 changed files with 29 additions and 15 deletions

View file

@ -38,8 +38,12 @@ class Users::ActivateController < ApplicationController
user.update!(email_verified_at: Time.zone.now) user.update!(email_verified_at: Time.zone.now)
flash[:notice] = 'Votre email a bien été vérifié' flash[:notice] = 'Votre email a bien été vérifié'
else else
flash[:alert] = "le lien est trop vieux" if user.present?
# to do relancer un lien if user flash[:alert] = "Ce lien n'est plus valable, un nouveau lien a été envoyé à l'adresse #{user.email}"
User.create_or_promote_to_tiers(user.email, SecureRandom.hex)
else
flash[:alert] = "Un problème est survenu, vous pouvez nous contacter sur #{Current.contact_email}"
end
end end
redirect_to root_path(user) redirect_to root_path(user)
end end

View file

@ -136,7 +136,7 @@ class User < ApplicationRecord
user user
end end
def self.create_or_promote_to_tiers(email, password, dossier) def self.create_or_promote_to_tiers(email, password, dossier = nil)
user = User user = User
.create_with(password: password, confirmed_at: Time.zone.now) .create_with(password: password, confirmed_at: Time.zone.now)
.find_or_create_by(email: email) .find_or_create_by(email: email)

View file

@ -3,16 +3,25 @@
%p %p
Bonjour, Bonjour,
%p %p
Un dossier sur la démarche : #{@dossier.procedure.libelle} a été démarré en votre nom par #{@dossier.user.email}. - if @dossier.present?
Un dossier sur la démarche : #{@dossier.procedure.libelle} a été démarré en votre nom par #{@dossier.user.email}.
- else
Un dossier a été démarré en votre nom sur #{Current.application_name}"
%p
Pour continuer à recevoir les mails concernant votre dossier, vous devez confirmer votre adresse email en cliquant sur ce bouton :
= round_button 'Je confirme', users_confirm_email_url(token: @token), :primary
%p %p
Pour continuer à recevoir les mails concernant votre dossier, vous devez confirmer votre adresse email en cliquant sur ce lien : Vous pouvez aussi utiliser ce lien :
= link_to(users_confirm_email_url(token: @token), users_confirm_email_url(token: @token))
= link_to(users_confirm_email_url(token: @token), users_confirm_email_url(token: @token)) %p
- if @dossier.present?
Pour en savoir plus, veuillez vous rapprocher de #{@dossier.user.email}.
- else
Nous restons à votre disposition si vous avez besoin daccompagnement à l'adresse #{link_to CONTACT_EMAIL, "mailto:#{CONTACT_EMAIL}"}.
%p
Pour en savoir plus, veuillez vous rapprocher de #{@dossier.user.email}.
= render partial: "layouts/mailers/signature" = render partial: "layouts/mailers/signature"

View file

@ -61,7 +61,7 @@ describe Users::ActivateController, type: :controller do
end end
end end
context 'when the confirmation token is not valid but already used' do context 'when the confirmation token is valid but already used' do
before do before do
get :confirm_email, params: { token: user.confirmation_token } get :confirm_email, params: { token: user.confirmation_token }
get :confirm_email, params: { token: user.confirmation_token } get :confirm_email, params: { token: user.confirmation_token }
@ -74,15 +74,16 @@ describe Users::ActivateController, type: :controller do
end end
context 'when the confirmation token is too old or not valid' do context 'when the confirmation token is too old or not valid' do
subject { get :confirm_email, params: { token: user.confirmation_token } }
before do before do
user.update!(confirmation_sent_at: 3.days.ago) user.update!(confirmation_sent_at: 3.days.ago)
get :confirm_email, params: { token: user.confirmation_token }
user.reload
end end
it 'redirects to root path with an explanation notice' do it 'redirects to root path with an explanation notice and it send a new link if user present' do
expect { subject }.to have_enqueued_mail(UserMailer, :invite_tiers)
expect(response).to redirect_to(root_path(user)) expect(response).to redirect_to(root_path(user))
expect(flash[:alert]).to eq('le lien est trop vieux') expect(flash[:alert]).to eq("Ce lien n'est plus valable, un nouveau lien a été envoyé à l'adresse #{user.email}")
end end
end end
end end