File tree Expand file tree Collapse file tree 3 files changed +38
-23
lines changed Expand file tree Collapse file tree 3 files changed +38
-23
lines changed Original file line number Diff line number Diff line change @@ -8,7 +8,7 @@ def create
8
8
@user = user_class . find_or_create_from_auth_hash ( auth_hash )
9
9
session [ :user_id ] = @user . id
10
10
session [ :user_uid ] = @user . uid
11
- session [ :user_cache_key ] = SESSION_REDIS . get ( user_session_key ( @user . uid ) )
11
+ session [ :user_cache_key ] = SessionManager . get ( @user . uid )
12
12
session [ :token_expires_at ] = Time . zone . at ( auth_hash [ :credentials ] [ :expires_at ] )
13
13
14
14
redirect_to return_to_path
Original file line number Diff line number Diff line change @@ -71,15 +71,11 @@ def check_token_expiry!
71
71
# delete the cookie
72
72
#
73
73
def handle_user_cache_cookie!
74
- if SESSION_REDIS
75
- handle_user_cache_cookie_with_redis
76
- elsif cookies [ :_radius_user_cache_key ]
77
- if cookies [ :_radius_user_cache_key ] == "none"
78
- delete_session_data
79
- elsif session [ :user_cache_key ] != cookies [ :_radius_user_cache_key ]
80
- clear_cache_cookie_and_sign_out
81
- end
82
- end
74
+ return redirect_to_sign_in unless session_present?
75
+ return if session_and_redis_match?
76
+
77
+ delete_session_data
78
+ redirect_to_sign_in
83
79
end
84
80
85
81
def current_user = ( u )
@@ -116,24 +112,12 @@ def user_signed_in?
116
112
117
113
private
118
114
119
- def handle_user_cache_cookie_with_redis
120
- return redirect_to_sign_in unless session_present?
121
- return if session_and_redis_match?
122
-
123
- delete_session_data
124
- redirect_to_sign_in
125
- end
126
-
127
115
def session_present?
128
116
session [ :user_id ] && session [ :user_cache_key ]
129
117
end
130
118
131
119
def session_and_redis_match?
132
- SESSION_REDIS . get ( user_session_key ( session [ :user_uid ] ) ) == session [ :user_cache_key ]
133
- end
134
-
135
- def user_session_key ( id )
136
- "rnsession:#{ id } "
120
+ SessionManager . update ( session [ :user_uid ] ) == session [ :user_cache_key ]
137
121
end
138
122
139
123
def delete_session_data
Original file line number Diff line number Diff line change
1
+ class SessionManager
2
+ def self . conn
3
+ Redis . new ( url : ENV [ "REDIS_SESSION_URL" ] )
4
+ end
5
+
6
+ def self . active?
7
+ ENV [ "REDIS_SESSION_URL" ] . present?
8
+ end
9
+
10
+ def self . get ( user_id )
11
+ return unless active?
12
+
13
+ conn . get ( user_session_key ( user_id ) )
14
+ end
15
+
16
+ def self . clear ( user_id )
17
+ return unless active?
18
+
19
+ conn . del ( user_session_key ( user_id ) )
20
+ end
21
+
22
+ def self . update ( user_id , value )
23
+ return unless active?
24
+
25
+ conn . set ( user_session_key ( user_id ) , value )
26
+ end
27
+
28
+ def self . user_session_key ( user_id )
29
+ "rnsession:#{ user_id } "
30
+ end
31
+ end
You can’t perform that action at this time.
0 commit comments