mirror of https://github.com/docusealco/docuseal
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							43 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							43 lines
						
					
					
						
							1.1 KiB
						
					
					
				| # frozen_string_literal: true
 | |
| 
 | |
| class SessionsController < Devise::SessionsController
 | |
|   before_action :configure_permitted_parameters
 | |
| 
 | |
|   def create
 | |
|     email = sign_in_params[:email].to_s.downcase
 | |
| 
 | |
|     if Docuseal.multitenant? && !User.exists?(email:)
 | |
|       return redirect_to new_registration_path(sign_up: true, user: sign_in_params.slice(:email)),
 | |
|                          notice: 'Create a new account'
 | |
|     end
 | |
| 
 | |
|     if User.exists?(email:, otp_required_for_login: true) && sign_in_params[:otp_attempt].blank?
 | |
|       return render :otp, locals: { resource: User.new(sign_in_params) }, status: :unprocessable_entity
 | |
|     end
 | |
| 
 | |
|     super
 | |
|   end
 | |
| 
 | |
|   private
 | |
| 
 | |
|   def after_sign_in_path_for(...)
 | |
|     if params[:redir].present?
 | |
|       return console_redirect_index_path(redir: params[:redir]) if params[:redir].starts_with?(Docuseal::CONSOLE_URL)
 | |
| 
 | |
|       return params[:redir]
 | |
|     end
 | |
| 
 | |
|     super
 | |
|   end
 | |
| 
 | |
|   def configure_permitted_parameters
 | |
|     devise_parameter_sanitizer.permit(:sign_in, keys: [:otp_attempt])
 | |
|   end
 | |
| 
 | |
|   def set_flash_message(key, kind, options = {})
 | |
|     return if key == :alert && kind == 'already_authenticated'
 | |
| 
 | |
|     super
 | |
|   end
 | |
| end
 |