mirror of
https://github.com/discourse/discourse.git
synced 2025-05-31 12:27:16 +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
|
||||
result.email = data[:email]
|
||||
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
|
||||
# Potentially use *any* of the emails from GitHub to find a match or
|
||||
# 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)
|
||||
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
|
||||
hash = {
|
||||
extra: {
|
||||
|
Reference in New Issue
Block a user