Я успешно регистрирую данные пользователя, но могу получить логин, используя те же данные пользователя. Почему? - PullRequest
0 голосов
/ 28 марта 2020

Вот мой код:

const app = require('express')();
const bodyParser =require('body-parser');
const path = require('path');
const mongoose =require('mongoose');
const encrpt = require('mongoose-encryption');

app.use(bodyParser.urlencoded({ extended: true}))
app.set('view engine','ejs')
app.set('views', path.join(__dirname,'views'));

mongoose.connect('mongodb://localhost:27017/auth',{
    useNewUrlParser: true,
    useCreateIndex: true,
    useFindAndModify: false
}).then(() => {
    console.log('Connected successfully');
})

//Here is Mongoose Schema
const userSchema = new mongoose.Schema({
    email: String,
    password: String,
})

// Here is mongoose plugin put before the creation of user model.
const secret = 'this-is-the-secret-key';
userSchema.plugin(encrpt, {secret: secret, encryptedFields: [ 'password']})

//user model
const userModel = mongoose.model('userModel',userSchema);

//Here is route
app.get('/',(req,res)=>{
    res.render('home')
})

app.get('/login',(req,res)=>{
    res.render('login')
})

// Здесь я сталкиваюсь с проблемой, я получаю правильную страницу секретов в качестве ответа перед добавлением плагина, но после добавления плагина mon goose я всегда получаю Неверное письмо идентификатор или пароль после использования соответствующего идентификатора электронной почты и пароля.

app.post('/login',function(req,res) {
    const {username,password} = req.body
    userModel.findOne({email: username}, 'password',
        function(err ,doc) {
            if(err) {
                return res.send('<h1>Not Email Id or Password</h1>')
            } else {
                if(doc) {
                    if(doc.password === password) {
                       return res.render('secrets')
                    }
                }
                return res.send('<h1>Not Email Id or Password</h1>')
            }
        })
})
app.get('/register',(req,res) => {
    res.render('register')
})
//This router and controller work properly 
app.post('/register',async function(req,res) {
    try {
        const newUser = new userModel({
            email: req.body.username,
            password: req.body.password
        })
        await newUser.save()
        if(newUser){
            res.render('secrets')
        }
    } catch (error) {
        console.log(error)
    }
})
app.listen(5000,() =>{
    console.log('Server is running at the port 5000');
})

Я могу успешно зарегистрировать пользователя, но не могу войти в систему, используя этот регистрационный идентификатор электронной почты пользователя и пароль. Я не удалось найти ошибку в моем коде? Помогите мне найти ошибку и спасибо заранее !!!

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