سلام دوستان نمیدونم چرا لاگین انجام نمیشه
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));
});
روت ها در جای خودشونه...
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟