24 lines
787 B
TypeScript
24 lines
787 B
TypeScript
import passport from 'koa-passport';
|
|
import { Types } from 'mongoose';
|
|
|
|
import { AuthDocument } from '@mifi/auth-db/lib/schema/auth';
|
|
import { readOneByRecord } from '@mifi/auth-db/lib/dao/readOneByRecord';
|
|
import { readOneById } from '@mifi/auth-db/lib/dao/readOneById';
|
|
|
|
import LocalStrategy from './strategies/local';
|
|
import JwtStrategy from './strategies/jwt';
|
|
|
|
passport.use(LocalStrategy);
|
|
passport.use(JwtStrategy);
|
|
|
|
passport.serializeUser((user, done) => {
|
|
done(null, (user as AuthDocument).record || (user as AuthDocument).id);
|
|
});
|
|
|
|
passport.deserializeUser(async (id, done) => {
|
|
const user = await readOneByRecord(<Types.ObjectId>id).catch(async () => await readOneById(<Types.ObjectId>id));
|
|
done(user ? null : 'user not found', user);
|
|
});
|
|
|
|
export default passport;
|