@@ -10,8 +10,12 @@ def current_time
1010        @current_time  ||= Time . now . utc 
1111      end 
1212
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 ) 
1519      end 
1620
1721      def  token_issued_at 
@@ -38,7 +42,7 @@ def decode(token, verify = true)
3842      def  jwt_and_refresh_token ( resource ,  resource_name ,  expired_token  =  false ,  expired_refresh_token  =  false ) 
3943        payload  =  { 
4044          "#{ resource_name }  : 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 , 
4246          iat : token_issued_at 
4347        } 
4448
@@ -48,17 +52,58 @@ def jwt_and_refresh_token(resource, resource_name, expired_token = false, expire
4852        [ encode ( payload ) ,  new_refresh_token ( resource ,  expired_refresh_token ) ] 
4953      end 
5054
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 ) 
5357        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 
5564      end 
5665
5766      # Set token details in response headers 
5867      def  set_token_headers ( token ,  refresh_token  =  nil ) 
5968        response . headers [ 'Access-Token' ]  =  token 
6069        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+         ) 
62107      end 
63108
64109      # Set token issued at to current timestamp 
0 commit comments