mirror of
https://github.com/discourse/discourse.git
synced 2025-05-30 07:11:34 +08:00
FIX: update GitHub screen_name on login via GitHub
This commit is contained in:
@ -78,6 +78,12 @@ class Auth::GithubAuthenticator < Auth::Authenticator
|
|||||||
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?
|
||||||
|
|
||||||
|
# update GitHub screen_name
|
||||||
|
if user_info.screen_name != screen_name
|
||||||
|
user_info.screen_name = screen_name
|
||||||
|
user_info.save!
|
||||||
|
end
|
||||||
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
|
||||||
# register a new user, with preference given to the primary email.
|
# register a new user, with preference given to the primary email.
|
||||||
|
@ -60,6 +60,17 @@ describe Auth::GithubAuthenticator do
|
|||||||
expect(result.email_valid).to eq(true)
|
expect(result.email_valid).to eq(true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'can authenticate and update GitHub screen_name for existing user' do
|
||||||
|
GithubUserInfo.create!(user_id: user.id, github_user_id: 100, screen_name: "boris")
|
||||||
|
|
||||||
|
result = authenticator.after_authenticate(data)
|
||||||
|
|
||||||
|
expect(result.user.id).to eq(user.id)
|
||||||
|
expect(result.email).to eq(user.email)
|
||||||
|
expect(result.email_valid).to eq(true)
|
||||||
|
expect(GithubUserInfo.where(user_id: user.id).pluck(:screen_name)).to eq([user.username])
|
||||||
|
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
|
||||||
hash = {
|
hash = {
|
||||||
extra: {
|
extra: {
|
||||||
|
Reference in New Issue
Block a user