-
Notifications
You must be signed in to change notification settings - Fork 1.5k
/
auth.js
38 lines (36 loc) · 1001 Bytes
/
auth.js
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
/**
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
var passport = require('passport');
var passportJWT = require('passport-jwt');
var users = require('./users.js');
var cfg = require('./config.js');
var ExtractJwt = passportJWT.ExtractJwt;
var Strategy = passportJWT.Strategy;
var params = {
secretOrKey: cfg.jwtSecret,
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken()
};
module.exports = function () {
var strategy = new Strategy(params, function (payload, done) {
var user = users[payload.sub -1 ] || null;
if (user) {
return done(null, {
id: user.id
});
} else {
return done(new Error('User not found'), null);
}
});
passport.use(strategy);
return {
initialize: function () {
return passport.initialize();
},
authenticate: function () {
return passport.authenticate('jwt', cfg.jwtSession);
}
};
};