LocalStrategy = require('passport-local').Strategy
class AccountResource extends N '_account', {abstract: true}
@userField =
usernameField: 'username'
passwordField: 'password'
@_InitPassport = ->
N.passport.serializeUser (user, done) ~>
done null, user.id
N.passport.deserializeUser (id, done) ~>
@Fetch id, (err, user) ->
return done null, false if err? and err.status is 'not_found'
return done 'Error deserialize user', null if err?
done null, user
N.passport.use new LocalStrategy @userField, (username, password, done) ~>
constraints = {}
constraints[@userField.usernameField] = username
@Fetch constraints, (err, user) ~>