未授权删除 CRUD

编程入门 行业动态 更新时间:2024-10-06 22:31:11

未授权删除 <a href=https://www.elefans.com/category/jswz/34/1767597.html style=CRUD"/>

未授权删除 CRUD

我正在尝试创建一个功能,用户可以删除他们创建的费用,或者经理可以删除他们创建的费用,但是在尝试删除我刚刚创建的费用时出现未授权错误

费用控制器删除

export const deleteExpense = async (req, res, next) => {
  try {
    const expense = await Expense.findById(req.params.id);
    if (!expense) return error404(req, res, next);

    // Retrieve the user making the request
    const requestingUser = await User.findById(req.userId);
    if (!requestingUser) return error404(req, res, next);

    // Check if the user is authorized to delete the expense
    if (req.userId !== expense.userID && requestingUser.role !== "manager")
      return error403(req, res, next);

    const deletedExpense = await Expense.findByIdAndDelete(req.params.id);

    if (!deletedExpense) return res.status(404).send("House not found");
    res.status(200).json({ message: "deleted" });
  } catch (error) {
    errorServer(error, req, res, next);
  }
};

jwt 中间件

import jwt from "jsonwebtoken";
import createError from "http-errors";

export const verifyToken = (req, res, next) => {
  const token = req.cookies.accessToken;

  if (!token) return next(createError(401, "You are not authenticated!"));

  jwt.verify(token, process.env.JWT_KEY, async (err, payload) => {
    if (err) return next(createError(403, "Token is not valid!"));

    req.userId = payload.id;
    req.role = payload.role;

    next();
  });
};
回答如下:

更多推荐

未授权删除 CRUD

本文发布于:2024-05-13 14:46:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1759710.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:CRUD

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!