module Devise::Controllers::SignInOut
def sign_in(resource_or_scope, *args)
sign_in @user, store: false # sign_in(resource, options)
sign_in @user, event: :authentication # sign_in(resource, options)
sign_in @user # sign_in(resource)
sign_in :user, @user # sign_in(scope, resource)
Examples:
in the sessions controller: https://github.com/heartcombo/devise/blob/main/app/controllers/devise/sessions_controller.rb#L7
set `env["devise.skip_timeout"] = true` in the request to use this method, like we do
If you are using a custom warden strategy and the timeoutable module, you have to
to the set_user method in warden.
users in after sign up. All options given to sign_in is passed forward
Sign in a user that already was authenticated. This helper is useful for logging
def sign_in(resource_or_scope, *args) options = args.extract_options! scope = Devise::Mapping.find_scope!(resource_or_scope) resource = args.last || resource_or_scope expire_data_after_sign_in! if options[:bypass] ActiveSupport::Deprecation.warn(<<-DEPRECATION.strip_heredoc, caller) [Devise] bypass option is deprecated and it will be removed in future version of Devise. Please use bypass_sign_in method instead. Example: bypass_sign_in(user) DEPRECATION warden.session_serializer.store(resource, scope) elsif warden.user(scope) == resource && !options.delete(:force) # Do nothing. User already signed in and we are not forcing it. true else warden.set_user(resource, options.merge!(scope: scope)) end end