Eu fiz o código o array das roles e permissoes retornavam vazios. Acompanhei a aula com o instrutor. Verifiquei o código várias vezes, olhei aqui no fórum, fiquei horas debatendo com o chatgpt kkkk e nada (tadinho a culpa não é dele, ele faz o que pode kkkkk). E dai percebi qual era o problema. Tem 4 usuários na minha tabela de usuários. Eu estava fazendo o login com o usuário número 4. Copiava o accessToken dele, para fazer o cadastro da ACL. Mas a Response (no caso estava usando o Thunder do vs code) retornava o usuário número 1. Eu não sei o porque de estar acontecendo isto. O que eu resolvi fazer, foi contornar este problema colocando manualmente o id do usuario que eu queria alterar na rota. Passo a passo:
Alterei o código da rota do acl (na aula acho que é seguranca.js na pasta routes) para que fosse inserido manualmente o id do usuário que eu queria alterar na rota (igual é com o get by id ou put ou delete):
router
.post("/seguranca/acl/:usuarioId", SegurancaController.cadastrarAcl)
Depois na pasta controller eu fiz a alteração do segurancaController.js para ao inves de pegar o usuarioId do req, para que ele pegasse do req.params:
class SegurancaController {
static async cadastrarAcl(req, res) {
const { roles, permissoes } = req.body;
const { usuarioId } = req.params;
E por último nas pasta services, no segurancaServices.js ficou faltando na const novo usuario um where id. Trecho:
const novoUsuario = await database.usuarios.findOne({
where: {
id: dto.usuarioId,
},
include: [
{
model: database.roles,
as: "usuario_roles",
attributes: ["id", "nome", "descricao"],
},
{
model: database.permissoes,
as: "usuario_permissoes",
attributes: ["id", "nome", "descricao"],
},
],
});
return novoUsuario;
Daí na rota é só preencher de acordo, lembrando de que agora tem que colocar o id do usuario na rota:
http://localhost:3000/seguranca/acl/:id
{
"roles": [""],
"permissoes": [""]
}
o meu resultado:
{
"id": "12ebca7f-b78d-4c6b-b3ec-893984919629",
"nome": "CDC",
"email": "s@email.com",
"createdAt": "2024-09-25T21:36:50.260Z",
"updatedAt": "2024-09-25T21:36:50.260Z",
"usuario_roles": [
{
"id": "5266f309-9d52-47d9-bb72-55e04c0116ad",
"nome": "Gerente",
"descricao": "Usuario gerente",
"usuarios_roles": {
"usuario_id": "12ebca7f-b78d-4c6b-b3ec-893984919629",
"role_id": "5266f309-9d52-47d9-bb72-55e04c0116ad",
"createdAt": "2024-10-09T00:58:57.836Z",
"updatedAt": "2024-10-09T00:58:57.836Z"
}
}
],
"usuario_permissoes": [
{
"id": "22c593a9-2da5-4bab-a89e-8f5d5ad8542a",
"nome": "editar",
"descricao": "poder editar produtos",
"usuarios_permissoes": {
"usuario_id": "12ebca7f-b78d-4c6b-b3ec-893984919629",
"permissao_id": "22c593a9-2da5-4bab-a89e-8f5d5ad8542a",
"createdAt": "2024-10-09T00:58:57.878Z",
"updatedAt": "2024-10-09T00:58:57.878Z"
}
}
]
}
Quem quiser copiar o código do meu github, está aqui: https://github.com/FilipeDellaPorta/alura-seguranca-nodejs. Espero ter ajudado : )
Ahhh no meu código, vai ter uma função a mais de buscar acl. É que eu estava tentando ver se o problema era no cadastro ou na visualização...