mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-12-18 11:32:24 -05:00
FIX: mark user as approved if an invite is already present
This commit is contained in:
parent
0a9e2f54ff
commit
03665e8466
3 changed files with 37 additions and 3 deletions
|
@ -60,7 +60,7 @@ class EmailToken < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
# redeem invite, if available
|
# redeem invite, if available
|
||||||
Invite.redeem_from_email(user.email)
|
return User.find_by(email: Email.downcase(user.email)) if Invite.redeem_from_email(user.email).present?
|
||||||
user
|
user
|
||||||
rescue ActiveRecord::RecordInvalid
|
rescue ActiveRecord::RecordInvalid
|
||||||
# If the user's email is already taken, just return nil (failure)
|
# If the user's email is already taken, just return nil (failure)
|
||||||
|
|
|
@ -23,7 +23,8 @@ class UserActivator
|
||||||
end
|
end
|
||||||
|
|
||||||
def factory
|
def factory
|
||||||
if SiteSetting.must_approve_users?
|
invite = Invite.find_by(email: Email.downcase(@user.email))
|
||||||
|
if SiteSetting.must_approve_users? && !(invite.present? && !invite.expired? && !invite.destroyed? && invite.link_valid?)
|
||||||
ApprovalActivator
|
ApprovalActivator
|
||||||
elsif !user.active?
|
elsif !user.active?
|
||||||
EmailActivator
|
EmailActivator
|
||||||
|
|
|
@ -130,7 +130,40 @@ describe EmailToken do
|
||||||
expect(EmailToken.confirm(email_token.token)).to be_blank
|
expect(EmailToken.confirm(email_token.token)).to be_blank
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'confirms the token and redeems invite' do
|
||||||
|
before do
|
||||||
|
SiteSetting.must_approve_users = true
|
||||||
|
end
|
||||||
|
|
||||||
|
let(:invite) { Fabricate(:invite, email: 'test@example.com', user_id: nil) }
|
||||||
|
let(:invited_user) { Fabricate(:user, active: false, email: invite.email) }
|
||||||
|
let(:user_email_token) { invited_user.email_tokens.first }
|
||||||
|
let!(:confirmed_invited_user) { EmailToken.confirm(user_email_token.token) }
|
||||||
|
|
||||||
|
it "returns the correct user" do
|
||||||
|
expect(confirmed_invited_user).to eq invited_user
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'marks the user as active' do
|
||||||
|
confirmed_invited_user.reload
|
||||||
|
expect(confirmed_invited_user).to be_active
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'marks the token as confirmed' do
|
||||||
|
user_email_token.reload
|
||||||
|
expect(user_email_token).to be_confirmed
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'redeems invite' do
|
||||||
|
invite.reload
|
||||||
|
expect(invite).to be_redeemed
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'marks the user as approved' do
|
||||||
|
expect(confirmed_invited_user).to be_approved
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue