FIX: Extra comma resulted in Github auth email result being an array.

https://meta.discourse.org/t/github-2fa-flow-broken/88674
This commit is contained in:
Guo Xiang Tan
2018-05-30 11:54:12 +08:00
parent 00b6f5f21c
commit 543b7cddfb
2 changed files with 12 additions and 5 deletions

View File

@ -41,7 +41,7 @@ class Auth::GithubAuthenticator < Auth::Authenticator
# If there's existing user info with the given GitHub ID, that's all we # If there's existing user info with the given GitHub ID, that's all we
# need to know. # need to know.
user = user_info.user user = user_info.user
result.email = data[:email], result.email = data[:email]
result.email_valid = data[:email].present? result.email_valid = data[:email].present?
else else
# Potentially use *any* of the emails from GitHub to find a match or # Potentially use *any* of the emails from GitHub to find a match or

View File

@ -24,9 +24,8 @@ describe Auth::GithubAuthenticator do
let(:user) { Fabricate(:user) } let(:user) { Fabricate(:user) }
context 'after_authenticate' do context 'after_authenticate' do
let(:data) do
it 'can authenticate and create a user record for already existing users' do {
hash = {
extra: { extra: {
all_emails: [{ all_emails: [{
email: user.email, email: user.email,
@ -41,14 +40,22 @@ describe Auth::GithubAuthenticator do
}, },
uid: "100" uid: "100"
} }
end
result = authenticator.after_authenticate(hash) it 'can authenticate and create a user record for already existing users' do
result = authenticator.after_authenticate(data)
expect(result.user.id).to eq(user.id) expect(result.user.id).to eq(user.id)
expect(result.username).to eq(user.username) expect(result.username).to eq(user.username)
expect(result.name).to eq(user.name) expect(result.name).to eq(user.name)
expect(result.email).to eq(user.email) expect(result.email).to eq(user.email)
expect(result.email_valid).to eq(true) expect(result.email_valid).to eq(true)
# Authenticates again when user has Github user info
result = authenticator.after_authenticate(data)
expect(result.email).to eq(user.email)
expect(result.email_valid).to eq(true)
end end
it 'should use primary email for new user creation over other available emails' do it 'should use primary email for new user creation over other available emails' do