Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

87
Visualizações
Express multiple roles middleware

I want to have 2 access roles: admin and superadmin.

Superadmin can create, read, update and delete posts. Admin can read, update posts.

I have the middlewares already:

const verifyAdminStatus = (req, res, next) => {
  //pseudocode: if (user === 'admin') next();
}

const verifySuperAdminStatus = (req, res, next) => {
  //pseudocode: if (user === 'superadmin') next();
}

For create and delete it works fine:

router.post("/api/posts", [verifyToken, verifySuperAdminStatus], createPost); 
router.delete("/api/posts/:id", [verifyToken, verifySuperAdminStatus], deletePost); 

But for update and read, I can't put both middlewares, because either one of them will not have the access. How can I implement a solution where both admins and superadmins can update and read. Do I need to create a new middleware that checks both?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

you can use a factory of middleware to have only one middleware that manages the different cases as follow:

const authMiddleware = (roles) => {
   return (req,res,next) => {
      roles.forEach(role => {
        if(["admin", "superadmin"].includes(role)) return next();
      })
      return res.status(403).json({
        message: "Forbidden"
      })
   }
   
}

router.post("/api/posts", [verifyToken, authMiddleware(["Admin"])], createPost); 
router.delete("/api/posts/:id", [verifyToken, authMiddleware(["SuperAdmin"]], deletePost); 
router.delete("/api/posts/another-endpoint", [verifyToken, authMiddleware(["SuperAdmin", "Admin"]], deletePost); 

The last endpoint can be consumed for an Admin or Super Admin role.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda