Files
recipe-manager/server/loaders/passport.ts
2023-02-11 16:25:30 -06:00

37 lines
931 B
TypeScript

import passport from "passport";
import { Express } from "express";
import { ExtractJwt, Strategy as JwtStrategy } from "passport-jwt";
export const passportLoader = async (app: Express) => {
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser((user: Express.User, done) => {
process.nextTick(() => {
done(null, user);
})
})
passport.deserializeUser((user: Express.User, done) => {
process.nextTick(() => {
done(null, user);
})
})
// config for jwt strategy
let opts = {
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey: 'secret'
}
// jwt strategy
passport.use(new JwtStrategy(opts, async (token, done) => {
try {
return done(null, token.user);
} catch (error) {
done(error);
}
}))
return passport;
}