passport-magic-code
Version:
A passwordless passport strategy to send a magic code (One time password) to let the user authenticate themselves.
59 lines (54 loc) • 2.34 kB
TypeScript
import { Request } from 'express';
import PassportStrategy from 'passport-strategy';
import z from 'zod';
declare const TokenSchema: z.ZodObject<{
expiresIn: z.ZodNumber;
user: z.ZodAny;
}, z.core.$strip>;
declare const OptionsSchema: z.ZodObject<{
action: z.ZodEnum<{
callback: "callback";
login: "login";
register: "register";
}>;
}, z.core.$strip>;
type Token = z.infer<typeof TokenSchema>;
declare const _ArgsSchema: z.ZodObject<{
secret: z.ZodNonOptional<z.ZodString>;
codeLength: z.ZodDefault<z.ZodNumber>;
storage: z.ZodDefault<z.ZodObject<{
set: z.ZodCustom<(key: string, value: Token) => Promise<void | any>, (key: string, value: Token) => Promise<void | any>>;
get: z.ZodCustom<(key: string) => Promise<Token | undefined>, (key: string) => Promise<Token | undefined>>;
delete: z.ZodCustom<(key: string) => Promise<void | any>, (key: string) => Promise<void | any>>;
codes: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
expiresIn: z.ZodNumber;
user: z.ZodAny;
}, z.core.$strip>>>;
}, z.core.$strip>>;
expiresIn: z.ZodDefault<z.ZodNumber>;
codeField: z.ZodDefault<z.ZodString>;
userPrimaryKey: z.ZodDefault<z.ZodString>;
}, z.core.$strip>;
type Args = z.output<typeof _ArgsSchema> & {
storage: MemoryStorage;
};
type SendCodeFunction = (user: any, expiresIn: number, options: Options) => any | Promise<any>;
type CallbackFunction = (user: any, options: Options) => any | Promise<any>;
type Options = z.infer<typeof OptionsSchema>;
type MemoryStorage = {
set: (key: string, value: Token) => Promise<void | any>;
get: (key: string) => Promise<Token | undefined>;
delete: (key: string) => Promise<void | any>;
codes: Record<string, z.infer<Token>>;
};
declare class MagicCodeStrategy extends PassportStrategy.Strategy {
name: string;
args: Args;
sendCode: SendCodeFunction;
callback: CallbackFunction;
constructor(args: Args, sendCode: SendCodeFunction, callback: CallbackFunction);
authenticate(req: Request, options: Options): Promise<any>;
requestCode(req: Request, options: Options): Promise<any>;
acceptCode(req: Request, options: Options): Promise<void>;
}
export { type Options as AuthenticationOptions, MagicCodeStrategy as Strategy };