Код прямо сейчас изменяет сообщение, как вы можете видеть с router.put.
Проверяет _id: req.params.id,
poster: req.userData.userId
Эти две проверки позволяют пользователю, создавшему сообщение, редактировать только сообщение.
Но я пытаюсь добавить администратора, который может изменить любой пост. Поэтому я пытаюсь выяснить, какую роль играет пользователь, но я не могу этого сделать.
Это код, который я использую:
router.put("/:id",
authCheck,
multer({
storage: storage
}).single('file'), (req, res, next) => {
let filePath = req.body.filePath;
if (req.file) {
const url = req.protocol + '://' + req.get('host');
filePath = url + '/documents/' + req.file.filename
}
const post = new Post({
_id: req.body.id,
header: req.body.header,
message: req.body.message,
filePath: filePath,
poster: req.userData.userId,
});
console.log('user ROLE = ' ,req.userData.role);
Post.updateOne({
_id: req.params.id,
poster: req.userData.userId
}, post).then(result => {
if (result.nModified > 0) {
res.status(200).json({
message: "Update successful!"
});
} else {
res.status(401).json({
message: "Not authorised!"
});
}
});
});
Я не самый опытный программист, может кто-нибудь указать мне правильное направление, чтобы иметь возможность получить это значение.
Это то, что я пишу console.log('user ROLE = ' ,req.userData.role);
Это моя пользовательская схема:
const userSchema = mongoose.Schema({
email: {
type: String,
required: true,
unique: true
},
password: {
type: String,
required: true
},
role: {
type: String,
required: true
}
});
Это мое промежуточное ПО, если оно необходимо:
module.exports = (req, res, next) => {
try {
const token = req.headers.authorization.split(' ')[1];
const decodedToken = jwt.verify(token, 'secret_this_is_my_secret');
req.userData = { email: decodedToken.email, userId: decodedToken.userId, role: decodedToken.role };
next();
} catch (error) {
res.status(401).son({message: 'Auth failed!' });
}
}
Если есть еще кто-то, кого вы хотели бы увидеть, дайте мне знать, спасибо