Ao implementar permissoesRoles nas minhas rotas, por exemplo, em um cenário em que o usuário possui mais de uma role, a primeira role possui a permissão "listar" e a segunda não, o sistema traz a mensagem "Usuario não tem acesso a essa rota". Nessa situação o sistema não deveria liberar?
Acredito que o problema seja no trecho abaixo no middleware permissoesRoles
roles.map((role) => {
possuiPermissao = role.roles_das_permissoes
.map((permissao) => permissao.nome)
.some((permissao) => listaPermissoes.includes(permissao))
})
Somente para exemplificar o usuário tem 2 perfis (roles) Administrador role 1 (que possui a permissão listar) e (Operacional role 2 que não possui).
Como roles_das_permissoes que é aparece por último não tem o listar ele não funciona. Fiz um teste invertendo para que o perfil Administrador não tenha o listar e o Operacional tenha, aí a rota funciona.
Testei passando o código nessas ferramentas online e também deu o mesmo problema.
let listaPermissoes = ["Listar"];
const roles = [
{
"id": 1,
"nome": "Administrador",
"descricao": "Perfil Administrador",
"desativado": false,
"usuario_inc": 1,
"usuario_alt": 1,
"createdAt": "2024-04-19T14:57:00.059Z",
"updatedAt": "2024-04-19T14:57:00.059Z",
"deletedAt": null,
"perfis_permissoes": [
{
"id": 1,
"nome": "Editar",
"descricao": "Permissão Editar"
},
{
"id": 2,
"nome": "Listar",
"descricao": "Permissão Listar"
},
{
"id": 3,
"nome": "Adicionar",
"descricao": "Permissão Adicionar"
},
{
"id": 4,
"nome": "Deletar",
"descricao": "Permissão Deletar"
}
]
}
,
{
"id": 4,
"nome": "Operacional",
"descricao": "Perfil Operacional",
"desativado": false,
"usuario_inc": 1,
"usuario_alt": 1,
"createdAt": "2024-04-19T15:03:18.620Z",
"updatedAt": "2024-04-19T15:03:18.620Z",
"deletedAt": null,
"perfis_permissoes": [
{
"id": 1,
"nome": "Editar",
"descricao": "Permissão Editar"
},
{
"id": 3,
"nome": "Adicionar",
"descricao": "Permissão Adicionar"
},
{
"id": 4,
"nome": "Deletar",
"descricao": "Permissão Deletar"
}
]
}
];
let possuiPermissao = false;
roles.map((role) => {
possuiPermissao = role.perfis_permissoes
.map((permissao) => permissao.nome)
.some((permissao) => listaPermissoes.includes(permissao));
});
console.log(possuiPermissao); //aqui retorno false