mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2025-12-18 20:04:17 +01:00
51 lines
1.5 KiB
TypeScript
51 lines
1.5 KiB
TypeScript
import * as User from "./user/user-controller";
|
|
|
|
import { Strategy as LocalStrategy} from "passport-local";
|
|
import { HeaderAPIKeyStrategy as HeaderAPIKeyStrategy } from "passport-headerapikey";
|
|
|
|
export function initialize(passport: typeof import("passport")) {
|
|
passport.use("local", new LocalStrategy(
|
|
function(username, password, done) {
|
|
User.findOne({ username: username }, async function (err, user) {
|
|
if (err) {
|
|
return done(err, false);
|
|
}
|
|
if (!user) {
|
|
return done(null, false);
|
|
}
|
|
if (!await User.verifyPassword(user, password)) {
|
|
return done(null, false);
|
|
}
|
|
return done(null, user);
|
|
});
|
|
}
|
|
));
|
|
|
|
passport.use(new HeaderAPIKeyStrategy(
|
|
{ header: 'Authorization', prefix: 'Bearer ' },
|
|
false,
|
|
function(apikey, done) {
|
|
User.findOne({ apikey: apikey }, function (err, user) {
|
|
if (err) {
|
|
return done(err);
|
|
}
|
|
if (!user) {
|
|
return done(null, false);
|
|
}
|
|
return done(null, user);
|
|
});
|
|
}
|
|
));
|
|
|
|
passport.serializeUser((user, done) => {
|
|
done(null, user.id)
|
|
});
|
|
|
|
passport.deserializeUser((id: number, done) => {
|
|
User.findOne({id: id}, function (err, user) {
|
|
done(err, user);
|
|
});
|
|
});
|
|
}
|
|
|