1
resposta

Duvida para validar perfis dentro do JWT

Ola boa noite, eu tenho seguite cenário quando eu crio o JWT dentro delte tem o "Realm-access:"{ "roles":[{

"funcionário". "uma_authorization"

}]

como que eu faria para pegar esse valor dentro do jwt e comparar em um método de pesquisa, validando se esse tipo de roles é permitido ou não efeturar essa consulta? por funcionario so pode consultar o cpf dele, rules gerente pode consultar todos.

1 resposta

VC vai precisar acessar o payload do token JWT (onde as informações estão armazenadas) e verificar os roles ou outras informações relevantes para decidir quais ações permitir.

Você precisa decodificar o JWT para acessar as informações contidas nele. Existem bibliotecas em Angular que podem te ajudar com isso, como jwt-decode: https://www.npmjs.com/package/jwt-decode. Depois de decodificar o JWT, você pode acessar os roles no payload do token. Com base nos roles, você pode implementar a lógica para validar se o usuário tem permissão para realizar determinada ação.

Um exemplo:

import * as jwt_decode from 'jwt-decode';

// Função para decodificar o token JWT e obter os roles
function getRolesFromToken(token: string): string[] {
    const decodedToken = jwt_decode(token);
    return decodedToken['Realm-access'].roles;
}

// Função para validar se o usuário tem permissão para consultar CPF
function canConsultCPF(token: string): boolean {
    const roles = getRolesFromToken(token);
    return roles.includes('funcionário');
}

// Função para validar se o usuário tem permissão para consultar todos os CPFs
function canConsultAllCPF(token: string): boolean {
    const roles = getRolesFromToken(token);
    return roles.includes('gerente');
}

// Exemplo de uso
const token = 'seu_token_jwt_aqui';
if (canConsultCPF(token)) {
    // Permitir consulta de CPF do próprio funcionário
} else if (canConsultAllCPF(token)) {
    // Permitir consulta de CPF de todos os funcionários
} else {
    // Usuário não tem permissão para consultar CPF
}

Não esquece de ajustar a estrutura do payload do seu token e as regras de permissão conforme necessário para o seu caso específico.