Не могу получить значение req.userData.role - PullRequest
0 голосов
/ 05 июля 2018

Код прямо сейчас изменяет сообщение, как вы можете видеть с 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!' });
  }
}

Если есть еще кто-то, кого вы хотели бы увидеть, дайте мне знать, спасибо

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