D
D
Developereer2021-03-27 02:49:01
Node.js
Developereer, 2021-03-27 02:49:01

Why can't I get a cookie?

There is a Server class to which I connected the cookie-parser. Registered app.use(cookieParser);
There is a path file. I send cookies from the /signup page, they are sent and through Chrome I see it, but when checking these same cookies when requesting the /personal page using the isAuthenticated function, I get an error.
Cannot read property 'auth' of undefined

Why can't I get a cookie with req.cookies.auth ???

const express = require('express');
const hbs = require('hbs');
const exphbs = require('express-handlebars');
const routes = require('../routes/routes');
const session = require('express-session');
const cookieParser = require('cookie-parser');


class Server {
    constructor(port) {
        this.app = express();
        this.port = port;

        //Директория со статическими файлами
        this.app.use(express.static('src/public'));

        this.app.use(routes);
        this.app.use(cookieParser);



        //Для работы с шаблонизатором handlebars
        this.app.engine('hbs', exphbs(
            {
                layoutsDir: "src/views/layouts",
                defaultLayout: 'layout',
                extname: 'hbs'
            }
        ));

        //Директория с частичными шаблонами
        hbs.registerPartials("src/views/partials");

        //Установка шаблонизатором handlebars
        this.app.set('view engine', 'hbs');
        this.app.set('views', 'src/views');
    }
    start(){
        const STARTUP_MESSAGE = `Server is running at ${this.port} port`;

        this.app.listen(this.port , (err) => {
            if(err)
                throw err;
            else
                console.log(STARTUP_MESSAGE);
        });
    }
}

module.exports = Server;


const {Router} = require('express');
const router = Router();
const bodyParser = require('body-parser');
const User = require('../models/User');
const bcrypt = require('bcrypt');
const cookie_parser = require('cookie-parser');
const salt = 10;


function isAuthenticated(req, res, next){
    //const {cookies} = req;
    if (req.cookies.auth === 'true'){
        next();
    }
}

var urlencodedParser = bodyParser.urlencoded({ extended: false });

router.get('/', (req,res)=>{
    res.render('index.hbs',{
        title : 'Коммунальные услуги'
    });

});

router.get('/registration', (req,res) =>{
    res.render('registration.hbs',{
        title : 'Регистрация'
    });
});

router.post('/registration', urlencodedParser, (req,res)=>{
    if(!req.body)
        return res.sendStatus(400);
    const {userSurname, userName,userLastName, userEmail, userPass, userPhone} = req.body;
    let hashed_pass = bcrypt.hashSync(userPass, salt);
    User.create({
        surname: userSurname,
        name: userName,
        lastname: userLastName,
        login: userEmail,
        password: hashed_pass,
        email: userEmail,
        telephone: userPhone,
        personal_account_id: 1
    }).then(res=>{
        console.log("Registration Succesfully!");
    }).catch(err=>{
        console.log(err);
    })
    res.redirect('/signup');
})

router.get('/account' ,(req,res) =>{
    res.render('account.hbs',{
    });
});

router.get('/signup', (req,res)=>{
    res.render('signup.hbs',{
        title : 'Войти'
    })
})

router.get('/about',(req,res)=>{
    res.render('about.hbs',{
        title: 'О компании'
    })
})
router.get('/personal', isAuthenticated,(req,res)=>{
    res.render('personal.hbs',{
        title: 'Личный кабинет'
    })
})

router.post('/signup', urlencodedParser, ((req, res) => {
    if(!req.body)
        return res.sendStatus(400);
    let login = req.body.login.toString();
    let password = req.body.password.toString();

    User.findOne({where:{
        login: login
        //password: password
        }, raw: true}).then(findedUsers=>{
            if(findedUsers) {
                console.log('Authenticated');
                res.cookie('auth', 'true');
                return res.redirect('/personal');
            }
            else
                res.redirect('/signup');
                console.log('No User with this values');
    }).catch(err=>{
        console.log(err);
    })
    })
)
module.exports = router;

Answer the question

In order to leave comments, you need to log in

1 answer(s)
M
Michael, 2021-03-27
@Developer

change the order of routes and middleware

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question