📦 fghpdf / login_model

📄 index.js · 98 lines
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98var express = require('express');
var router = express.Router();
var passport = require('passport');
var bcrypt = require('bcrypt-nodejs');

var model = require('../database/model');

/* GET home page. */
//对访问进行拦截,若没有登陆,则不能进入项目管理页面
router.all('/', isLoggedIn);
router.all('/project', isLoggedIn);

router.get('/', function(req, res, next) {
  res.render('project', { title: '项目总览' });
});

router.get('/project', function(req, res, next) {
  res.render('project', { title: '项目总览' });
});

router.get('/login', function(req, res, next) {
  res.render('login', { title: '登陆'});
});

router.post('/login', function(req, res, next){
  console.log(req.body);
  passport.authenticate('local', {
    successRedirect: '/',
    failureRedirect: '/login'
  }, function(err, user, info){
    console.log(err, user, info);
    if(err) {
      return res.render('login', {title: '登录', errorMessage: err.message});
    }
    if(!user) {
      return res.render('login', {title: '登陆', errorMessage: info.message});
    }
    return req.logIn(user, function(err){
      if(err) {
        return res.render('login', {title: '登陆', errorMessage: err.message});
      } else {
        return res.redirect('/project');
      }
    });
  })(req, res, next);
});

/*
router.post('/login', passport.authenticate('local', {
  successRedirect: '/',
  failureRedirect: '/login'
}));
*/

router.get('/register', function(req, res, next) {
  res.render('register', {title: '注册'});
});

router.post('/register', function(req, res, next) {
  var user = req.body;
  var userEmailPromise = null;
  userEmailPromise = new model.User({userEmail: user.userEmail}).fetch();

  return userEmailPromise.then(function(model_fetch) {
    if(model_fetch) {
      res.render('login', {title: '登录', errorMessage: '该邮箱已被注册!'});
    } else {
      var password = user.userPassword;
      var hash = bcrypt.hashSync(password);
      var name = user.userName;
      var tel = user.userTel;
      var address = user.userAddress;

      var registerUser = new model.User({
        userEmail: user.userEmail,
        userPassword: hash,
        userName: user.userName,
        userTel: user.userTel,
        userAddress: user.userAddress
      });

      registerUser.save().then(function(model_fetch){
        res.render('login', {title: '登录'});
      });
    }
  });
});

function isLoggedIn(req, res, next) {
  if(req.isAuthenticated()){
    return next();
  } else {
    res.redirect('/login');
  }
}

module.exports = router;