From 6353c10955c73f36293c16e25f07ef83cf0f81db Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Tue, 23 Jan 2024 17:21:30 +0100 Subject: [PATCH] add APIToken expiration mailer --- app/mailers/api_token_mailer.rb | 18 +++++++++++++++ .../api_token_mailer/expiration.html.haml | 17 ++++++++++++++ .../previews/api_token_mailer_preview.rb | 23 +++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 app/mailers/api_token_mailer.rb create mode 100644 app/views/api_token_mailer/expiration.html.haml create mode 100644 spec/mailers/previews/api_token_mailer_preview.rb 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