login-passport.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. module.exports = function(crowi, app) {
  2. 'use strict';
  3. var debug = require('debug')('crowi:routes:login-passport')
  4. , passport = require('passport')
  5. , config = crowi.getConfig()
  6. , Config = crowi.model('Config');
  7. /**
  8. * success handler
  9. * @param {*} req
  10. * @param {*} res
  11. */
  12. const loginSuccess = (req, res, user) => {
  13. // update lastLoginAt
  14. user.updateLastLoginAt(new Date(), (err, userData) => {
  15. if (err) {
  16. console.log(`updateLastLoginAt dumps error: ${err}`);
  17. debug(`updateLastLoginAt dumps error: ${err}`);
  18. }
  19. });
  20. var jumpTo = req.session.jumpTo;
  21. if (jumpTo) {
  22. req.session.jumpTo = null;
  23. return res.redirect(jumpTo);
  24. } else {
  25. return res.redirect('/');
  26. }
  27. };
  28. /**
  29. * failure handler
  30. * @param {*} req
  31. * @param {*} res
  32. */
  33. const loginFailure = (req, res) => {
  34. req.flash('warningMessage', 'Sign in failure.');
  35. return res.redirect('/login');
  36. };
  37. const loginWithLdap = (req, res, next) => {
  38. // TODO impl with vesse/passport-ldapauth
  39. return next();
  40. }
  41. /**
  42. * login with LocalStrategy action
  43. * @param {*} req
  44. * @param {*} res
  45. * @param {*} next
  46. */
  47. const loginWithLocal = (req, res, next) => {
  48. const loginForm = req.body.loginForm;
  49. if (!req.form.isValid) {
  50. return res.render('login', {
  51. });
  52. }
  53. passport.authenticate('local', (err, user, info) => {
  54. debug('---authentication with LocalStrategy start---');
  55. debug('user', user);
  56. debug('info', info);
  57. if (err) { return next(err); }
  58. if (!user) { return next(); }
  59. req.logIn(user, (err) => {
  60. if (err != null) {
  61. debug(err);
  62. return next();
  63. }
  64. return loginSuccess(req, res, user);
  65. });
  66. debug('---authentication with LocalStrategy end---');
  67. })(req, res, next);
  68. }
  69. return {
  70. loginFailure,
  71. loginWithLdap,
  72. loginWithLocal,
  73. };
  74. };