Merge pull request #1908 from betagouv/fix-1907

Fix 1907
This commit is contained in:
Mathieu Magnin 2018-05-04 14:29:58 +02:00 committed by GitHub
commit 9f8083f69c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 19 additions and 8 deletions

View file

@ -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

View file

@ -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")

View file

@ -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

View file

@ -8,7 +8,7 @@ Votre compte a été créé mais reste inactif, il arrivera à expiration le #{@
%br
%br
Afin dactiver 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 daccompagnement.

View file

@ -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