جواد
2 ماه پیش توسط جواد مطرح شد
1 پاسخ

انجام نشدن login

سلام دوستان نمیدونم چرا لاگین انجام نمیشه

const autoBind = require("auto-bind");
const Recaptcha = require("express-recaptcha").RecaptchaV2;
const {
    validationResult
} = require("express-validator");

module.exports = class publicController {
    constructor() {
        autoBind(this);
        this.setRecaptcha();
    }
    setRecaptcha() {
        this.recaptcha = new Recaptcha(
            configer.service.RECAPTCHA.SITE_KEY,
            configer.service.RECAPTCHA.SECRET_KEY,
            configer.service.RECAPTCHA.OPTION
        );
    }

    validationRecaptcha(req, res, next) {
        return new Promise((resolve, rejected) => {
            const err = null;
            if (err) {
                console.log(err);
                global.messages.push("گزینه امنیتی فعال نمی باشد");
                //                res.redirect("/auth/register");
                this.redirectBack(req, res)

            } else {
                resolve(true);
            }
        });
    }

    validationForm(req, res) {
        const errors = validationResult(req);
        if (!errors.isEmpty()) {
            global.messages = errors.array().map((error) => error.msg);
            //            res.redirect("/auth/register");
            this.redirectBack(req, res)
            return false
        } else {
            return true;
        }
    }

    redirectBack(req, res) {
        return res.redirect(req.header('Referer') || '/')
    }

};
const publicController = require('app/http/controllers/publicController')
const passport = require('passport')
const util = require('util');

// متغیر برای حمل پیام های تابع ولید
global.messages = [];

class controlLogin extends publicController {
     showForm(req, res, next) {
        res.render('auth/login', {
            messages ,
            recaptcha: this.recaptcha.render()
        })
    }

    async loginProcess(req,res,next) {
        global.messages = [];
        await this.validationRecaptcha(req, res,next);
        const result = this.validationForm(req, res);
        if (result) {
            this.login(req, res, next);
        }else{
            res.redirect('/auth/login')
        }
    }

    async login(req, res, next) {
        passport.authenticate('local.login', (err, user) => {
            if (!user) {
                return res.redirect('/auth/login')
            }
            req.login(user, err => {
                if (err) {
                    console.log(err)
                }
                res.redirect('/')
            })
        })(req, res,next)
    }

//    async login(req, res, next) {
//    const authenticate = util.promisify(passport.authenticate('local.login'));
//    try {
//        const user = await authenticate(req, res);
//        if (!user) {
//            return res.redirect('/auth/login');
//        }
//        req.login(user, err => {
//            if (err) {
//                console.log(err);
//            }
//            res.redirect('/');
//        });
//    } catch (err) {
//        console.log(err);
//        res.redirect('/auth/login');
//    }
}

module.exports = new controlLogin()
const passport = require("passport");
const localStrategy = require("passport-local").Strategy;
const UserModel = require("app/models/users");
const {
    where
} = require("sequelize");

passport.use("local.register", new localStrategy({
    usernameField: "email",
    passwordField: "password",
    passReqToCallback: true,
}, (req, email, password, done) => {
    UserModel.findOne({
        where: {
            email: email
        }
    }).then((user) => {
        if (user) {
            return done(
                null,
                false,
                global.messages.push("این اطلاعات قبلا در سیستم ثبت شده است")
            );
        } else {
            UserModel.create({
                    name: req.body.name,
                    email: email,
                    password: password,
                })
                .then((createdUser) => {
                    return done(null, createdUser);
                })
                .catch((error) => {
                    console.log(error);
                    global.messages.push("امکان ذخیره اطلاعات وجود ندارد");
                    return done(error);
                });
        }
    }).catch((error) => {
        return done(error)
    });
}));
//passport.serializeUser(function (user, cb) {
//    process.nextTick(function () {
//        return cb(null, {
//            id: user.id,
//            username: user.username,
//            picture: user.picture,
//        });
//    });
//});
//
//passport.deserializeUser(function (user, cb) {
//    process.nextTick(function () {
//        return cb(null, user);
//    });
//});

passport.use('local.login', new localStrategy({
    usernameField: "email",
    passwordField: "password",
    passReqToCallback: true,
}, (req, email, password, done) => {
    UserModel.findOne({
        where: {
            email: email
        }
    }, (err, user) => {
        if (err) return done(err)
        if (!user) return done(null, false, global.messages.push('اکاربری با این اطلاعات ثبته نام نکرده است'))
        done(null, user)
    })
}))

passport.serializeUser((user, done) => {
  done(null, user.id);
});

passport.deserializeUser((id, done) => {
  User.findByPk(id).then(user => {
    done(null, user);
  }).catch(err => done(err));
});

روت ها در جای خودشونه...


ثبت پرسش جدید
oss_vahid
تخصص : wordpress developer
@ossvahid 2 ماه پیش مطرح شد
0

اگه انجام نمیشه یعنی اشتباه انجام دادی دوباره تلاش کن


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام