Class: MnUtilsAuth::Sso
- Inherits:
-
Object
- Object
- MnUtilsAuth::Sso
- Includes:
- Singleton
- Defined in:
- lib/mn_utils_gem/sso.rb
Constant Summary collapse
- SSO_COOKIE_NAME =
:mnsso.freeze
- SSO_COOKIE_VALUE_PREFIX =
"#{SSO_COOKIE_NAME}_".freeze
Instance Method Summary collapse
- #delete_sso(cookies) ⇒ Object
- #get_sso(cookies) ⇒ Object
- #get_sso_user_id(cookies) ⇒ Object
-
#initialize ⇒ Sso
constructor
A new instance of Sso.
- #set_sso(cookies, user_id, persistent, other_attributes = {}) ⇒ Object
Constructor Details
#initialize ⇒ Sso
Returns a new instance of Sso.
12 13 14 |
# File 'lib/mn_utils_gem/sso.rb', line 12 def initialize @logger = defined?(Rails) ? Rails.logger : Logger.new(STDOUT) end |
Instance Method Details
#delete_sso(cookies) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/mn_utils_gem/sso.rb', line 56 def delete_sso() raise ArgumentError, "ENV['MN_REDIS_URL'] is required" \ unless ENV.key? 'MN_REDIS_URL' if [SSO_COOKIE_NAME] redis_server.del([SSO_COOKIE_NAME]) .delete SSO_COOKIE_NAME end if RequestStore.store[:sso] RequestStore.store[:sso] = nil end end |
#get_sso(cookies) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/mn_utils_gem/sso.rb', line 27 def get_sso() raise ArgumentError, "ENV['MN_REDIS_URL'] is required" \ unless ENV.key? 'MN_REDIS_URL' return RequestStore.store[:sso] if RequestStore.store[:sso] return nil if .nil? || [SSO_COOKIE_NAME].nil? || redis_server.nil? json = redis_server.get([SSO_COOKIE_NAME]) return nil if json.nil? parsed = JSON.parse(json, symbolize_names: true) return nil unless parsed.is_a?(Hash) RequestStore.store[:sso] = parsed parsed rescue Exception => e @logger.error e nil end |
#get_sso_user_id(cookies) ⇒ Object
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/mn_utils_gem/sso.rb', line 16 def get_sso_user_id() raise ArgumentError, "ENV['MN_REDIS_URL'] is required" \ unless ENV.key? 'MN_REDIS_URL' parsed = get_sso return nil if parsed.nil? parsed[:user_id] rescue Exception => e @logger.error e nil end |
#set_sso(cookies, user_id, persistent, other_attributes = {}) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/mn_utils_gem/sso.rb', line 43 def set_sso(, user_id, persistent, other_attributes = {}) raise ArgumentError, "ENV['MN_REDIS_URL'] is required" \ unless ENV.key? 'MN_REDIS_URL' return if .nil? || user_id.blank? || RequestStore.store[:sso] || redis_server.nil? value = other_attributes.reverse_merge({ user_id: user_id }) redis_ttl = (persistent) ? 1.year.to_i : 1.day.to_i if [SSO_COOKIE_NAME].nil? || !redis_server.get([SSO_COOKIE_NAME]) = , persistent redis_server.set(, JSON[value], ex: redis_ttl) RequestStore.store[:sso] = value end end |