Module: Wristband::ApplicationExtensions::InstanceMethods

Defined in:
lib/wristband/application_extensions.rb

Instance Method Summary collapse

Instance Method Details

#current_userObject

Returns the current user in session. Use this on your views and controllers.



41
42
43
# File 'lib/wristband/application_extensions.rb', line 41

def current_user
  @current_user ||= (session[:user_id] and ::User.find_by_id(session[:user_id]))
end

#current_user=(user) ⇒ Object

Sets the current user in session



46
47
48
49
# File 'lib/wristband/application_extensions.rb', line 46

def current_user=(user)
  @current_user = user
  session[:user_id] = (user and user.id)
end

#logged_in?Boolean

Returns true if a user is logged in

Returns:

  • (Boolean)


36
37
38
# File 'lib/wristband/application_extensions.rb', line 36

def logged_in?
  !!current_user
end

#login(session_user, cookie_expires_at = 2.weeks.from_now.utc) ⇒ Object



14
15
16
# File 'lib/wristband/application_extensions.rb', line 14

def (session_user, cookie_expires_at = 2.weeks.from_now.utc)
  (session_user.user, session_user.remember_me, cookie_expires_at)
end

#login_as_user(user, remember_me = false, cookie_expires_at = 2.weeks.from_now.utc) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/wristband/application_extensions.rb', line 18

def (user, remember_me=false, cookie_expires_at = 2.weeks.from_now.utc)
  self.current_user = user
  if remember_me
    token = Support.encrypt_with_salt(user.id.to_s, Wristband::Support.random_salt, ::User.wristband[:encryption_type])
    cookies[:login_token] = { :value => token, :expires => cookie_expires_at}
    user.update_attribute(:session_token, token)
  end
end

Logs a user automatically from his cookie

You can use this function as a before filter on your controllers.



54
55
56
57
# File 'lib/wristband/application_extensions.rb', line 54

def 
  return if (logged_in? or !cookies[:login_token])
  self.current_user = ::User.where(:session_token => cookies[:login_token]).first
end

#login_requiredObject

You can use this function as a before filter on your controllers that require autentication.

If the user is not logged in respond_not_logged_in will be called.



62
63
64
# File 'lib/wristband/application_extensions.rb', line 62

def 
  logged_in?
end

#logoutObject

Logs a user out and deletes the session_token.



28
29
30
31
32
33
# File 'lib/wristband/application_extensions.rb', line 28

def logout
  current_user.update_attribute(:session_token, nil) if current_user
  self.current_user = nil
  cookies.delete(:login_token)    
  reset_session
end