Skip to content

Autorizar tombos por regras de permissão #518

Description

@edvaldoszy

Visão geral

Tombos usam tokensMiddleware em src/routes/tombos.js e if (request.usuario.tipo_usuario_id === …) em src/controllers/tombos-controller.js (rascunho se operador/identificador; APROVADO se curador). Passar para sessão + regras.

_spec/auth-and-authorization.md §9.4 e §10.1.

Fora de escopo

  • Outras famílias de rotas
  • Painel
  • Protocolo de sync offline

Critérios de aceite

  • Rotas de tombos autenticadas usam authenticate + authorize, não lista de tipos
  • Operador/identificador continuam criando em rascunho / ESPERANDO se não têm approve em Tombo
  • Curador continua podendo aprovar
  • Recusa por condition só depois de carregar o tombo
  • Fluxos públicos de tombo que hoje não exigem login permanecem públicos

Detalhes técnicos

Auditar todos os tokensMiddleware em tombos.js e branches tipo_usuario_id no controller (create ~397–411, e outros).

Padrão:

  • Rota: authorize('create'|'update'|'read'|'export'|'approve', 'Tombo') conforme a operação.
  • Use case/controller: if (!auth.can('approve', 'Tombo')) { rascunho = true; status = 'ESPERANDO' }.
  • Update: carregar tombo → auth.can('update', 'Tombo', tombo) se createRules tiver conditions.

Exemplo de rule em createRules (ajustar ao audit):

{ action: ['update'], resource: 'Tombo', conditions: { rascunho: true } }

Exportação: authorize('export', 'Tombo').

No lugar do tipo_usuario_id atual:

// antes
if (request.usuario.tipo_usuario_id === 2 || request.usuario.tipo_usuario_id === 3) {
  jsonTombo.rascunho = true
}
if (request.usuario.tipo_usuario_id === 1) status = 'APROVADO'

// depois
if (!request.auth.can('approve', 'Tombo')) {
  jsonTombo.rascunho = true
  status = 'ESPERANDO'
} else {
  status = 'APROVADO'
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    • Status
      to do

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions