aboutsummaryrefslogtreecommitdiffstats
path: root/routes/sessions.js
blob: 5d22e4595f3cab6b298928bfd7d1caff7fc87134 (plain) (blame)
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
(function() {
  module.exports = function(passport) {
    return {
      "new": function(req, res) {
        return res.render('sessions/new', {
          layout: 'layout',
          js: (function() {
            return global.js;
          }),
          css: (function() {
            return global.css;
          })
        });
      },
      create: function(req, res, next) {
        return passport.authenticate('local', function(err, user, info) {
          if (err) {
            return next(err);
          }
          if (!user) {
            return res.render('sessions/new', {
              layout: 'layout',
              js: (function() {
                return global.js;
              }),
              css: (function() {
                return global.css;
              }),
              badpw: true
            });
          }
          req.session.user = user;
          return req.login(user, function(err) {
            var re, url;
            if (err) {
              return next(err);
            }
            re = new RegExp(user.username, 'g');
            if ((req.session.redirect != null) && re.test(req.session.redirect)) {
              url = req.session.redirect;
            }
            if (url == null) {
              url = "/" + user.username;
            }
            delete req.session.redirect;
            return res.redirect(url);
          });
        })(req, res, next);
      },
      destroy: function(req, res) {
        req.logout();
        return res.redirect('/login');
      }
    };
  };

}).call(this);