mirror of
https://github.com/discourse/discourse.git
synced 2025-01-31 02:49:29 +08:00
FIX: When creating a SSO user via sync, do not user the IP address.
This commit is contained in:
parent
40bae7bac0
commit
005b8bf7c3
|
@ -273,7 +273,7 @@ class Admin::UsersController < Admin::AdminController
|
||||||
return render nothing: true, status: 404 unless SiteSetting.enable_sso
|
return render nothing: true, status: 404 unless SiteSetting.enable_sso
|
||||||
|
|
||||||
sso = DiscourseSingleSignOn.parse("sso=#{params[:sso]}&sig=#{params[:sig]}")
|
sso = DiscourseSingleSignOn.parse("sso=#{params[:sso]}&sig=#{params[:sig]}")
|
||||||
user = sso.lookup_or_create_user(request.remote_ip)
|
user = sso.lookup_or_create_user
|
||||||
|
|
||||||
render_serialized(user, AdminDetailedUserSerializer, root: false)
|
render_serialized(user, AdminDetailedUserSerializer, root: false)
|
||||||
end
|
end
|
||||||
|
|
|
@ -42,7 +42,7 @@ class DiscourseSingleSignOn < SingleSignOn
|
||||||
"SSO_NONCE_#{nonce}"
|
"SSO_NONCE_#{nonce}"
|
||||||
end
|
end
|
||||||
|
|
||||||
def lookup_or_create_user(ip_address)
|
def lookup_or_create_user(ip_address=nil)
|
||||||
sso_record = SingleSignOnRecord.find_by(external_id: external_id)
|
sso_record = SingleSignOnRecord.find_by(external_id: external_id)
|
||||||
|
|
||||||
if sso_record && user = sso_record.user
|
if sso_record && user = sso_record.user
|
||||||
|
|
|
@ -499,7 +499,7 @@ describe Admin::UsersController do
|
||||||
sso.external_id = "1"
|
sso.external_id = "1"
|
||||||
|
|
||||||
user = DiscourseSingleSignOn.parse(sso.payload)
|
user = DiscourseSingleSignOn.parse(sso.payload)
|
||||||
.lookup_or_create_user('127.0.0.1')
|
.lookup_or_create_user
|
||||||
|
|
||||||
|
|
||||||
sso.name = "Bill"
|
sso.name = "Bill"
|
||||||
|
@ -514,6 +514,20 @@ describe Admin::UsersController do
|
||||||
expect(user.name).to eq("Bill")
|
expect(user.name).to eq("Bill")
|
||||||
expect(user.username).to eq("Hokli")
|
expect(user.username).to eq("Hokli")
|
||||||
|
|
||||||
|
# It can also create new users
|
||||||
|
sso = SingleSignOn.new
|
||||||
|
sso.sso_secret = "sso secret"
|
||||||
|
sso.name = "Dr. Claw"
|
||||||
|
sso.username = "dr_claw"
|
||||||
|
sso.email = "dr@claw.com"
|
||||||
|
sso.external_id = "2"
|
||||||
|
xhr :post, :sync_sso, Rack::Utils.parse_query(sso.payload)
|
||||||
|
expect(response).to be_success
|
||||||
|
|
||||||
|
user = User.where(email: 'dr@claw.com').first
|
||||||
|
expect(user).to be_present
|
||||||
|
expect(user.ip_address).to be_blank
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user