На этом сайте будут только пользователи-администраторы, я создал схему, представление регистрации и маршрут, однако что-то не так с логикой в маршруте.
/ страница регистрации имеет только три входа, имя пользователя, пароль и адрес электронной почты.В настоящий момент, если пользователь использует произвольный пароль для входа, он показывает ошибку флэш-памяти, говорящую, что пароль недействителен, и перенаправляет меня на целевую страницу, однако он все еще создает нового пользователя в базе данных.
Также, если пользователь использует правильный пароль, происходит то же самое, что и выше.Что я делаю неправильно?вот мой код:
Схема
var UserSchema = new mongoose.Schema({
username: {
type: String,
unique: true,
required: true
},
password: {
type: String
},
email: {
type: String,
unique: true,
required: true,
lowercase: true,
},
resetPasswordToken: String,
resetPasswordExpires: Date,
// isAdmin: {type: Boolean, default: false, required:true}
});
Просмотр регистра
<form class="form-group" action="/register" method="POST">
<div class="form-group">
<input class="form-control mb-1" type="text" name="username">
</div>
<div class="form-group">
<input class="form-control mb-3" type="password" name="password">
</div>
<div class="form-group">
<input class="form-control" type="email" name="email">
</div>
<button class="btn btn-outline-info w-100">Register!</button>
</form>
Маршрут
// register route
router.get("/register", function(req, res) {
res.render("register", {page: "register"});
});
// handle sign up logic
router.post("/register", function(req, res){
var newUser = new User({
username: req.body.username,
email: req.body.email
});
User.register(newUser, req.body.password, function(err, user){
if(err){
console.log(err);
return res.render("register", {error: err.message});
} else {
if(req.body.password !== process.env.ADMIN_CODE) {
req.flash('error', 'the password is not valid');
res.redirect("/");
} else {
passport.authenticate("local")(req, res, function(){
req.flash("success", "Great! Welcome! " + req.body.username);
res.redirect("/");
});
}
}
});
});