UNPKG

@piggly/fastify-chassis

Version:

An ESM/CommonJS toolkit to help you to do common operations in your back-end applications with Fastify and NodeJS.

144 lines (143 loc) 4.08 kB
import type { FastifyRequest, FastifyReply } from 'fastify'; import type { CookieBuilderService, CookieOptions } from '../services/CookieBuilderService.js'; /** * @file CSRF token service. * @copyright Piggly Lab 2025 * @since 7.0.0 * @author Caique Araujo <caique@piggly.com.br> */ export declare class CSRFTokenService { /** * Cookie. * * @type {CookieBuilderService} * @protected * @memberof CSRFTokenService * @since 7.0.0 * @author Caique Araujo <caique@piggly.com.br> */ protected _cookie: CookieBuilderService; /** * Secret. * * @type {string} * @protected * @memberof CSRFTokenService * @since 7.0.0 * @author Caique Araujo <caique@piggly.com.br> */ protected _secret: string; /** * Constructor. * * @param {CookieBuilderService} cookie * @param {string} secret * @memberof CSRFTokenService * @since 7.0.0 * @author Caique Araujo <caique@piggly.com.br> */ constructor(cookie: CookieBuilderService, secret: string); /** * Set the CSRF token as a cookie. * * @param {FastifyReply} reply * @param {string} name * @param {CookieOptions} options * @returns {FastifyReply} * @memberof CSRFTokenService * @since 7.0.0 * @author Caique Araujo <caique@piggly.com.br> */ asCookie<T extends FastifyReply>(reply: T, name?: string, options?: CookieOptions): T; /** * Set the CSRF token as a header. * * @param {FastifyReply} reply * @param {string} header * @returns {FastifyReply} * @memberof CSRFTokenService * @since 7.0.0 * @author Caique Araujo <caique@piggly.com.br> */ asHeader<T extends FastifyReply>(reply: T, header?: string): T; /** * Generate a CSRF token. * * It will be generated following the format: * <token>.<signature> * * @returns {string} * @memberof CSRFTokenService * @since 7.0.0 * @author Caique Araujo <caique@piggly.com.br> */ asRaw(): string; /** * Verify a CSRF token. * * @param {string} token * @returns {boolean} * @memberof CSRFTokenService * @since 7.0.0 * @author Caique Araujo <caique@piggly.com.br> */ verify(token?: string): boolean; /** * Verify a CSRF token from a cookie. * * @param {FastifyRequest} request * @param {string} cookie * @returns {boolean} * @memberof CSRFTokenService * @since 7.0.0 * @author Caique Araujo <caique@piggly.com.br> */ verifyCookie<T extends FastifyRequest>(request: T, cookie?: string): boolean; /** * Verify a CSRF token from a header. * * @param {FastifyRequest} request * @param {string} header * @returns {boolean} * @memberof CSRFTokenService * @since 7.0.0 * @author Caique Araujo <caique@piggly.com.br> */ verifyHeader<T extends FastifyRequest>(request: T, header?: string): boolean; /** * Random generates a client secret. * * @param {number} [size=36] * @public * @static * @memberof CSRFTokenService * @since 7.6.0 * @author Caique Araujo <caique@piggly.com.br> */ protected static generateClientSecret(size?: number): string; /** * Sign a string with a specific key HMAC sha256. * * @param {string} data * @param {string} key * @public * @static * @memberof CSRFTokenService * @since 7.6.0 * @author Caique Araujo <caique@piggly.com.br> */ protected static sign(data: string, key: string): string; /** * Verify a string with a specific key HMAC sha256. * * @param {string} data * @param {string} key * @param {string} signature * @public * @static * @memberof CSRFTokenService * @since 7.6.0 * @author Caique Araujo <caique@piggly.com.br> */ protected static verify(data: string, signature: string, key: string, onError?: (err: any) => void): boolean; }