Fix SSO authentication not working due to missing agreement boolean (#9915)

Fix #9906
pull/9921/head
Eugen Rochko 2019-01-25 12:36:54 +01:00 committed by GitHub
parent e1ec3a9f09
commit 9519d55332
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 0 deletions

View File

@ -63,6 +63,7 @@ module Omniauthable
{ {
email: email || "#{TEMP_EMAIL_PREFIX}-#{auth.uid}-#{auth.provider}.com", email: email || "#{TEMP_EMAIL_PREFIX}-#{auth.uid}-#{auth.provider}.com",
password: Devise.friendly_token[0, 20], password: Devise.friendly_token[0, 20],
agreement: true,
account_attributes: { account_attributes: {
username: ensure_unique_username(auth.uid), username: ensure_unique_username(auth.uid),
display_name: display_name, display_name: display_name,

View File

@ -295,6 +295,7 @@ class User < ApplicationRecord
def self.pam_get_user(attributes = {}) def self.pam_get_user(attributes = {})
return nil unless attributes[:email] return nil unless attributes[:email]
resource = resource =
if Devise.check_at_sign && !attributes[:email].index('@') if Devise.check_at_sign && !attributes[:email].index('@')
joins(:account).find_by(accounts: { username: attributes[:email] }) joins(:account).find_by(accounts: { username: attributes[:email] })
@ -304,6 +305,7 @@ class User < ApplicationRecord
if resource.blank? if resource.blank?
resource = new(email: attributes[:email], agreement: true) resource = new(email: attributes[:email], agreement: true)
if Devise.check_at_sign && !resource[:email].index('@') if Devise.check_at_sign && !resource[:email].index('@')
resource[:email] = Rpam2.getenv(resource.find_pam_service, attributes[:email], attributes[:password], 'email', false) resource[:email] = Rpam2.getenv(resource.find_pam_service, attributes[:email], attributes[:password], 'email', false)
resource[:email] = "#{attributes[:email]}@#{resource.find_pam_suffix}" unless resource[:email] resource[:email] = "#{attributes[:email]}@#{resource.find_pam_suffix}" unless resource[:email]