如何检查(在网站上)数据修改是由用户创建还是由管理员创建?
我正在使用JWT,nodeJS,typescript(和postman进行测试)
这是我的“获取所有用户”方法:
UserSchema:
export const userSchema = new Schema({
username: { type: String, required: true, unique: true },
firstName: { type: String, required: true },
lastName: { type: String, required: true },
email: { type: String, required: true, unique: true },
password: { type: String, required: true },
isAdmin: { type: Boolean }
}
UserRoute:
public getAll = async (req: any, res: any) => {
try {
const users = await User.find({}).exec();
res.status(200).json(users);
} catch (err) {
res.status(400).json(err);
}
}
我应该用条件扩展吗?
let user = await User.findById(req.params.id).exec();
if(user.isAdmin)
{
//CODE
}
else
{
res.status(400).json(err);
}
或者有更好的实施方案吗?感谢
答案 0 :(得分:1)
您可以将已实施的代码用作中间件。
而不是:
在您的用户类中:
public IsAdmin(req: any, res: any, next: any) {
//CODE GOES HERE
}
路线文件中的:
而不是:
app.get("/alluser", getall);
写下这个:
app.use(User.IsAdmin);
app.get("/alluser", User.IsAdmin, User.getall);
app.use()提供将调用的中间件。