我有一個用戶管理系統,其中管理員有權更新其用戶的角色,如何防止管理員更新角色高于他的檔案?示例,權限降序排列:1:superadmin 2:admin 3:supervisor 4:user
現在我有一個將用戶角色更新為的代碼:
router.post('/changeRole', async (req, res) => {
const { email } = req.body;
const updatedUser = await Users.findOneAndUpdate({ email }, { $set: { role } }, { new: true });
}
);
通過上面的代碼,管理員可以讓任何人成為超級管理員,它會給該用戶所有訪問權限。下面有沒有辦法防止查詢中出現這種情況?
router.post('/changeRole', async (req, res) => {
const { email } = req.body;
const updatedUser = await Users.findOneAndUpdate({ email }, { $set: { role !== "superadmin" } }, { new: true });
}
);
uj5u.com熱心網友回復:
我認為這可以幫助你:
const updatedUser = await Users.findOneAndUpdate(
{
email: email,
role: {$ne: "superadmin"}
},
{ $set: role },
{ new: true }
);
$ne操作員的意思not equal,所以這只會在電子郵件匹配并且角色不同時更新檔案superadmin。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/443024.html
上一篇:將CommonJS轉換為ES模塊
