Páginas filhas
  • DSERTSS3-3080 - DT TRANSMITE - Implementação da autorização por Roles nas APIs do Transmite

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

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.

RolePermissões no TOTVS Transmite
AdministradorConfigurações e Monitores
FaturistaAcesso a todas funcionalidades de documentos emitidos
Faturista ImpressãoAcesso a consulta de documentos emitidos e impressão
Faturista E-mailAcesso a consulta de documentos emitidos e envio por e-mail
Faturista ExportaçãoAcesso a consulta de documentos emitidos e exportação
Faturista ImportaçãoAcesso a consulta de documentos emitidos e importação
Faturista DetalharAcesso a consulta de documentos emitidos e função de detalhar
SuprimentosAcesso a todas funcionalidades de documentos recebidos
Suprimentos ImpressãoAcesso a consulta de documentos recebidos e impressão
Suprimentos E-mailAcesso a consulta de documentos recebidos e envio por e-mail
Suprimentos ExportaçãoAcesso a consulta de documentos recebidos e exportação
Suprimentos DetalharAcesso a consulta de documentos recebidos e função de detalhar
Suprimentos ImportarAcesso a consulta de documentos recebidos e importação
FiscalAcesso a todas funcionalidades dos monitores (Emitidos e Recebidos)
GerencialVisualizaçã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á