Module: Vert::Auth::JwtAuthenticatable
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/vert/auth/jwt_authenticatable.rb
Overview
JwtAuthenticatable
Concern para controllers Rails que autenticam via JWT Bearer e estabelecem contexto multi-tenant através de Vert::Current.
Política de segurança (regra invioláv. 2 do projeto):
-
tenant_id, company_id e user_id SÃO LIDOS APENAS DO JWT.
-
O header ‘X-Tenant-ID`, quando presente, é tratado como defesa em profundidade: precisa ser igual ao `tenant_id` do JWT, senão a request é rejeitada com 403 (potencial tentativa cross-tenant).
-
Se o header estiver ausente, o JWT manda silenciosamente.
Uso típico:
# config/initializers/vert.rb
Vert.configure { |c| c.enable_jwt_auth = true }
# app/controllers/api/base_controller.rb
class Api::BaseController < ApplicationController
include Vert::Auth::JwtAuthenticatable
end
Opt-out por controller:
class Api::PublicController < Api::BaseController
skip_jwt_authentication
end
Hooks override-áveis (por serviço):
- `jwt_secret` → default `ENV["JWT_SECRET"]`
- `jwt_algorithm` → default `ENV.fetch("JWT_ALGORITHM", "HS256")`
- `tenant_header_name` → default `"X-Tenant-ID"`
- `on_tenant_mismatch` → default só faz `Rails.logger.warn`. Cada
serviço pode override para gravar em
`audit_logs` / `security_events`.
- `on_jwt_invalid` → default `Rails.logger.warn`.
- `current_jwt_user` → default `nil`. Serviços que tenham model
`User` podem retornar o registro para uso
em controllers.
Defined Under Namespace
Classes: Error, InvalidTokenError, MissingTokenError, TenantMismatchError