Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Validar permissões de perfis

Olá pessoal do fórum! Estava acompanhando a 5º aula quando me deparei com um desafio (6º item), que quer que eu valide permissões de um perfil, não entendi muito do que se trata (o programa basicamente já está fazendo isso da onde o professor Raphael parou?).

Eu precisaria implementar mais validações em mais rotas... Ou talvez utilizar uma combinação do middleware de perfil e permissão para validar ambos... Estou meio perdido quanto ao que fazer.

Edit: typo

3 respostas

Olá Leandro! Tudo bem?

A ideia principal aqui é criar um middleware que verifica se o perfil do usuário tem as permissões necessárias para acessar certas rotas da sua API. Isso é uma prática comum para garantir que apenas usuários autorizados possam realizar determinadas ações.

Aqui está um exemplo de como você pode começar a implementar isso:

  1. Defina as permissões por perfil: Primeiro, você precisa ter uma estrutura que defina quais permissões cada perfil de usuário tem. Isso pode ser um objeto ou uma tabela no banco de dados. Por exemplo:

    const permissions = {
        admin: ['create', 'read', 'update', 'delete'],
        user: ['read'],
        guest: []
    };
    
  2. Crie o middleware de validação: Este middleware vai receber a lista de permissões necessárias para acessar uma rota e verificar se o perfil do usuário tem essas permissões.

    function validatePermissions(requiredPermissions) {
        return (req, res, next) => {
            const userProfile = req.user.profile; // Supondo que o perfil do usuário está disponível no objeto req
            const userPermissions = permissions[userProfile] || [];
    
            const hasPermission = requiredPermissions.every(permission => userPermissions.includes(permission));
    
            if (!hasPermission) {
                return res.status(403).json({ message: 'Acesso negado: permissões insuficientes.' });
            }
    
            next();
        };
    }
    
  3. Utilize o middleware nas rotas: Agora, você pode usar esse middleware nas suas rotas para garantir que apenas usuários com as permissões corretas possam acessá-las.

    app.get('/some-protected-route', validatePermissions(['read']), (req, res) => {
        res.send('Você tem acesso a esta rota!');
    });
    

Esse é um exemplo básico para te ajudar a começar. Você pode expandir e adaptar conforme a necessidade do seu projeto. Espero que isso ajude a esclarecer o que precisa ser feito!

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Olá senhor Armano! Muito obrigado pela resposta, porém eu ainda estou meio curioso, porque ja se faz uma validação de middleware similar no curso.

Talvez essa atividade tenha sido uma atividade sobressalente para o pessoal que acompanha apenas assistindo?

solução!

Boa tarde, Leandro!

Como se trata de um desafio de final de curso, o mesmo é fica como conteúdo complementar para fixar o que já foi visto no decorrer do curso, não é por norma que desafios como esse serão necessários ou adições ao projeto. Resumidamente, é um desafio didático para fixar o que foi aprendido.

Espero ter esclarecido!