diff --git a/app/mailers/api_token_mailer.rb b/app/mailers/api_token_mailer.rb new file mode 100644 index 000000000..5f0c86d60 --- /dev/null +++ b/app/mailers/api_token_mailer.rb @@ -0,0 +1,18 @@ +# Preview all emails at http://localhost:3000/rails/mailers/api_token_mailer +class APITokenMailer < ApplicationMailer + helper MailerHelper + + layout 'mailers/layout' + + def expiration(api_token) + @api_token = api_token + user = api_token.administrateur.user + subject = "Votre jeton d'accès à la plateforme #{APPLICATION_NAME} expire le #{l(@api_token.expires_at, format: :long)}" + + mail(to: user.email, subject:) + end + + def self.critical_email?(action_name) + false + end +end diff --git a/app/views/api_token_mailer/expiration.html.haml b/app/views/api_token_mailer/expiration.html.haml new file mode 100644 index 000000000..e645c4966 --- /dev/null +++ b/app/views/api_token_mailer/expiration.html.haml @@ -0,0 +1,17 @@ +- content_for(:title, "Expiration de votre jeton « #{@api_token.name} »") + +%p + Bonjour, + +%p Vous recevez ce courriel car vous êtes le propriétaire du jeton « #{@api_token.name} ». + +%p + %strong Ce jeton expirera le #{l(@api_token.expires_at, format: :long)}. + %br + L'accès à l'API de #{APPLICATION_NAME} sera alors bloqué pour ce jeton. + +%p + Pour le renouveler, rendez-vous sur votre page de profil, dans la section « Jetons d’identification de l’API » : + = link_to profil_url, profil_url + += render partial: "layouts/mailers/signature" diff --git a/spec/mailers/previews/api_token_mailer_preview.rb b/spec/mailers/previews/api_token_mailer_preview.rb new file mode 100644 index 000000000..8a53f6051 --- /dev/null +++ b/spec/mailers/previews/api_token_mailer_preview.rb @@ -0,0 +1,23 @@ +class APITokenMailerPreview < ActionMailer::Preview + def expiration + APITokenMailer.expiration(api_token) + end + + private + + def api_token + APIToken.new( + administrateur: administrateur, + expires_at: 1.week.from_now, + name: 'My API token' + ) + end + + def administrateur + Administrateur.new(user:) + end + + def user + User.new(email: 'admin@a.com') + end +end