01. DADOS GERAIS
Produto: | TOTVS Transmite |
---|---|
Linha de Produto: | Linha Protheus |
Segmento: | Backoffice |
Módulo: | TOTVS Transmite |
Função: | Não Há |
País: | Brasil |
Ticket: | Não Há |
Requisito/Story/Issue (informe o requisito relacionado) : | DSERTSS3-3080 |
02. SITUAÇÃO/REQUISITO
- Implementar a autorização por Roles nas API's do Transmite, utilizando o pacote do TNF (TnfRoleAuthorize), de forma que o acesso às funcionalidades possa ser restrito somente aos usuários com perfil autorizado.
03. SOLUÇÃO
- O gerenciamento das Roles e permissões do usuário será feito no painel MyAccount, conforme links abaixo:
- (DEV) https://myaccount.dev.totvs.app/myaccount/role-management
- (STAGING) https://myaccount.staging.totvs.app/myaccount/role-management
- (PROD) https://myaccount.totvs.app/myaccount/role-management
As APIs já utilizavam o pacote Tnf.AspNetCore.Security e os endpoints foram decorados com a annotation [TnfRoleAuthorize("transmit.rolename")], ao invés da annotation [TnfAuthorize] que garante o acesso a qualquer usuário autenticado.
No projeto transmit-framework foram definidas constantes com os nomes das Roles para utilização nas API's.
Role | Permissões no TOTVS Transmite |
---|---|
Administrador | Configurações e Monitores |
Faturista | Acesso a todas funcionalidades de documentos emitidos |
Faturista Impressão | Acesso a consulta de documentos emitidos e impressão |
Faturista E-mail | Acesso a consulta de documentos emitidos e envio por e-mail |
Faturista Exportação | Acesso a consulta de documentos emitidos e exportação |
Faturista Importação | Acesso a consulta de documentos emitidos e importação |
Faturista Detalhar | Acesso a consulta de documentos emitidos e função de detalhar |
Suprimentos | Acesso a todas funcionalidades de documentos recebidos |
Suprimentos Impressão | Acesso a consulta de documentos recebidos e impressão |
Suprimentos E-mail | Acesso a consulta de documentos recebidos e envio por e-mail |
Suprimentos Exportação | Acesso a consulta de documentos recebidos e exportação |
Suprimentos Detalhar | Acesso a consulta de documentos recebidos e função de detalhar |
Suprimentos Importar | Acesso a consulta de documentos recebidos e importação |
Fiscal | Acesso a todas funcionalidades dos monitores (Emitidos e Recebidos) |
Gerencial | Visualização de relatórios e dashboards (Ainda não implementado) |
A autorização por Roles foi implementada nas seguintes APIs, que utilizam o Token do Fluig na autenticação:
- tranmit-portal-api
- transmit-cte-api
- transmt-mdfe-api
- transmit-nfce-api
- transmit-nfse-api
OBS: Para permitir que um endpoint seja acessado por diferentes perfis (Roles), basta replicar o decorator [TnfRoleAuthorize].
04. DEMAIS INFORMAÇÕES
O cadastro das Roles no Painel MyAccount seria feito automaticamente ao subir a aplicação com os Decorators nos endpoints, porém o pacote do Tnf está na versão 3.1 do .NET Core, enquanto as aplicações do Transmite estão na versão 5 do .NET. De acordo com a equipe do TotvsApps as Roles não foram criadas automaticamente no MyAccount por conta dessa diferença de versões, necessário o cadastro manual através de API do RAC, conforme segue abaixo:
API RAC - Criação das Roles
Exemplo Payload
[
{
"name": "transmit.admin",
"descriptions": [
{
"culture": "pt-BR",
"description": "Administrador"
}
]
}
]
Descrição campos payload
name: Nome da Role utilizada na aplicação. Segue o padrão NomeAplicacao.NomeRole
descriptions.culture: Location Portugês - Brasil
descriptions.description: Descrição da Role. Nome que aparecerá para o usuário no portal MyAccount, conforme a configuração de Location definida na aplicação
Também foi incluído endpoint na aplicação portal-api para retornar as Roles do usuário autenticado. Esse endpoint chama uma API do RAC passando o Token do Fluig e recebe um array de strings contendo as Roles do usuário. Esse endpoint será utilizado pelo front para controlar os acessos do usuário nos menus do Transmite.
Aplicação: transmit-portal-api
Controller: AccountController
Action: GetProductRoles
API RAC:
05. ASSUNTOS RELACIONADOS
- Não há