Class: PgRls::Middleware::SetResetConnection
- Inherits:
-
Object
- Object
- PgRls::Middleware::SetResetConnection
- Defined in:
- lib/pg_rls/middleware/set_reset_connection.rb
Overview
Set RLS if sessions present.
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app) ⇒ SetResetConnection
constructor
A new instance of SetResetConnection.
- #load_session_cookie_value(env) ⇒ Object
- #load_tenant_thought_session(env) ⇒ Object
- #rails_active_storage_request?(env) ⇒ Boolean
Constructor Details
#initialize(app) ⇒ SetResetConnection
Returns a new instance of SetResetConnection.
45 46 47 |
# File 'lib/pg_rls/middleware/set_reset_connection.rb', line 45 def initialize(app) @app = app end |
Instance Method Details
#call(env) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/pg_rls/middleware/set_reset_connection.rb', line 49 def call(env) tenant = load_tenant_thought_session(env) return @app.call(env) if tenant.blank? PgRls::Tenant.with_tenant!(tenant) { @app.call(env) } rescue PgRls::Errors::TenantNotFound @app.call(env) rescue ActiveRecord::RecordNotFound => e raise e unless rails_active_storage_request?(env) [404, { 'Content-Type' => 'text/plain' }, ['Could not find asset']] end |
#load_session_cookie_value(env) ⇒ Object
63 64 65 66 67 68 69 70 |
# File 'lib/pg_rls/middleware/set_reset_connection.rb', line 63 def (env) = env['HTTP_COOKIE'] return if .nil? = /#{PgRls.session_key_prefix}=([^;]+)/ match = .match() match[1] if match end |
#load_tenant_thought_session(env) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/pg_rls/middleware/set_reset_connection.rb', line 72 def load_tenant_thought_session(env) = (env) return if .blank? redis_session_key = "#{PgRls.session_prefix}#{Digest::SHA256.hexdigest()}" tenant_session = Marshal.load(PgRls.sessions.get(redis_session_key)) return if tenant_session.blank? return if tenant_session['_tenant'].blank? tenant_session['_tenant'] if tenant_session.present? rescue TypeError nil end |
#rails_active_storage_request?(env) ⇒ Boolean
88 89 90 |
# File 'lib/pg_rls/middleware/set_reset_connection.rb', line 88 def rails_active_storage_request?(env) env['PATH_INFO'].start_with?('/rails/active_storage/') end |