class Authie::ControllerDelegate

Public Class Methods

new(controller) click to toggle source
# File lib/authie/controller_delegate.rb, line 8
def initialize(controller)
  @controller = controller
end

Public Instance Methods

auth_session() click to toggle source

Return the currently logged in user session

# File lib/authie/controller_delegate.rb, line 71
def auth_session
  @auth_session ||= Authie::Session.get_session(@controller)
  @auth_session == :none ? nil : @auth_session
end
create_auth_session(user) click to toggle source

Create a new session for the given user

# File lib/authie/controller_delegate.rb, line 45
def create_auth_session(user)
  if user
    @auth_session = Authie::Session.start(@controller, user: user)
  else
    auth_session.invalidate! if logged_in?
    @auth_session = :none
  end
end
current_user() click to toggle source

Return the currently logged in user object

# File lib/authie/controller_delegate.rb, line 35
def current_user
  logged_in? ? auth_session.user : nil
end
current_user=(user) click to toggle source

Set the currently logged in user

# File lib/authie/controller_delegate.rb, line 40
def current_user=(user)
  create_auth_session(user)
end
invalidate_auth_session() click to toggle source

Invalidate an existing auth session

# File lib/authie/controller_delegate.rb, line 55
def invalidate_auth_session
  if logged_in?
    auth_session.invalidate!
    @auth_session = :none
    true
  else
    false
  end
end
logged_in?() click to toggle source

Is anyone currently logged in?

# File lib/authie/controller_delegate.rb, line 66
def logged_in?
  auth_session.is_a?(Session)
end
set_browser_id() click to toggle source

Set a random browser ID for this browser.

# File lib/authie/controller_delegate.rb, line 13
def set_browser_id
  until cookies[Authie.config.browser_id_cookie_name]
    proposed_browser_id = SecureRandom.uuid
    next if Authie::Session.where(browser_id: proposed_browser_id).exists?

    cookies[Authie.config.browser_id_cookie_name] = {
      value: proposed_browser_id,
      expires: 5.years.from_now,
      httponly: true,
      secure: @controller.request.ssl?
    }
    # Dispatch an event when the browser ID is set.
    Authie.config.events.dispatch(:set_browser_id, proposed_browser_id)
  end
end
touch_auth_session() click to toggle source

Touch the auth session on each request if logged in

# File lib/authie/controller_delegate.rb, line 30
def touch_auth_session
  auth_session.touch! if logged_in?
end

Private Instance Methods

cookies() click to toggle source

Return cookies for the controller

# File lib/authie/controller_delegate.rb, line 79
def cookies
  @controller.send(:cookies)
end