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