用户登录时无法更改登录按钮以动态注销

时间:2020-05-11 09:26:29

标签: javascript

我不知道该怎么办,我试图将登录按钮更改为在用户登录时注销!

错误: 登录未定义

我不知道如何定义登录并将其发送到wlecome.ejs,老实说,我在代码之间有些迷失。你能帮我吗非常感谢。我真的很感激。

app.js

    const express = require("express");
    const router = express.Router();
    const bcrypt = require("bcryptjs");
    const User = require("../models/User");
    const passport = require("passport")
    router.get("/login", (req, res) => res.render("login"));
    router.get("/register", (req, res) => res.render("register"));

    router.post('/register', (req, res) => {
        const { name, email, password, password2 } = req.body;
        let errors = [];

        if (!name || !email || !password || !password2) {
            errors.push({ msg: 'Please enter all fields' });
        }

        if (password != password2) {
            errors.push({ msg: 'Passwords do not match' });
        }

        if (password.length < 6) {
            errors.push({ msg: 'Password must be at least 6 characters' });
        }

        if (errors.length > 0) {
            res.render('register', {
                errors,
                name,
                email,
                password,
                password2
            });
        } else {
            User.findOne({ email: email }).then(user => {
                if (user) {
                    errors.push({ msg: 'Email already exists' });
                    res.render('register', {
                        errors,
                        name,
                        email,
                        password,
                        password2
                    });
                } else {
                    const newUser = new User({
                        name,
                        email,
                        password
                    });

                    bcrypt.genSalt(10, (err, salt) => {
                        bcrypt.hash(newUser.password, salt, (err, hash) => {
                            if (err) throw err;
                            newUser.password = hash;
                            newUser
                                .save()
                                .then(user => {
                                    req.flash(
                                        'success_msg',
                                        'You are now registered and can log in'
                                    );
                                    res.redirect('/users/login');
                                })
                                .catch(err => console.log(err));
                        });
                    });
                }
            });
        }
    });

    // Login
    router.post('/login', (req, res, next) => {
        passport.authenticate('local', {
            successRedirect: '/dashboard',
            failureRedirect: '/users/login',
            failureFlash: true,

        })(req, res, next);
    });

    // Logout
    router.get('/logout', (req, res) => {
        req.logout();
        req.flash('success_msg', 'You are logged out');
        res.redirect('/users/login');
    });

    module.exports = router;

welcome.ejs

     <ul class="nav">

            <% if (login) { %>
                <li> <a href="/users/logout">Logout</a></li>
                <% } else { %>
                    <li><a href="/users/login">Login</a></li>
                    <% }%>

        </ul>

0 个答案:

没有答案
相关问题