Merge pull request #9887 from mfo/US/fix-fci-missing-device-callback
Correctif: ETQ usager invité, lorsque je crée mon compte via FC, je ne retrouve pas mes invitations
This commit is contained in:
commit
9df978f6fa
3 changed files with 32 additions and 0 deletions
|
@ -12,6 +12,7 @@ class FranceConnectInformation < ApplicationRecord
|
|||
password: Devise.friendly_token[0, 20],
|
||||
confirmed_at: Time.zone.now
|
||||
)
|
||||
user.after_confirmation
|
||||
rescue ActiveRecord::RecordNotUnique
|
||||
# ignore this exception because we check before is user is nil.
|
||||
# exception can be raised in race conditions, when FranceConnect calls callback 2 times.
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
namespace :after_party do
|
||||
desc 'Deployment task: backfill_invites_missing_existing_user'
|
||||
task backfill_invites_missing_existing_user: :environment do
|
||||
puts "Running deploy task 'backfill_invites_missing_existing_user'"
|
||||
|
||||
# Put your task implementation HERE.
|
||||
Invite.where.missing(:user).in_batches do |invites_with_missing_user|
|
||||
linkable_users_and_invite = User.where(email: invites_with_missing_user.pluck(:email))
|
||||
linkable_users_and_invite.each do |linkable_user_and_invite|
|
||||
begin
|
||||
linkable_user_and_invite.after_confirmation # calls link_invites!
|
||||
rescue err
|
||||
Sentry.capture_exception(err)
|
||||
end
|
||||
end
|
||||
end
|
||||
# Update task as completed. If you remove the line below, the task will
|
||||
# run with every deploy (or every time you call after_party:run).
|
||||
AfterParty::TaskRecord
|
||||
.create version: AfterParty::TaskRecorder.new(__FILE__).timestamp
|
||||
end
|
||||
end
|
|
@ -96,6 +96,15 @@ describe FranceConnect::ParticulierController, type: :controller do
|
|||
expect(controller.current_user).to eq(user)
|
||||
expect(response).to redirect_to(root_path)
|
||||
end
|
||||
|
||||
context 'when invites are pending' do
|
||||
let!(:invite) { create(:invite, email: email, user: nil) }
|
||||
it 'links pending invites' do
|
||||
expect(invite.reload.user).to eq(nil)
|
||||
subject
|
||||
expect(invite.reload.user).to eq(User.last)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'and an user with the same email exists' do
|
||||
|
|
Loading…
Reference in a new issue