aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/sessions.coffee
blob: 5b1d9f06078c3c407c71f4811e69c53924ef4cd3 (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
module.exports = (passport) ->
  new: (req, res) ->
    res.render('sessions/new', 
      layout: 'layout',
      js: (-> global.js), 
      css: (-> global.css)
    )

  create: (req, res, next) ->
    passport.authenticate('local', (err, user, info) ->
      if (err)
        return next(err)
      if (!user) 
        return res.render('sessions/new', 
          layout: 'layout',  
          js: (-> global.js), 
          css: (-> global.css),
          badpw: true
        )
      req.login(user, (err) ->
        if (err) 
          return next(err)

        re = new RegExp(user.username, 'g')
        if req.session.redirect? and re.test(req.session.redirect)
          url = req.session.redirect 

        url ?= "/#{user.username}"
        delete req.session.redirect
        return res.redirect(url)
      )
    )(req, res, next)

  destroy: (req, res) ->
    req.logout()
    res.redirect('/login')