Class: Authie::RackController

Inherits:
Object
  • Object
show all
Defined in:
lib/authie/rack_controller.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env) ⇒ RackController

Returns a new instance of RackController.



16
17
18
19
20
# File 'lib/authie/rack_controller.rb', line 16

def initialize(env)
  @env = env
  @request = ActionDispatch::Request.new(@env)
  set_browser_id
end

Instance Attribute Details

#requestObject (readonly)

Returns the value of attribute request.



14
15
16
# File 'lib/authie/rack_controller.rb', line 14

def request
  @request
end

Instance Method Details

#auth_sessionObject



44
45
46
# File 'lib/authie/rack_controller.rb', line 44

def auth_session
  @auth_session ||= Session.get_session(self)
end

#cookiesObject



22
23
24
# File 'lib/authie/rack_controller.rb', line 22

def cookies
  @request.cookie_jar
end

#current_userObject



40
41
42
# File 'lib/authie/rack_controller.rb', line 40

def current_user
  auth_session.user if auth_session.is_a?(Session)
end

#current_user=(user) ⇒ Object



36
37
38
# File 'lib/authie/rack_controller.rb', line 36

def current_user=(user)
  Session.start(self, user: user)
end

#set_browser_idObject

Set a random browser ID for this browser.



27
28
29
30
31
32
33
34
# File 'lib/authie/rack_controller.rb', line 27

def set_browser_id
  until cookies[:browser_id]
    proposed_browser_id = SecureRandom.uuid
    unless Session.where(browser_id: proposed_browser_id).exists?
      cookies[:browser_id] = { value: proposed_browser_id, expires: 20.years.from_now }
    end
  end
end