make email confirmation more generic

This commit is contained in:
Lisa Durand 2024-08-21 16:23:56 +02:00
parent ea354d46c4
commit 3cf3dc4623
No known key found for this signature in database
GPG key ID: 0DF91F2CA1E8B816
5 changed files with 40 additions and 2 deletions

View file

@ -40,7 +40,7 @@ class Users::ActivateController < ApplicationController
else
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)
user.resend_confirmation_email!
else
flash[:alert] = "Un problème est survenu, vous pouvez nous contacter sur #{Current.contact_email}"
end

View file

@ -63,6 +63,20 @@ class UserMailer < ApplicationMailer
reply_to: Current.contact_email)
end
def resend_confirmation_email(user, token)
@token = token
@user = user
subject = "Vérification de votre mail"
configure_defaults_for_user(user)
bypass_unverified_mail_protection!
mail(to: user.email,
subject: subject,
reply_to: Current.contact_email)
end
def invite_gestionnaire(user, reset_password_token, groupe_gestionnaire)
@reset_password_token = reset_password_token
@user = user

View file

@ -95,6 +95,12 @@ class User < ApplicationRecord
AvisMailer.avis_invitation_and_confirm_email(self, token, avis).deliver_later
end
def resend_confirmation_email!
token = SecureRandom.hex(10)
self.update!(confirmation_token: token, confirmation_sent_at: Time.zone.now)
UserMailer.resend_confirmation_email(self, token).deliver_later
end
def invite_gestionnaire!(groupe_gestionnaire)
UserMailer.invite_gestionnaire(self, set_reset_password_token, groupe_gestionnaire).deliver_later
end

View file

@ -24,7 +24,7 @@
- if @avis.expert.user.active?
%p
= round_button("Confirmer le mail pour donner votre avis", @url, :primary)
= round_button('Confirmez votre adresse email pour donner votre avis', users_confirm_email_url(token: @token), :primary)
- else
%p
= round_button("Inscrivez-vous pour donner votre avis", @url, :primary)

View file

@ -0,0 +1,18 @@
- content_for(:title, "Vérification de votre mail sur #{Current.application_name}")
%p
Bonjour,
%p
Votre précédente confirmation de mail n'a pas fonctionné, vous pouvez essayer de nouveau en cliquant sur ce bouton :
= round_button 'Je confirme', users_confirm_email_url(token: @token), :primary
%p
Vous pouvez aussi utiliser ce lien :
= link_to(users_confirm_email_url(token: @token), users_confirm_email_url(token: @token))
%p
Nous restons à votre disposition si vous avez besoin daccompagnement à l'adresse #{link_to CONTACT_EMAIL, "mailto:#{CONTACT_EMAIL}"}.
= render partial: "layouts/mailers/signature"