Method: Sinatra::Security::Helpers#current_user

Defined in:
lib/sinatra/security/helpers.rb

#current_user(finder = lambda { |id| __USER__[id] }) ⇒ User

Returns the currently logged in user, identified through session. The default finder uses User, based on Ohm’s finder method.

Examples:


# ActiveRecord style finders
current_user(lambda { |id| User.find(id) })

# Also, if you change the settings to use a different user class,
# then that will be respected
# this assumes SuperUser is already defined
set :login_user_class, SuperUser 

# if you want to lazily evaluate the class you can wrap it in a proc
set :login_user_class, lambda { SuperUser }

# assuming session[:user] == 1
current_user == SuperUser[1]
# => true

Parameters:

  • finder (Proc) (defaults to: lambda { |id| __USER__[id] })

    (defaults to User) allows you to pass in a different finder method.

Returns:

  • (User)

    or alternatively, an instance of settings.login_user_class

See Also:



77
78
79
# File 'lib/sinatra/security/helpers.rb', line 77

def current_user(finder = lambda { |id| __USER__[id] })
  @current_user ||= finder.call(session[:user]) if session[:user]
end