Permissões e papéis

CASL no ERP, permissão na API e o que a extensão declara no manifest. A tela esconde; a API recusa.

O front usa CASL (action + subject no menu). A API valida JWT + tenant + RolesGuard. Esconder o botão não é a regra de negócio: a rota recusa.

Papéis

OrigemValoresEfeito
JWT roleadmin, user, vendedor, manager, accountantrecorte operacional
systemRoleSYSTEM_ADMIN | USERadmin de plataforma vê todos os tenants
VendedorSellerDashboardGuarddashboards e GET /seller/me no escopo do usuário

Visibilidade de vendedor: listagens de GET /seller só trazem vendedores reais (FAT000 sem vínculo ou employee.is_seller=true).

Cada item do sidebar tem menuKey, action e subject. Sem permissão o item não aparece. Extensão declara permissions[] no m3r.json; o validate exige que existam no catálogo da SDK (SdkScope).

Permissões citadas pelos IPs

PermissãoOnde o catálogo de IP usa
sales.order.create / update / fulfill / cancelpedido
sales.quote.convertorçamento ↔ pedido (IP ainda não wired)
sales.return.createdevolução
sales.pdv.finishfechamento PDV
sales.exit.confirmconfirmação de documento de saída (não wired)
purchase.order.updatepedido de compra (não wired)
stock.movement.createmovimento de estoque (não wired)
financial.title.create / financial.payment.createtítulo / baixa (não wired)
fiscal.nfe.emitfamília IP.FISCAL.*
extension.storage.readIP.EXT.SCREEN.ON_LOAD

Lista completa de códigos: IPs e GET /developer/sdk/catalog.

Datas retroativas

Usuário pode ter canChangeDate, maxDaysBack, maxDaysForward. Fora da janela a API recusa a data do documento.