Merge pull request #14079 from enaeseth/passport-serialize-user-fix

[passport] Fix serializeUser and deserializeUser
This commit is contained in:
Arthur Ozga
2017-02-08 17:12:03 -08:00
committed by GitHub
2 changed files with 28 additions and 6 deletions
+2 -2
View File
@@ -55,8 +55,8 @@ declare module 'passport' {
authenticate(strategy: string|string[], options: AuthenticateOptions, callback?: Function): express.Handler;
authorize(strategy: string|string[], callback?: Function): express.Handler;
authorize(strategy: string|string[], options: any, callback?: Function): express.Handler;
serializeUser<TUser, TID>(fn: (user: TUser, done: (err: any, id: TID) => void) => void): void;
deserializeUser<TUser, TID>(fn: (id: TID, done: (err: any, user: TUser) => void) => void): void;
serializeUser<TUser, TID>(fn: (user: TUser, done: (err: any, id?: TID) => void) => void): void;
deserializeUser<TUser, TID>(fn: (id: TID, done: (err: any, user?: TUser) => void) => void): void;
transformAuthInfo(fn: (info: any, done: (err: any, info: any) => void) => void): void;
}
+26 -4
View File
@@ -25,10 +25,32 @@ const newFramework:passport.Framework = {
};
passport.use(new TestStrategy());
passport.framework(newFramework);
passport.serializeUser((user, done) => { });
passport.serializeUser<string, number>((user, done) => { });
passport.deserializeUser((id, done) => { });
passport.deserializeUser<string, number>((id, done) => { });
interface TestUser {
id: number;
}
passport.serializeUser((user: TestUser, done: (err: any, id?: number) => void) => {
done(null, user.id);
});
passport.serializeUser<TestUser, number>((user, done) => {
if (user.id > 0) {
done(null, user.id);
} else {
done(new Error('user ID is invalid'));
}
});
passport.deserializeUser((id, done) => {
done(null, {id});
});
passport.deserializeUser<TestUser, number>((id, done) => {
const fetchUser = (id: number): Promise<TestUser> => {
return Promise.reject(new Error(`user not found: ${id}`));
};
fetchUser(id)
.then((user) => done(null, user))
.catch((err) => done(err));
});
passport.use(new TestStrategy())
.unuse('test')