Class: Authenticate::Session

Inherits:
Object
  • Object
show all
Includes:
Debug
Defined in:
lib/authenticate/session.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Debug

#debug

Constructor Details

#initialize(request, cookies) ⇒ Session



10
11
12
13
14
15
# File 'lib/authenticate/session.rb', line 10

def initialize(request, cookies)
  @request = request # trackable module accesses request
  @cookies = cookies
  @session_token = @cookies[cookie_name]
  debug 'SESSION initialize: @session_token: ' + @session_token.inspect
end

Instance Attribute Details

#requestObject

Returns the value of attribute request.



8
9
10
# File 'lib/authenticate/session.rb', line 8

def request
  @request
end

Instance Method Details

#authenticated?Boolean

Has this session successfully authenticated?



62
63
64
65
# File 'lib/authenticate/session.rb', line 62

def authenticated?
  debug 'session.authenticated?'
  current_user.present?
end

#current_userUser

Get the user represented by this session.



51
52
53
54
55
56
57
# File 'lib/authenticate/session.rb', line 51

def current_user
  debug 'session.current_user'
  if @session_token.present?
    @current_user ||= load_user
  end
  @current_user
end

#deauthenticatevoid

This method returns an undefined value.

Invalidate the session token, unset the current user and remove the cookie.



71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/authenticate/session.rb', line 71

def deauthenticate
  # nuke session_token in db
  if current_user.present?
    current_user.reset_session_token!
  end

  # nuke notion of current_user
  @current_user = nil

  # # nuke cookie
  @cookies.delete cookie_name
end

#login(user, &block) ⇒ User

Finish user login process, after the user has been authenticated. Called when user creates an account or signs back into the app.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/authenticate/session.rb', line 21

def (user, &block)
  debug 'session.login()'
  @current_user = user
  debug "session.login @current_user: #{@current_user.inspect}"
  # todo extract token gen to two different strategies
  @current_user.generate_session_token if user.present?

  message = catch(:failure) do
    Authenticate.lifecycle.run_callbacks(:after_set_user, @current_user, self, { event: :authentication })
    Authenticate.lifecycle.run_callbacks(:after_authentication, @current_user, self, { event: :authentication })
  end

  debug "session.login after lifecycle callbacks, message: #{message}"
  status = message.present? ? Failure.new(message) : Success.new
  if status.success?
    @current_user.save
    write_cookie if @current_user.session_token
  else
    @current_user = nil
  end

  if block_given?
    block.call(status)
  end
end