@@ -10,8 +10,12 @@ def current_time
10
10
@current_time ||= Time . now . utc
11
11
end
12
12
13
- def token_expire_at
14
- @token_expire_at ||= ( current_time + ApiGuard . token_validity ) . to_i
13
+ def access_token_expire_at
14
+ @token_expire_at ||= ( current_time + ApiGuard . token_validity )
15
+ end
16
+
17
+ def refresh_token_expire_at
18
+ @refresh_token_expire_at_date ||= ( Time . now . utc + ApiGuard . refresh_token_validity )
15
19
end
16
20
17
21
def token_issued_at
@@ -38,7 +42,7 @@ def decode(token, verify = true)
38
42
def jwt_and_refresh_token ( resource , resource_name , expired_token = false , expired_refresh_token = false )
39
43
payload = {
40
44
"#{ resource_name } _id" : resource . id ,
41
- exp : expired_token ? token_issued_at : token_expire_at ,
45
+ exp : expired_token ? token_issued_at : access_token_expire_at . to_i ,
42
46
iat : token_issued_at
43
47
}
44
48
@@ -48,17 +52,58 @@ def jwt_and_refresh_token(resource, resource_name, expired_token = false, expire
48
52
[ encode ( payload ) , new_refresh_token ( resource , expired_refresh_token ) ]
49
53
end
50
54
51
- # Create tokens and set response headers
52
- def create_token_and_set_header ( resource , resource_name )
55
+ # Create tokens and set response headers and cookies
56
+ def create_and_set_token_pair ( resource , resource_name )
53
57
access_token , refresh_token = jwt_and_refresh_token ( resource , resource_name )
54
- set_token_headers ( access_token , refresh_token )
58
+
59
+ if ApiGuard . enable_tokens_in_cookies
60
+ set_token_cookies ( access_token , refresh_token )
61
+ else
62
+ set_token_headers ( access_token , refresh_token )
63
+ end
55
64
end
56
65
57
66
# Set token details in response headers
58
67
def set_token_headers ( token , refresh_token = nil )
59
68
response . headers [ 'Access-Token' ] = token
60
69
response . headers [ 'Refresh-Token' ] = refresh_token if refresh_token
61
- response . headers [ 'Expire-At' ] = token_expire_at . to_s
70
+ response . headers [ 'Expire-At' ] = access_token_expire_at . to_i . to_s
71
+ end
72
+
73
+ def set_token_cookies ( access_token , refresh_token )
74
+ response . set_cookie (
75
+ 'access_token' ,
76
+ {
77
+ value : access_token ,
78
+ http_only : true ,
79
+ expires : refresh_token_expire_at ,
80
+ path : '/'
81
+ }
82
+ )
83
+ response . set_cookie (
84
+ 'refresh_token' ,
85
+ {
86
+ value : refresh_token ,
87
+ http_only : true ,
88
+ expires : refresh_token_expire_at ,
89
+ path : '/'
90
+ }
91
+ )
92
+ end
93
+
94
+ def remove_tokens_from_cookies
95
+ response . delete_cookie (
96
+ 'access_token' ,
97
+ {
98
+ path : '/'
99
+ }
100
+ )
101
+ response . delete_cookie (
102
+ 'refresh_token' ,
103
+ {
104
+ path : '/'
105
+ }
106
+ )
62
107
end
63
108
64
109
# Set token issued at to current timestamp
0 commit comments