| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- module.exports = function(crowi, app) {
- 'use strict';
- var debug = require('debug')('crowi:routes:login-passport')
- , passport = require('passport')
- , config = crowi.getConfig()
- , Config = crowi.model('Config');
- /**
- * success handler
- * @param {*} req
- * @param {*} res
- */
- const loginSuccess = (req, res, user) => {
- // update lastLoginAt
- user.updateLastLoginAt(new Date(), (err, userData) => {
- if (err) {
- console.log(`updateLastLoginAt dumps error: ${err}`);
- debug(`updateLastLoginAt dumps error: ${err}`);
- }
- });
- var jumpTo = req.session.jumpTo;
- if (jumpTo) {
- req.session.jumpTo = null;
- return res.redirect(jumpTo);
- } else {
- return res.redirect('/');
- }
- };
- /**
- * failure handler
- * @param {*} req
- * @param {*} res
- */
- const loginFailure = (req, res) => {
- req.flash('warningMessage', 'Sign in failure.');
- return res.redirect('/login');
- };
- const loginWithLdap = (req, res, next) => {
- // TODO impl with vesse/passport-ldapauth
- return next();
- }
- /**
- * login with LocalStrategy action
- * @param {*} req
- * @param {*} res
- * @param {*} next
- */
- const loginWithLocal = (req, res, next) => {
- const loginForm = req.body.loginForm;
- if (!req.form.isValid) {
- return res.render('login', {
- });
- }
- passport.authenticate('local', (err, user, info) => {
- debug('---authentication with LocalStrategy start---');
- debug('user', user);
- debug('info', info);
- if (err) { return next(err); }
- if (!user) { return next(); }
- req.logIn(user, (err) => {
- if (err != null) {
- debug(err);
- return next();
- }
- return loginSuccess(req, res, user);
- });
- debug('---authentication with LocalStrategy end---');
- })(req, res, next);
- }
- return {
- loginFailure,
- loginWithLdap,
- loginWithLocal,
- };
- };
|