Files
KalBot/app/api/captcha/route.js

31 lines
899 B
JavaScript

import captcha from 'trek-captcha';
import { NextResponse } from 'next/server';
import crypto from 'crypto';
export const dynamic = 'force-dynamic';
export async function GET() {
// Generate a 4-character alphanumeric captcha
const { token, buffer } = await captcha({ size: 4, style: -1 });
const text = token.toLowerCase();
const secret = process.env.CAPTCHA_SECRET || 'dev_secret_meow';
const hash = crypto.createHmac('sha256', secret).update(text).digest('hex');
const response = new NextResponse(buffer, {
headers: {
'Content-Type': 'image/gif',
'Cache-Control': 'no-store, max-age=0'
}
});
// Store the expected hash in an HttpOnly cookie
response.cookies.set('captcha_hash', hash, {
httpOnly: true,
path: '/',
maxAge: 300 // 5 minutes validity
});
return response;
}