FIX: activate user even if email token is already confirmed

This commit is contained in:
Arpit Jalan 2018-02-14 20:22:05 +05:30
parent 8ae2c4555a
commit f07b1a5c05
2 changed files with 19 additions and 1 deletions

View File

@ -743,7 +743,8 @@ class User < ActiveRecord::Base
def activate
if email_token = self.email_tokens.active.where(email: self.email).first
EmailToken.confirm(email_token.token)
user = EmailToken.confirm(email_token.token)
self.update!(active: true) if user.nil?
else
self.update!(active: true)
end

View File

@ -1619,4 +1619,21 @@ describe User do
end
end
describe ".activate" do
let!(:inactive) { Fabricate(:user, active: false) }
it 'confirms email token and activates user' do
inactive.activate
inactive.reload
expect(inactive.email_confirmed?).to eq(true)
expect(inactive.active).to eq(true)
end
it 'activates user even if email token is already confirmed' do
token = inactive.email_tokens.find_by(email: inactive.email)
token.update_column(:confirmed, true)
inactive.activate
expect(inactive.active).to eq(true)
end
end
end