No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Aprende Inglés, Programación, AI, Ciberseguridad y mucho más.

Antes: $249

Currency
$209
Suscríbete

Termina en:

2 Días
22 Hrs
18 Min
9 Seg

Validar roles

20/24
Recursos

Link de interés:

GraphQL Shield

Aportes 1

Preguntas 0

Ordenar por:

¬ŅQuieres ver m√°s aportes, preguntas y respuestas de la comunidad?

Validacion de Roles

primero refactorizamos la funcion que recibe el context y revisa si el jwt es valido

const boom = require('@hapi/boom')
const checkJwtGql =async(context)=>{
  const {user}= await context.authenticate('jwt',
  {session:false});
  // console.log(context.req.headers["authorization"])
 // usamos la estrategia de jwt
  if(!user){
    throw boom.unauthorized('jwt is not valid')
  }
  return user
}
module.exports = checkJwtGql

funcion que valida los roles, pasandole el usuario

const boom = require('@hapi/boom')
const checkRoleGql =(user,...roles)=>{
  if(!roles.includes(user.role)){
    throw boom.unauthorized('role is not valid for this request')
  }
  return user
}
module.exports = checkRoleGql

aplicamos las funciones en el resolver que requiera authenticacion

const CategoryService = require("../../services/category.service");
const checkRoleGql = require("../../utils/auth/checkRoleGql");
const checkJwtGql = require("../../utils/auth/checkJwtGql");

const service = new CategoryService();

const allCategories= async()=>{
  const categories = await service.find();
  return categories
}
const addCategory = async (root, {dto},context)=>{
  const user = await checkJwtGql(context) //validate jtw
  checkRoleGql(user,'admin') ; // validate Role
  const newCategory = await service.create(dto);
  return newCategory;
}
const categoryById = async (root, args)=>{
  console.log(args)
  const category = await service.findOne(args.id);
  return category
}

module.exports= {allCategories, categoryById, addCategory}