Я пытаюсь создать страницу регистрации / входа. Я использую Nodejs, pug, mon goose, bcrypt. Я сохраняю пароль от страницы регистрации или регистрации в базе данных после его хеширования. Я не могу использовать
const user= new login.findone({email: req.body.email})
if(user){
bcrypt.compare(myPlaintextPassword, hash, function(err, result) {
// result == true
});
}
, так как это дает мне ложный результат. Я также считаю, что findOne ({email: req.body.email}) работает некорректно или там тоже есть ошибка.
Вот индексная страница, обрабатывающая эти проверки
const express = require('express');
const {check, validationResult} = require('express-validator');
const router = express.Router();
const bcrypt = require('bcrypt');
const saltRounds = 10;
//Mongoose
const mongoose = require('mongoose');
var registration = require('../models/registrations') //Important
var login = require('../models/login') //Important
var blogpost = require('../models/blog')
//Routes
//-----------------------------------------------------------------------------------------------------------REGISTER/SIGN UP
router.get('/', (req,res)=>{
res.render('./home.pug')
})
router.get('/register', (req, res) => {
res.render('register',{ title: 'Register' });
});
router.post('/register', [
check('name')
.isLength({ min: 5 })
.withMessage('> Please enter a name'),
check('email')
.isLength({min: 14})
.withMessage('> Please enter an email'),
check('password')
.isLength({min:6})
],(req, res) => {
const errors = validationResult(req);
var salt = bcrypt.genSaltSync(saltRounds);
var hash = bcrypt.hashSync(req.body.password, salt);
var emailcheck = registration.findOne({email: req.body.email})
emailcheck.then(emailcheck => {
if (emailcheck){
res.render('register', {emailERROR: '> Email already in use!\n', data: req.body,})
}else{
if (errors.isEmpty()) {
const regis = new registration({
name: req.body.name,
email: req.body.email,
password: hash,
});
regis.save()
.then(() => { res.render('register', {successMSG: '> Succesfully Registered!', data: req.body,})
console.log(regis) })
.catch((err) => {
console.log(err);
res.send('Sorry! Something went wrong.');
})}
else {
res.status(422).render('register', {title: 'Registration form', errors: errors.array(), data: req.body,});
}
}
})
console.log(req.body)
})
//Register-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
//-------------------------------------------------------------------------------------------LOGIN
router.get('/login', (req, res) => {
res.render('login',{ title: 'Login' });
});
router.post('/login', (req, res) => {
//Empty
});
//Login-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
//-------------------------------------------------------------------------------------------BLOG
router.get('/blog', (req, res) => {
res.render('blog',{ title: 'Blog' });
});
router.post('/blog', (req, res) => {
const bp= new blogpost(req.body)
bp.save()
.then(()=>{
res.render('blog', {successMSG:'>Succesfully Posted!'})
})
});
//Blog-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
router.get('/about', (req, res) => {
res.render('about',{ title: 'About' });
});
module.exports = router;