????
Current Path : C:/inetpub/vhost/sdoc.gdtsolutions.vn/package/app/routes/ |
Current File : C:/inetpub/vhost/sdoc.gdtsolutions.vn/package/app/routes/auth.js |
const LocalStrategy = require('passport-local').Strategy; var accCtrl = require('../controllers/taikhoan').create(); module.exports = function (passport) { passport.serializeUser((user, done) => { done(null, user); }) passport.deserializeUser((user, done) => { done(null, user); }) passport.use(new LocalStrategy( function (username, password, done) { accCtrl.isUser(username, password) .then(function (user) { if (!user) { return done(null, false, { message: 'Tên đăng nhập hoặc mật khẩu không chính xác' }); } return done(null, user); }).catch(function (err) { return done(err); }) } )) var router = require('express').Router(); router.get('/', function (req, res, _next) { if (req.isAuthenticated && req.isAuthenticated()) { let redirectTo = redirect(req); if (redirectTo) { res.redirect(redirectTo); } } else { res.render('auth.eta', { csrfToken: req.csrfToken() }); } }) router.post('/login', function (req, res, next) { if (req.body.rememberme !== 'on') { req.session.cookie.maxAge = null; } else { req.session.cookie.expires = false; } passport.authenticate('local', function (err, user, _info) { if (err) { return next(err); } if (!user) { return res.render('auth.eta', { message: 'Tên đăng nhập hoặc mật khẩu không chính xác' }); } req.login(user, function (err) { if (err) { return next(err); } if (user.TrangThai == 3) { res.clearCookie('passport'); req.session.destroy(); return res.render('auth.eta', { message: 'Tài khoản của bạn chưa được kích hoạt hoặc đã khóa, ' +'bạn hãy liên lạc với người quản trị của hệ thống để cấp phép cho bạn.' }); } let redirectTo = redirect(req); if (redirectTo) { return res.redirect(redirectTo); } else return res.send('Không tìm thấy đường dẫn'); }); })(req, res, next); }); router.post('/login', passport.authenticate('local', { failureRedirect: '/auth', failureFlash: true }), function (req, res, next) { next(); }) // signup router.post('/signup', function (req, res) { accCtrl.addReader(req.body) .then(function () { res.status(200).send('Tạo tài khoản thành công') }) .catch(function (err) { res.status(400).send(err.message) }); }); // kiểm tra tài khoản tồn tại router.post('/check', function (req, res) { accCtrl.checkAcc(req.body['login'], req.user) .then(function (result) { res.json({ exists: result }) }) .catch(function (err) { res.status(400).send(err.message) }) }); router.all('*', (req, res) => res.redirect('/auth')) function redirect(req) { var redirectTo; if (req.session.redirectTo) { redirectTo = req.session.redirectTo; delete req.session.redirectTo; } else { redirectTo = '/main'; } return redirectTo; } return router; };