@harmonyjs/controller-auth-jwt
Version:
Authentication controller for Harmony using JWT
40 lines (39 loc) • 1.32 kB
TypeScript
import { FastifyRequest } from 'fastify';
import 'fastify-cookie';
import { CookieSerializeOptions } from 'cookie';
import * as jwt from 'jsonwebtoken';
import { Controller } from '@harmonyjs/types-server';
declare module 'fastify' {
interface FastifyInstance {
jwtAuthenticate: {
block: (request: FastifyRequest, reply: FastifyReply<any>) => Promise<void>;
try: (request: FastifyRequest) => Promise<void>;
};
}
}
declare type AuthenticationJWTConfig = {
secret?: jwt.Secret | {
public: jwt.Secret;
private: jwt.Secret;
};
cookie?: {
cookieName: string;
} & CookieSerializeOptions;
decode?: jwt.DecodeOptions;
sign?: jwt.SignOptions;
verify?: jwt.VerifyOptions;
messages?: {
badRequestErrorMessage?: string;
noAuthorizationInHeaderMessage?: string;
authorizationTokenExpiredMessage?: string;
authorizationTokenInvalid?: ((err: Error) => string) | string;
authorizationTokenUntrusted?: string;
};
trusted?: (request: FastifyRequest, decodedToken: {
[k: string]: any;
}) => boolean | Promise<boolean>;
};
declare const ControllerAuthenticationJWT: Controller<AuthenticationJWTConfig> & {
validator: string;
};
export default ControllerAuthenticationJWT;