Skip to content

Commit 5b0fad7

Browse files
Updates namespace and adds class for unavailable Redis
1 parent 2770c41 commit 5b0fad7

File tree

3 files changed

+37
-38
lines changed

3 files changed

+37
-38
lines changed

app/controllers/kracken/sessions_controller.rb

Lines changed: 1 addition & 5 deletions
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] = ::SessionManager.get(@user.uid)
11+
session[:user_cache_key] = Kracken::SessionManager.get(@user.uid)
1212
session[:token_expires_at] = Time.zone.at(auth_hash[:credentials][:expires_at])
1313

1414
redirect_to return_to_path
@@ -46,9 +46,5 @@ def signout_redirect_query
4646
current_root.path = ''
4747
"?redirect_to=#{CGI.escape(current_root.to_s)}"
4848
end
49-
50-
def user_session_key(id)
51-
"rnsession:#{id}"
52-
end
5349
end
5450
end

lib/kracken/controllers/authenticatable.rb

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def check_token_expiry!
7171
# delete the cookie
7272
#
7373
def handle_user_cache_cookie!
74-
return redirect_to_sign_in unless session_present?
74+
return unless session_present?
7575
return if session_and_redis_match?
7676

7777
delete_session_data
@@ -113,29 +113,22 @@ def user_signed_in?
113113
private
114114

115115
def session_present?
116-
session[:user_id] && session[:user_cache_key]
116+
session[:user_uid] && session[:user_cache_key]
117117
end
118118

119119
def session_and_redis_match?
120-
::SessionManager.get(session[:user_uid]) == session[:user_cache_key]
120+
Kracken::SessionManager.get(session[:user_uid]) == session[:user_cache_key]
121121
end
122122

123123
def delete_session_data
124124
# Sign out current user
125125
session.delete :user_id
126126

127-
# Clear that user's cache key
127+
# Clear that user's cache data
128+
session.delete :user_uid
128129
session.delete :user_cache_key
129130
end
130131

131-
def clear_cache_cookie_and_sign_out
132-
# Delete the cookie to prevent redirect loops
133-
cookies.delete :_radius_user_cache_key
134-
135-
# Redirect to the account app
136-
redirect_to_sign_in
137-
end
138-
139132
def user_class
140133
Kracken.config.user_class
141134
end

lib/kracken/session_manager.rb

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,41 @@
1-
class SessionManager
2-
def self.conn
3-
Redis.new(url: ENV["REDIS_SESSION_URL"])
4-
end
1+
# frozen_string_literal: true
52

6-
def self.active?
7-
ENV["REDIS_SESSION_URL"].present?
8-
end
3+
module Kracken
4+
module SessionManager
5+
def self.conn
6+
@conn ||= if ENV["REDIS_SESSION_URL"].present?
7+
Redis.new(url: ENV["REDIS_SESSION_URL"])
8+
else
9+
NullRedis.new
10+
end
11+
end
912

10-
def self.get(user_id)
11-
return unless active?
13+
def self.get(user_id)
14+
conn.get(user_session_key(user_id))
15+
end
1216

13-
conn.get(user_session_key(user_id))
14-
end
17+
def self.del(user_id)
18+
conn.del(user_session_key(user_id))
19+
end
1520

16-
def self.del(user_id)
17-
return unless active?
21+
def self.update(user_id, value)
22+
conn.set(user_session_key(user_id), value)
23+
end
1824

19-
conn.del(user_session_key(user_id))
20-
end
25+
def self.user_session_key(user_id)
26+
"rnsession:#{user_id}"
27+
end
2128

22-
def self.update(user_id, value)
23-
return unless active?
29+
class NullRedis
30+
# rubocop:disable Style/EmptyMethod
31+
def initialize(*); end
2432

25-
conn.set(user_session_key(user_id), value)
26-
end
33+
def del(*); end
34+
35+
def get(*); end
2736

28-
def self.user_session_key(user_id)
29-
"rnsession:#{user_id}"
37+
def set(*); end
38+
# rubocop:enable Style/EmptyMethod
39+
end
3040
end
3141
end

0 commit comments

Comments
 (0)