Когда я захожу в профиль человека без входа в систему, я автоматически захожу с учетными данными этого человека - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь создать профили для каждого зарегистрированного пользователя, я пытался создать маршрут с идентификатором человека "/ profile / id:", но когда я пытаюсь получить доступ к этому маршруту, он автоматически регистрируется с учетные данные id

Зонд это , но оно работает только для текущего сеанса

users.controller. js

const usersCtrl = {};

const passport = require('passport');

const User = require('../models/user');

usersCtrl.renderSignUpForm = (req, res) => {
    res.render('users/signup');
};

usersCtrl.signup = async (req, res) => {
    const errors = [];
    const { name, email, password, confirm_password, role } = req.body;
    if (password != confirm_password) {
        errors.push({ text: 'Passwords do not match' });
    }
    if (password.length < 4) {
        errors.push({ text: 'Password must be at least 4 characters' });
    }
    if (errors.length > 0) {
        res.render('users/signup', {
            errors,
            name,
            email,
            role
        })
    } else {
        const emailUser = await User.findOne({ email: email });
        if (emailUser) {
            req.flash('error_msg', 'The email is already in use.');
            res.redirect('/users/signup');
        } else {
            const newUser = new User({ name, email, password, role });
            newUser.password = await newUser.encryptPassword(password);
            await newUser.save();
            console.log(User.role);
            req.flash('success_msg', 'You are register');
            res.redirect('/users/signin');
        };
    }
};

usersCtrl.renderSigninForm = (req, res) => {
    res.render('users/signin')
};

usersCtrl.signin = passport.authenticate('local', {
    failureRedirect: '/users/signin',
    successRedirect: '/notes',
    failureFlash: true
});


usersCtrl.logOut = (req, res) => {
    req.logout();
    req.flash('success_msg', 'You are logged out now.');
    res.redirect('/users/signin');
};

usersCtrl.blog = (req,res) =>{
    res.render('users/blog');
};

usersCtrl.profile = (req, res) =>{
    User.findById(req.params.id, function(err, foundUser){
        if(err){
            res.status(404);
            res.render('errors/404');
            return
        }
        res.render('users/profile',{user: foundUser});
    });

};

module.exports = usersCtrl;

Это маршруты

const { Router } = require('express');
const router = Router();

const { renderSignUpForm,
    renderSigninForm,
    signin,
    signup,
    logOut,
    blog,
    profile }
    = require('../controllers/users.controller')

router.get('/users/signup', renderSignUpForm);

router.post('/users/signup', signup);

router.get('/users/signin', renderSigninForm);

router.post('/users/signin', signin);

router.get('/users/logout', logOut);

router.get('/blog/', blog);

router.get('/profile/:id', profile)

module.exports = router;


  [1]: https://stackoverflow.com/questions/41468105/how-to-get-the-profile-of-current-user-in-node-js
...