Sha256: 0dea116c3cdad92d147880467a3cd570615e2ef1796705ffb60f941163660117

Contents?: true

Size: 1.52 KB

Versions: 1

Compression:

Stored size: 1.52 KB

Contents

# Redirects after authentication process to the most appropriate origin URL.
#
# Possible origins (URLs to redirect to) are tried in following order:
#   explicit_origin
#   request.env['omniauth.origin']
#   request.params['origin']
#   default_origin
#
def auth_redirect_to_origin( explicit_origin, default_origin = "/" )
  url = explicit_origin || request.env['omniauth.origin'] || request.params['origin'] || default_origin
  redirect url
end

def auth_login( user, opts = {} )
  session[:user_id] = user.id
  session[:remember_me] = opts[:remember_me].present?
  user.authenticated!( opts )
  auth_keepalive_session
end

def auth_logout
  session[:user_id] = nil
  session[:remember_me] = nil
  session.options[:expire_after] = nil
end

def auth_keepalive_session
  session.options[:expire_after] = 2592000 if session[:remember_me]
end

# Returns User object of the current authenticated user or +nil+.
#
def current_user
  auth_keepalive_session
  @current_user ||= ( session[:user_id] ? User.find( session[:user_id] ) : nil )
end

# Returns +true+ if user is authenticated, +false+ otherwise.
#
def current_user?
  !current_user.nil?
end

# Gets or sets auth state.
# 'auth state' is a one-time used Hash used to store auth system data between requests.
#
def auth_state( value = nil )
  if value
    @auth_state = value
    session[:auth_state] = value.to_json
    return @auth_state
  end
  unless @auth_state
    @auth_state = session[:auth_state].nil? ? {} : JSON.parse( session[:auth_state] )
    session[:auth_state] = nil
  end
  @auth_state
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aerogel-users-1.4.3 app/helpers/auth.rb