0.0.10 • Published 10 months ago

@magl88/nestjs-cloudflare-captcha v0.0.10

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

@magl88/NestJS Cloudflare CAPTCHA

This module provides integration with Cloudflare CAPTCHA (also known as Turnstile) for NestJS-based applications.

Installation

To install this module, use npm or yarn:

npm install @magl88/nestjs-cloudflare-captcha
# or
yarn add @magl88/nestjs-cloudflare-captcha

Usage

1. Module Configuration

To use TurnstileModule, you need to import it into your main module and pass the configuration.

Example using synchronous configuration:

import { Module } from '@nestjs/common';
import { TurnstileModule } from '@magl88/nestjs-cloudflare-captcha';

@Module({
  imports: [
    TurnstileModule.forRoot({
      secretKey: process.env.CAPTCHA_SECRET_KEY,
      token: (req) => req.body.captchaToken,
      skipIf: process.env.NODE_ENV === 'development',
    }),
  ],
})
export class AppModule {}

Example using asynchronous configuration:

import { Module } from '@nestjs/common';
import { TurnstileModule } from '@magl88/nestjs-cloudflare-captcha';

@Module({
  imports: [
    TurnstileModule.forRootAsync({
      useFactory: async (configService: ConfigService) => ({
        secretKey: configService.get('CAPTCHA_SECRET_KEY'),
        token: (req) => req.headers['captcha-token'],
        skipIf: configService.get('NODE_ENV') === 'development',
      }),
    }),
  ],
})
export class AppModule {}

2. Protect Routes with CAPTCHA

To protect routes from bots, use Turnstile as a decorator.

Example usage in a controller:

import { Controller, Post } from '@nestjs/common';
import { Turnstile } from '@magl88/nestjs-cloudflare-captcha';

@Controller('auth')
export class AuthController {
  @Post('login')
  @Turnstile()
  async login() {
    return 'This method is protected from bots with CAPTCHA';
  }
}

Support

If you have any questions or issues, feel free to contact the author.

  • Author: TeaCoder
  • Contributors:
    • Vadim Nechaev (help@teacoder.ru)

License

This project is licensed under the MIT License.