Skip to content

Commit 0fd428e

Browse files
Moves session Redis to its own class
1 parent 80254e8 commit 0fd428e

File tree

3 files changed

+38
-23
lines changed

3 files changed

+38
-23
lines changed

app/controllers/kracken/sessions_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ def create
88
@user = user_class.find_or_create_from_auth_hash(auth_hash)
99
session[:user_id] = @user.id
1010
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)
1212
session[:token_expires_at] = Time.zone.at(auth_hash[:credentials][:expires_at])
1313

1414
redirect_to return_to_path

lib/kracken/controllers/authenticatable.rb

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,11 @@ def check_token_expiry!
7171
# delete the cookie
7272
#
7373
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
8379
end
8480

8581
def current_user=(u)
@@ -116,24 +112,12 @@ def user_signed_in?
116112

117113
private
118114

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-
127115
def session_present?
128116
session[:user_id] && session[:user_cache_key]
129117
end
130118

131119
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]
137121
end
138122

139123
def delete_session_data

lib/kracken/session_manager.rb

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
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

0 commit comments

Comments
 (0)