Я создаю nodejs & express с приложением mongoDB, которое требует регистрации компании и пользователя. Когда вы заполняете регистрационную форму, это будет выглядеть так, как если бы вы были компанией или обычным пользователем.
Модель для этого
iscompany: {
type: Boolean,
default: false,
},
Я создал промежуточное ПО для проверки, является ли человек компанией, и это промежуточное ПО
module.exports = function(req, res, next) {
if (!req.user.iscompany) {
return res.status(401).json({
msg: "you should be a company to access this. authorization denied",
});
}
next();
};
, затем я импортировал промежуточное ПО на маршрутах я хочу использовать его, и это код.
const role = require("../../middleware/role");
const User = require("../../models/User");
const Company = require("../../models/Company");
const { check, validationResult } = require("express-validator");
//@route GET api/company/me
//@desc get current users profile
//access Private
router.get("/me", auth, role, async(req, res) => {
try {
const company = await Company.findOne({
user: req.user.id,
}).populate("user", ["avatar", "fullname"]);
if (!company) {
res.status(400).json({
msg: "no company found",
});
}
res.json(company);
} catch (e) {
console.error(e.message);
res.status(400).send("server error");
}
});
Я не понимаю, что, если не так, это позволяет как компаниям, так и не компаниям получить доступ к маршруту.
Любая помощь?