Проверка роли администратора JWT в nodeJS - PullRequest
0 голосов
/ 16 мая 2018

Как я могу проверить, была ли модификация данных (на сайте) создана пользователем или администратором?

Я использую JWT, nodeJS, машинопись (и почтальон для тестирования)

Это мой метод "получить всех пользователей":

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);
}

Или есть лучшая реализация для этого? Спасибо

1 Ответ

0 голосов
/ 17 мая 2018

Вы можете использовать Реализованный код в качестве Middleware.

Вместо:

в вашем классе пользователя:

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 (), если промежуточное программное обеспечение будет вызвано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...