/
by_cookie_token.rb
executable file
·82 lines (71 loc) · 1.99 KB
/
by_cookie_token.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# -*- coding: mule-utf-8 -*-
module Authentication
module ByCookieToken
# Stuff directives into including module
def self.included(recipient)
recipient.extend(ModelClassMethods)
recipient.class_eval do
include ModelInstanceMethods
end
end
#
# Class Methods
#
module ModelClassMethods
end # class methods
#
# Instance Methods
#
module ModelInstanceMethods
def remember_token?
(!remember_token.blank?) &&
remember_token_expires_at && (Time.now.utc < remember_token_expires_at.utc)
end
# These create and unset the fields required for remembering users between browser closes
def remember_me
remember_me_for 2.weeks
end
def remember_me_for(time)
remember_me_until time.from_now.utc
end
def remember_me_until(time)
self.remember_token_expires_at = time
self.remember_token = self.class.make_token
save(false)
end
# refresh token (keeping same expires_at) if it exists
def refresh_token
if remember_token?
self.remember_token = self.class.make_token
save(false)
end
end
#
# Deletes the server-side record of the authentication token. The
# client-side (browser cookie) and server-side (this remember_token) must
# always be deleted together.
#
def forget_me
self.remember_token_expires_at = nil
self.remember_token = nil
save(false)
end
end # instance methods
end
module ByCookieTokenController
# Stuff directives into including module
def self.included( recipient )
recipient.extend( ControllerClassMethods )
recipient.class_eval do
include ControllerInstanceMethods
end
end
#
# Class Methods
#
module ControllerClassMethods
end # class methods
module ControllerInstanceMethods
end # instance methods
end
end