You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					163 lines
				
				5.5 KiB
			
		
		
			
		
	
	
					163 lines
				
				5.5 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								import {
							 | 
						||
| 
								 | 
							
								  DecoderOptions,
							 | 
						||
| 
								 | 
							
								  JwtHeader,
							 | 
						||
| 
								 | 
							
								  KeyFetcher,
							 | 
						||
| 
								 | 
							
								  SignerCallback,
							 | 
						||
| 
								 | 
							
								  SignerOptions,
							 | 
						||
| 
								 | 
							
								  VerifierCallback,
							 | 
						||
| 
								 | 
							
								  VerifierOptions
							 | 
						||
| 
								 | 
							
								} from 'fast-jwt'
							 | 
						||
| 
								 | 
							
								import * as fastify from 'fastify'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * for declaration merging
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 * declare module 'fastify-jwt' {
							 | 
						||
| 
								 | 
							
								 *   interface FastifyJWT {
							 | 
						||
| 
								 | 
							
								 *     payload: { name: string; email: string }
							 | 
						||
| 
								 | 
							
								 *   }
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 * // With `formatUser`.
							 | 
						||
| 
								 | 
							
								 * declare module 'fastify-jwt' {
							 | 
						||
| 
								 | 
							
								 *   interface FastifyJWT {
							 | 
						||
| 
								 | 
							
								 *     payload: { Name: string; e_mail: string }
							 | 
						||
| 
								 | 
							
								 *     user: { name: string; email: string }
							 | 
						||
| 
								 | 
							
								 *   }
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export interface FastifyJWT {
							 | 
						||
| 
								 | 
							
								  // payload: ...
							 | 
						||
| 
								 | 
							
								  // user: ...
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export type SignPayloadType = FastifyJWT extends { payload: infer T }
							 | 
						||
| 
								 | 
							
								  ? T extends string | object | Buffer
							 | 
						||
| 
								 | 
							
								    ? T
							 | 
						||
| 
								 | 
							
								    : string | object | Buffer
							 | 
						||
| 
								 | 
							
								  : string | object | Buffer
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export type UserType = FastifyJWT extends { user: infer T }
							 | 
						||
| 
								 | 
							
								  ? T
							 | 
						||
| 
								 | 
							
								  : SignPayloadType
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export type TokenOrHeader = JwtHeader | { header: JwtHeader; payload: any }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export type Secret = string | Buffer | KeyFetcher
							 | 
						||
| 
								 | 
							
								| ((request: fastify.FastifyRequest, tokenOrHeader: TokenOrHeader, cb: (e: Error | null, secret: string | Buffer | undefined) => void) => void)
							 | 
						||
| 
								 | 
							
								| ((request: fastify.FastifyRequest, tokenOrHeader: TokenOrHeader) => Promise<string | Buffer>)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export type VerifyPayloadType = object | string
							 | 
						||
| 
								 | 
							
								export type DecodePayloadType = object | string
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export interface DecodeCallback<Decoded extends DecodePayloadType> {
							 | 
						||
| 
								 | 
							
								  (err: Error, decoded: Decoded): void
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export interface SignOptions extends Omit<SignerOptions, "expiresIn" | "notBefore"> {
							 | 
						||
| 
								 | 
							
								  expiresIn: number | string;
							 | 
						||
| 
								 | 
							
								  notBefore: number | string;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export interface VerifyOptions extends Omit<VerifierOptions, "maxAge"> {
							 | 
						||
| 
								 | 
							
								  maxAge: number | string;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export interface FastifyJWTOptions {
							 | 
						||
| 
								 | 
							
								  secret: Secret | { public: Secret; private: Secret }
							 | 
						||
| 
								 | 
							
								  decode?: Partial<DecoderOptions>
							 | 
						||
| 
								 | 
							
								  sign?: Partial<SignOptions>
							 | 
						||
| 
								 | 
							
								  verify?: Partial<VerifyOptions> & { extractToken?: (request: fastify.FastifyRequest) => string | void }
							 | 
						||
| 
								 | 
							
								  cookie?: {
							 | 
						||
| 
								 | 
							
								    cookieName: string,
							 | 
						||
| 
								 | 
							
								    signed: boolean
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  messages?: {
							 | 
						||
| 
								 | 
							
								    badRequestErrorMessage?: string
							 | 
						||
| 
								 | 
							
								    badCookieRequestErrorMessage?: string
							 | 
						||
| 
								 | 
							
								    noAuthorizationInHeaderMessage?: string
							 | 
						||
| 
								 | 
							
								    noAuthorizationInCookieMessage?: string
							 | 
						||
| 
								 | 
							
								    authorizationTokenExpiredMessage?: string
							 | 
						||
| 
								 | 
							
								    authorizationTokenInvalid?: ((err: Error) => string) | string
							 | 
						||
| 
								 | 
							
								    authorizationTokenUntrusted?: string
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  trusted?: (request: fastify.FastifyRequest, decodedToken: { [k: string]: any }) => boolean | Promise<boolean> | SignPayloadType | Promise<SignPayloadType>
							 | 
						||
| 
								 | 
							
								  formatUser?: (payload: SignPayloadType) => UserType,
							 | 
						||
| 
								 | 
							
								  jwtDecode?: boolean | string
							 | 
						||
| 
								 | 
							
								  namespace?: string
							 | 
						||
| 
								 | 
							
								  jwtVerify?: string
							 | 
						||
| 
								 | 
							
								  jwtSign?: string
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export interface JWT {
							 | 
						||
| 
								 | 
							
								  options: {
							 | 
						||
| 
								 | 
							
								    decode: Partial<DecoderOptions>
							 | 
						||
| 
								 | 
							
								    sign: Partial<SignOptions>
							 | 
						||
| 
								 | 
							
								    verify: Partial<VerifyOptions>
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  cookie?: {
							 | 
						||
| 
								 | 
							
								    cookieName: string,
							 | 
						||
| 
								 | 
							
								    signed: boolean
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  sign(payload: SignPayloadType, options?: Partial<SignOptions>): string
							 | 
						||
| 
								 | 
							
								  sign(payload: SignPayloadType, callback: SignerCallback): void
							 | 
						||
| 
								 | 
							
								  sign(payload: SignPayloadType, options: Partial<SignOptions>, callback: SignerCallback): void
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  verify<Decoded extends VerifyPayloadType>(token: string, options?: Partial<VerifyOptions>): Decoded
							 | 
						||
| 
								 | 
							
								  verify<Decoded extends VerifyPayloadType>(token: string, callback: VerifierCallback): void
							 | 
						||
| 
								 | 
							
								  verify<Decoded extends VerifyPayloadType>(token: string, options: Partial<VerifyOptions>, callback: VerifierCallback): void
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  decode<Decoded extends DecodePayloadType>(token: string, options?: Partial<DecoderOptions>): null | Decoded
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export type { JwtHeader } from 'fast-jwt'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export const fastifyJwt: fastify.FastifyPluginCallback<FastifyJWTOptions>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export default fastifyJwt
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export interface FastifyJwtSignOptions {
							 | 
						||
| 
								 | 
							
								  sign?: Partial<SignOptions>
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export interface FastifyJwtVerifyOptions {
							 | 
						||
| 
								 | 
							
								  decode: Partial<DecoderOptions>
							 | 
						||
| 
								 | 
							
								  verify: Partial<VerifyOptions>
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export interface FastifyJwtDecodeOptions {
							 | 
						||
| 
								 | 
							
								  decode: Partial<DecoderOptions>
							 | 
						||
| 
								 | 
							
								  verify: Partial<VerifyOptions>
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								declare module 'fastify' {
							 | 
						||
| 
								 | 
							
								  interface FastifyInstance {
							 | 
						||
| 
								 | 
							
								    jwt: JWT
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  interface FastifyReply {
							 | 
						||
| 
								 | 
							
								    jwtSign(payload: SignPayloadType, options?: FastifyJwtSignOptions): Promise<string>
							 | 
						||
| 
								 | 
							
								    jwtSign(payload: SignPayloadType, callback: SignerCallback): void
							 | 
						||
| 
								 | 
							
								    jwtSign(payload: SignPayloadType, options: FastifyJwtSignOptions, callback: SignerCallback): void
							 | 
						||
| 
								 | 
							
								    jwtSign(payload: SignPayloadType, options?: Partial<SignOptions>): Promise<string>
							 | 
						||
| 
								 | 
							
								    jwtSign(payload: SignPayloadType, options: Partial<SignOptions>, callback: SignerCallback): void
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  interface FastifyRequest {
							 | 
						||
| 
								 | 
							
								    jwtVerify<Decoded extends VerifyPayloadType>(options?: FastifyJwtVerifyOptions): Promise<Decoded>
							 | 
						||
| 
								 | 
							
								    jwtVerify<Decoded extends VerifyPayloadType>(callback: VerifierCallback): void
							 | 
						||
| 
								 | 
							
								    jwtVerify<Decoded extends VerifyPayloadType>(options: FastifyJwtVerifyOptions, callback: VerifierCallback): void
							 | 
						||
| 
								 | 
							
								    jwtVerify<Decoded extends VerifyPayloadType>(options?: Partial<VerifyOptions>): Promise<Decoded>
							 | 
						||
| 
								 | 
							
								    jwtVerify<Decoded extends VerifyPayloadType>(options: Partial<VerifyOptions>, callback: VerifierCallback): void
							 | 
						||
| 
								 | 
							
								    jwtDecode<Decoded extends DecodePayloadType>(options?: FastifyJwtDecodeOptions): Promise<Decoded>
							 | 
						||
| 
								 | 
							
								    jwtDecode<Decoded extends DecodePayloadType>(callback: DecodeCallback<Decoded>): void
							 | 
						||
| 
								 | 
							
								    jwtDecode<Decoded extends DecodePayloadType>(options: FastifyJwtDecodeOptions, callback: DecodeCallback<Decoded>): void
							 | 
						||
| 
								 | 
							
								    user: UserType
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |