Implemented issue #1954 - Allow to automatically linking of existing user by initial login via third party authentication provider.
This commit is contained in:
parent
c02393399a
commit
c5e794d37b
4 changed files with 67 additions and 1 deletions
|
@ -53,6 +53,12 @@ class Authorization < ApplicationModel
|
||||||
|
|
||||||
def self.create_from_hash(hash, user = nil)
|
def self.create_from_hash(hash, user = nil)
|
||||||
|
|
||||||
|
if !user && Setting.get('auth_third_party_auto_link_at_inital_login')
|
||||||
|
if hash['info'] && hash['info']['email'].present?
|
||||||
|
user = User.find_by(email: hash['info']['email'].downcase)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if !user
|
if !user
|
||||||
user = User.create_from_hash!(hash)
|
user = User.create_from_hash!(hash)
|
||||||
end
|
end
|
||||||
|
|
|
@ -386,7 +386,7 @@ returns
|
||||||
next if local_url.blank?
|
next if local_url.blank?
|
||||||
url = local_url
|
url = local_url
|
||||||
end
|
end
|
||||||
create(
|
create!(
|
||||||
login: hash['info']['nickname'] || hash['uid'],
|
login: hash['info']['nickname'] || hash['uid'],
|
||||||
firstname: hash['info']['name'],
|
firstname: hash['info']['name'],
|
||||||
email: hash['info']['email'],
|
email: hash['info']['email'],
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
class SettingThirdPartyLinkAccountAtLogin < ActiveRecord::Migration[5.1]
|
||||||
|
def up
|
||||||
|
|
||||||
|
# return if it's a new setup
|
||||||
|
return if !Setting.find_by(name: 'system_init_done')
|
||||||
|
|
||||||
|
Setting.create_if_not_exists(
|
||||||
|
title: 'Automatic account link on initial logon',
|
||||||
|
name: 'auth_third_party_auto_link_at_inital_login',
|
||||||
|
area: 'Security::ThirdPartyAuthentication',
|
||||||
|
description: 'Enables the automatic linking of an existing account on initial login via a third party application. If this is disabled, an existing user must first log into Zammad and then link his "Third Party" account to his Zammad account via Profile -> Linked Accounts.',
|
||||||
|
options: {
|
||||||
|
form: [
|
||||||
|
{
|
||||||
|
display: '',
|
||||||
|
null: true,
|
||||||
|
name: 'auth_third_party_auto_link_at_inital_login',
|
||||||
|
tag: 'boolean',
|
||||||
|
options: {
|
||||||
|
true => 'yes',
|
||||||
|
false => 'no',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
preferences: {
|
||||||
|
permission: ['admin.security'],
|
||||||
|
prio: 10,
|
||||||
|
},
|
||||||
|
state: false,
|
||||||
|
frontend: false
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
|
@ -954,6 +954,32 @@ Setting.create_if_not_exists(
|
||||||
},
|
},
|
||||||
frontend: false
|
frontend: false
|
||||||
)
|
)
|
||||||
|
Setting.create_if_not_exists(
|
||||||
|
title: 'Automatic account link on initial logon',
|
||||||
|
name: 'auth_third_party_auto_link_at_inital_login',
|
||||||
|
area: 'Security::ThirdPartyAuthentication',
|
||||||
|
description: 'Enables the automatic linking of an existing account on initial login via a third party application. If this is disabled, an existing user must first log into Zammad and then link his "Third Party" account to his Zammad account via Profile -> Linked Accounts.',
|
||||||
|
options: {
|
||||||
|
form: [
|
||||||
|
{
|
||||||
|
display: '',
|
||||||
|
null: true,
|
||||||
|
name: 'auth_third_party_auto_link_at_inital_login',
|
||||||
|
tag: 'boolean',
|
||||||
|
options: {
|
||||||
|
true => 'yes',
|
||||||
|
false => 'no',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
preferences: {
|
||||||
|
permission: ['admin.security'],
|
||||||
|
prio: 10,
|
||||||
|
},
|
||||||
|
state: false,
|
||||||
|
frontend: false
|
||||||
|
)
|
||||||
Setting.create_if_not_exists(
|
Setting.create_if_not_exists(
|
||||||
title: 'Authentication via %s',
|
title: 'Authentication via %s',
|
||||||
name: 'auth_twitter',
|
name: 'auth_twitter',
|
||||||
|
|
Loading…
Reference in a new issue