Skip to content

Aplicar no painel as regras de permissão emitidas pela API #394

Description

@edvaldoszy

Visão geral

createRules em src/resources/permissions.ts deriva regras de tipo_usuario_id. Fonte passa a ser rules da API. O Manager precisa aplicar conditions (hoje o tipo tem o campo e o builder.can ignora).

Fora de escopo

  • Tela para editar permissões
  • Implementar /auth na API
  • Novos tipos de usuário

Critérios de aceite

  • Menu e auth.can usam rules da sessão
  • Sem regra, rota/ação some ou é recusada
  • can(action, resource, record?) avalia condition
  • Curador/operador/identificador veem o que a API emitir

Detalhes técnicos

new Manager({ rules: response.rules })

Em src/libraries/auth/Manager.ts:

  • builder.can(action, resource, rule.conditions)
  • can(action, resource, record?) com subject(resource, record) encapsulado

AuthProvider deixa de chamar createRules(attributes?.user). createRules local só fallback no dual-run, depois apagar.

UI já usa auth.can('read', 'Usuario') etc. em App.tsx e navItems.tsx — deve continuar se as rules da API tiverem os mesmos resource/action.

Hoje (Manager.ts) — não copiar o can sem conditions:

builder.can(action, resource) // incompleto

Alvo:

builder.can(action, resource, rule.conditions)

can(action, resource, record?: object) {
  if (record) return this.ability.can(action, subject(resource, record))
  return this.ability.can(action, resource)
}

AuthProvider:

const manager = useMemo(
  () => new Manager({ rules: attributes?.rules ?? [] }),
  [attributes?.rules],
)

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

    enhancementNew feature or request

    Projects

    • Status
      to do

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions