diff --git a/app/jobs/administrateurs/activate_before_expiration_job.rb b/app/jobs/administrateurs/activate_before_expiration_job.rb index d8fd8c27a..fbf609828 100644 --- a/app/jobs/administrateurs/activate_before_expiration_job.rb +++ b/app/jobs/administrateurs/activate_before_expiration_job.rb @@ -2,8 +2,8 @@ class Administrateurs::ActivateBeforeExpirationJob < ApplicationJob queue_as :cron def perform(*args) - Administrateur.inactive.where(created_at: 2.days.ago.all_day).each do |a| - AdministrateurMailer.activate_before_expiration(a).deliver_later + Administrateur.inactive.where(created_at: 3.days.ago.all_day).each do |a| + a.remind_invitation! end end end diff --git a/app/mailers/administrateur_mailer.rb b/app/mailers/administrateur_mailer.rb index 351206064..a46e46658 100644 --- a/app/mailers/administrateur_mailer.rb +++ b/app/mailers/administrateur_mailer.rb @@ -1,9 +1,10 @@ class AdministrateurMailer < ApplicationMailer layout 'mailers/layout' - def activate_before_expiration(administrateur) + def activate_before_expiration(administrateur, reset_password_token) @administrateur = administrateur - @expiration_date = administrateur.reset_password_sent_at + Devise.reset_password_within + @reset_password_token = reset_password_token + @expiration_date = @administrateur.reset_password_sent_at + Devise.reset_password_within mail(to: administrateur.email, subject: "demarches-simplifiees.fr - N'oubliez pas d'activer votre compte administrateur", reply_to: "contact@demarches-simplifiees.fr") diff --git a/app/models/administrateur.rb b/app/models/administrateur.rb index f1aec051c..22ad5db10 100644 --- a/app/models/administrateur.rb +++ b/app/models/administrateur.rb @@ -55,6 +55,16 @@ class Administrateur < ApplicationRecord reset_password_token end + def remind_invitation! + if active? + raise "Impossible d'envoyer un rappel d'invitation à un utilisateur déjà actif !" + end + + reset_password_token = set_reset_password_token + + AdministrateurMailer.activate_before_expiration(self, reset_password_token).deliver_later + end + def invitation_expired? !active && !reset_password_period_valid? end diff --git a/app/views/administrateur_mailer/activate_before_expiration.haml b/app/views/administrateur_mailer/activate_before_expiration.haml index 0fa678348..c44d0c9ff 100644 --- a/app/views/administrateur_mailer/activate_before_expiration.haml +++ b/app/views/administrateur_mailer/activate_before_expiration.haml @@ -8,7 +8,7 @@ Votre compte a été créé mais reste inactif, il arrivera à expiration le #{@ %br %br Afin d’activer votre compte, veuillez cliquer sur le lien ci-dessous : -= link_to(admin_activate_url(token: @administrateur.reset_password_token), admin_activate_url(token: @administrateur.reset_password_token)) += link_to(admin_activate_url(token: @reset_password_token), admin_activate_url(token: @reset_password_token)) %br %br Nous restons à votre disposition si vous avez besoin d’accompagnement. diff --git a/spec/jobs/administrateurs/activate_before_expiration_job_spec.rb b/spec/jobs/administrateurs/activate_before_expiration_job_spec.rb index 1a92e38bf..a3039ef39 100644 --- a/spec/jobs/administrateurs/activate_before_expiration_job_spec.rb +++ b/spec/jobs/administrateurs/activate_before_expiration_job_spec.rb @@ -32,13 +32,13 @@ RSpec.describe Administrateurs::ActivateBeforeExpirationJob, type: :job do it { expect(AdministrateurMailer).not_to have_received(:activate_before_expiration) } end - context "created 2 days ago" do + context "created 3 days ago" do before do - administrateur.update_columns(created_at: DateTime.new(2018, 03, 18, 20, 00)) + administrateur.update_columns(created_at: DateTime.new(2018, 03, 17, 20, 00)) subject end - it { expect(AdministrateurMailer).to have_received(:activate_before_expiration).with(administrateur) } + it { expect(AdministrateurMailer).to have_received(:activate_before_expiration).with(administrateur, kind_of(String)) } end end