aboutsummaryrefslogtreecommitdiffstats
path: root/lib/passport.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2020-03-11 15:10:40 -0700
committerAdam Soltys <[email protected]>2020-03-11 15:10:40 -0700
commitc0888fab024cc9f7c99812bfabf9d7774312dbf7 (patch)
treecad95683af97432f6092a2c2bae10fbb7a588db5 /lib/passport.js
parentbf2b51f0c2ae9b8f0f330dde6411e45fc0da8a25 (diff)
downloadcoinos-server-c0888fab024cc9f7c99812bfabf9d7774312dbf7.tar.gz
coinos-server-c0888fab024cc9f7c99812bfabf9d7774312dbf7.zip
refactor
Diffstat (limited to 'lib/passport.js')
-rw-r--r--lib/passport.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/passport.js b/lib/passport.js
new file mode 100644
index 00000000..1e4fd8b8
--- /dev/null
+++ b/lib/passport.js
@@ -0,0 +1,36 @@
+const Passport = require("passport");
+const jwt = require("passport-jwt");
+
+function cookieExtractor(req) {
+ if (req && req.cookies) return req.cookies["token"];
+ return null;
+}
+
+passport = Passport.use(
+ new jwt.Strategy(
+ {
+ jwtFromRequest: jwt.ExtractJwt.fromExtractors([
+ jwt.ExtractJwt.fromAuthHeaderAsBearerToken(),
+ cookieExtractor
+ ]),
+ secretOrKey: config.jwt
+ },
+ async (payload, next) => {
+ try {
+ let user = await db.User.findOne({
+ where: {
+ username: payload.username
+ }
+ });
+ next(null, user);
+ } catch (e) {
+ l.error("error finding user for session", e);
+ next(null, { username: "guest" });
+ }
+ }
+ )
+);
+
+auth = passport.authenticate("jwt", { session: false });
+app.use(passport.initialize());
+