aboutsummaryrefslogtreecommitdiffstats
path: root/src/passport.coffee
blob: 7fd99668384f1833050ea0647879a18771ef7f1b (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
db = require("redis").createClient()
bcrypt = require('bcryptjs')

passport = require('passport')
LocalStrategy = require('passport-local').Strategy

passport.serializeUser((user, done) ->
  done(null, user.username.toLowerCase())
)

passport.deserializeUser((username, done) ->
  db.hgetall("user:"+username.toLowerCase(), (err, user) ->
    return done(null, user)
  )
)

passport.use(new LocalStrategy(
  (username, password, done) ->
    db.hget("user:"+username.toLowerCase(), 'password', (err, hash) ->
      return done(err) if err
      if hash
        bcrypt.compare(password, hash, (err, match) ->
          if match
            db.hgetall("user:"+username.toLowerCase(), (err, user) ->
              return done(null, user)
            )
          else
            return done(null, false)
        )
      else
        return done(null, false)
    )
))

module.exports = passport