From 874c18cbc1c4768412cfe9ca08f416295f112c8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Tue, 21 Jun 2016 11:28:58 +0200 Subject: [PATCH] FIX: unstage users when using SSO --- app/models/discourse_single_sign_on.rb | 3 +++ spec/models/discourse_single_sign_on_spec.rb | 17 +++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/models/discourse_single_sign_on.rb b/app/models/discourse_single_sign_on.rb index 19b3b77f50b..2eef92afed3 100644 --- a/app/models/discourse_single_sign_on.rb +++ b/app/models/discourse_single_sign_on.rb @@ -56,6 +56,9 @@ class DiscourseSingleSignOn < SingleSignOn sso_record = user.single_sign_on_record end + # ensure it's not staged anymore + user.staged = false + # if the user isn't new or it's attached to the SSO record we might be overriding username or email unless user.new_record? change_external_attributes_and_override(sso_record, user) diff --git a/spec/models/discourse_single_sign_on_spec.rb b/spec/models/discourse_single_sign_on_spec.rb index e9e41df1458..e70b7ce4ecb 100644 --- a/spec/models/discourse_single_sign_on_spec.rb +++ b/spec/models/discourse_single_sign_on_spec.rb @@ -64,6 +64,21 @@ describe DiscourseSingleSignOn do expect(user).to_not be_nil end + it "unstaged users" do + email = "staged@user.com" + Fabricate(:user, staged: true, email: email) + + sso = DiscourseSingleSignOn.new + sso.username = "staged" + sso.name = "Staged User" + sso.email = email + sso.external_id = "B" + user = sso.lookup_or_create_user(ip_address) + + expect(user).to_not be_nil + expect(user.staged).to be(false) + end + it "can set admin and moderator" do admin_group = Group[:admins] mod_group = Group[:moderators] @@ -83,7 +98,6 @@ describe DiscourseSingleSignOn do expect(mod_group.users.where('users.id = ?', user.id).exists?).to eq(true) expect(staff_group.users.where('users.id = ?', user.id).exists?).to eq(true) expect(admin_group.users.where('users.id = ?', user.id).exists?).to eq(true) - end it "can override name / email / username" do @@ -156,7 +170,6 @@ describe DiscourseSingleSignOn do end it "generates a correct sso url" do - url, payload = DiscourseSingleSignOn.generate_url.split("?") expect(url).to eq @sso_url