-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpassport.js
74 lines (67 loc) · 1.77 KB
/
passport.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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
const JwtStrategy = require("passport-jwt").Strategy;
const ExtractJwt = require("passport-jwt").ExtractJwt;
const Visitor = require("./model/Visitor");
const Guide = require("./model/Guide");
const Admin = require("./model/Admin");
const visitor = {};
visitor.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
visitor.secretOrKey = "VISITOR";
const guide = {};
guide.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
guide.secretOrKey = "GUIDE";
const admin = {};
admin.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
admin.secretOrKey = "ADMIN";
module.exports = (passport) => {
passport.use(
"visitor",
new JwtStrategy(visitor, (payload, done) => {
Visitor.findOne({ _id: payload._id })
.then((user) => {
if (!user) {
return done(null, false);
} else {
return done(null, user);
}
})
.catch((error) => {
console.log(error);
return done(error);
});
})
);
passport.use(
"guide",
new JwtStrategy(guide, (payload, done) => {
Guide.findOne({ _id: payload._id })
.then((user) => {
if (!user) {
return done(null, false);
} else {
return done(null, user);
}
})
.catch((error) => {
console.log(error);
return done(error);
});
})
);
passport.use(
"admin",
new JwtStrategy(admin, (payload, done) => {
Admin.findOne({ _id: payload._id })
.then((user) => {
if (!user) {
return done(null, false);
} else {
return done(null, user);
}
})
.catch((error) => {
console.log(error);
return done(error);
});
})
);
};