Fix SSO authentication not working due to missing agreement boolean (#9915)
Fix #9906
This commit is contained in:
		
							parent
							
								
									cde2fe25b9
								
							
						
					
					
						commit
						e259f244c6
					
				
					 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",
 | 
					        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,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue