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