Class: RackJwtAegis::RequestContext
- Inherits:
-
Object
- Object
- RackJwtAegis::RequestContext
- Defined in:
- lib/rack_jwt_aegis/request_context.rb
Overview
Request context manager for storing JWT authentication data in Rack env
Stores authenticated user and tenant information in the Rack environment hash for easy access by downstream application code. Provides both instance methods for setting context and class methods for reading.
Constant Summary collapse
- JWT_PAYLOAD_KEY =
Standard environment keys for JWT data
'rack_jwt_aegis.payload'- USER_ID_KEY =
'rack_jwt_aegis.user_id'- TENANT_ID_KEY =
'rack_jwt_aegis.tenant_id'- SUBDOMAIN_KEY =
'rack_jwt_aegis.subdomain'- TENANT_SLUG_KEY =
SUBDOMAIN_KEY- PATHNAME_SLUGS_KEY =
'rack_jwt_aegis.pathname_slugs'- AUTHENTICATED_KEY =
'rack_jwt_aegis.authenticated'
Class Method Summary collapse
-
.authenticated?(env) ⇒ Boolean
Check if the request is authenticated.
- .current_tenant_id(request) ⇒ Object
- .current_tenant_slug(request) ⇒ Object
- .current_user_id(request) ⇒ Object
- .has_pathname_slug_access?(env, pathname_slug) ⇒ Boolean
- .pathname_slugs(env) ⇒ Object
-
.payload(env) ⇒ Hash?
Get the full JWT payload from the request.
- .subdomain(env) ⇒ Object
-
.tenant_id(env) ⇒ String, ...
Get the tenant ID.
- .tenant_slug(env) ⇒ Object
-
.user_id(env) ⇒ String, ...
Get the authenticated user ID.
Instance Method Summary collapse
-
#initialize(config) ⇒ RequestContext
constructor
Initialize the request context manager.
-
#set_context(env, payload) ⇒ Object
Set JWT authentication context in the Rack environment.
Constructor Details
#initialize(config) ⇒ RequestContext
Initialize the request context manager
34 35 36 |
# File 'lib/rack_jwt_aegis/request_context.rb', line 34 def initialize(config) @config = config end |
Class Method Details
.authenticated?(env) ⇒ Boolean
Check if the request is authenticated
60 61 62 |
# File 'lib/rack_jwt_aegis/request_context.rb', line 60 def self.authenticated?(env) !!env[AUTHENTICATED_KEY] end |
.current_tenant_id(request) ⇒ Object
104 105 106 |
# File 'lib/rack_jwt_aegis/request_context.rb', line 104 def self.current_tenant_id(request) tenant_id(request.env) end |
.current_tenant_slug(request) ⇒ Object
108 109 110 |
# File 'lib/rack_jwt_aegis/request_context.rb', line 108 def self.current_tenant_slug(request) tenant_slug(request.env) end |
.current_user_id(request) ⇒ Object
100 101 102 |
# File 'lib/rack_jwt_aegis/request_context.rb', line 100 def self.current_user_id(request) user_id(request.env) end |
.has_pathname_slug_access?(env, pathname_slug) ⇒ Boolean
112 113 114 |
# File 'lib/rack_jwt_aegis/request_context.rb', line 112 def self.has_pathname_slug_access?(env, pathname_slug) pathname_slugs(env).include?(pathname_slug) end |
.pathname_slugs(env) ⇒ Object
96 97 98 |
# File 'lib/rack_jwt_aegis/request_context.rb', line 96 def self.pathname_slugs(env) env[PATHNAME_SLUGS_KEY] || [] end |
.payload(env) ⇒ Hash?
Get the full JWT payload from the request
68 69 70 |
# File 'lib/rack_jwt_aegis/request_context.rb', line 68 def self.payload(env) env[JWT_PAYLOAD_KEY] end |
.subdomain(env) ⇒ Object
92 93 94 |
# File 'lib/rack_jwt_aegis/request_context.rb', line 92 def self.subdomain(env) env[SUBDOMAIN_KEY] end |
.tenant_id(env) ⇒ String, ...
Get the tenant ID
84 85 86 |
# File 'lib/rack_jwt_aegis/request_context.rb', line 84 def self.tenant_id(env) env[TENANT_ID_KEY] end |
.tenant_slug(env) ⇒ Object
88 89 90 |
# File 'lib/rack_jwt_aegis/request_context.rb', line 88 def self.tenant_slug(env) env[TENANT_SLUG_KEY] end |
.user_id(env) ⇒ String, ...
Get the authenticated user ID
76 77 78 |
# File 'lib/rack_jwt_aegis/request_context.rb', line 76 def self.user_id(env) env[USER_ID_KEY] end |
Instance Method Details
#set_context(env, payload) ⇒ Object
Set JWT authentication context in the Rack environment
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/rack_jwt_aegis/request_context.rb', line 42 def set_context(env, payload) # Set the full payload env[JWT_PAYLOAD_KEY] = payload # Set authentication flag env[AUTHENTICATED_KEY] = true # Extract and set commonly used values for easy access set_user_context(env, payload) set_tenant_context(env, payload) end |