Fix SSO authentication not working due to missing agreement boolean (#9915)
Fix #9906
This commit is contained in:
		
							parent
							
								
									e1ec3a9f09
								
							
						
					
					
						commit
						9519d55332
					
				
					 2 changed files with 3 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -63,6 +63,7 @@ module Omniauthable
 | 
			
		|||
      {
 | 
			
		||||
        email: email || "#{TEMP_EMAIL_PREFIX}-#{auth.uid}-#{auth.provider}.com",
 | 
			
		||||
        password: Devise.friendly_token[0, 20],
 | 
			
		||||
        agreement: true,
 | 
			
		||||
        account_attributes: {
 | 
			
		||||
          username: ensure_unique_username(auth.uid),
 | 
			
		||||
          display_name: display_name,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -295,6 +295,7 @@ class User < ApplicationRecord
 | 
			
		|||
 | 
			
		||||
  def self.pam_get_user(attributes = {})
 | 
			
		||||
    return nil unless attributes[:email]
 | 
			
		||||
 | 
			
		||||
    resource =
 | 
			
		||||
      if Devise.check_at_sign && !attributes[:email].index('@')
 | 
			
		||||
        joins(:account).find_by(accounts: { username: attributes[:email] })
 | 
			
		||||
| 
						 | 
				
			
			@ -304,6 +305,7 @@ class User < ApplicationRecord
 | 
			
		|||
 | 
			
		||||
    if resource.blank?
 | 
			
		||||
      resource = new(email: attributes[:email], agreement: true)
 | 
			
		||||
 | 
			
		||||
      if Devise.check_at_sign && !resource[:email].index('@')
 | 
			
		||||
        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]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue