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