From ee67e7b154f94963e9c06cb018cf39c4774bbbd1 Mon Sep 17 00:00:00 2001 From: Frederic Merizen Date: Wed, 11 Apr 2018 17:14:47 +0200 Subject: [PATCH] Always create a corresponding User account for Admin accounts --- app/models/administration.rb | 10 ++++++++-- spec/models/administration_spec.rb | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/models/administration.rb b/app/models/administration.rb index d053a2c0a..d0da076e5 100644 --- a/app/models/administration.rb +++ b/app/models/administration.rb @@ -8,15 +8,21 @@ class Administration < ApplicationRecord end def invite_admin(email) + password = SecureRandom.hex administrateur = Administrateur.new({ email: email, - active: false + active: false, + password: password, + password_confirmation: password }) - administrateur.password = administrateur.password_confirmation = SecureRandom.hex if administrateur.save AdministrationMailer.new_admin_email(administrateur, self).deliver_now! administrateur.invite! + User.create({ + email: email, + password: password + }) end administrateur diff --git a/spec/models/administration_spec.rb b/spec/models/administration_spec.rb index 9f8e0463e..91444ad3b 100644 --- a/spec/models/administration_spec.rb +++ b/spec/models/administration_spec.rb @@ -13,5 +13,19 @@ describe Administration, type: :model do } it { expect(administration.invite_admin(nil).errors).not_to be_empty } it { expect(administration.invite_admin('toto').errors).not_to be_empty } + + it 'creates a corresponding user account for the email' do + subject + user = User.find_by(email: valid_email) + expect(user).to be_present + end + + context 'when there already is a user account with the same email' do + before { create(:user, email: valid_email) } + it 'still creates an admin account' do + expect(subject.errors).to be_empty + expect(subject).to be_persisted + end + end end end