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)
flash[:notice] = 'Votre email a bien été vérifié'
else
flash[:alert] = "le lien est trop vieux"
# to do relancer un lien if user
if user.present?
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
redirect_to root_path(user)
end

View file

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

View file

@ -3,16 +3,25 @@
%p
Bonjour,
%p
Un dossier sur la démarche : #{@dossier.procedure.libelle} a été démarré en votre nom par #{@dossier.user.email}.
%p
- 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
Pour continuer à recevoir les mails concernant votre dossier, vous devez confirmer votre adresse email en cliquant sur ce lien :
%p
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"

View file

@ -61,7 +61,7 @@ describe Users::ActivateController, type: :controller do
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
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
context 'when the confirmation token is too old or not valid' do
subject { get :confirm_email, params: { token: user.confirmation_token } }
before do
user.update!(confirmation_sent_at: 3.days.ago)
get :confirm_email, params: { token: user.confirmation_token }
user.reload
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(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