UNPKG

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
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 };