fix: harden email validation and CI permissions

This commit is contained in:
yusufipk
2026-06-14 16:59:09 +02:00
parent 56fb7403cf
commit 9613c4f2c6
7 changed files with 49 additions and 21 deletions
+3 -3
View File
@@ -16,6 +16,7 @@ import {
isEmailVerificationEnabled,
sendVerificationEmail,
} from '@/lib/email-verification';
import { isValidEmailAddress, normalizeEmail } from '@/lib/email-validation';
export async function POST(request: NextRequest) {
try {
@@ -39,11 +40,10 @@ export async function POST(request: NextRequest) {
if (!email || typeof email !== 'string') {
return apiErrors.badRequest('Email is required');
}
const normalizedEmail = email.toLowerCase().trim();
const normalizedEmail = normalizeEmail(email);
// Basic email validation
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(normalizedEmail)) {
if (!isValidEmailAddress(normalizedEmail)) {
return apiErrors.validationError('Invalid email format');
}
+4 -4
View File
@@ -8,6 +8,7 @@ import {
sendVerificationEmail,
} from '@/lib/email-verification';
import { logError } from '@/lib/logger';
import { isValidEmailAddress, normalizeEmail } from '@/lib/email-validation';
export async function POST(request: NextRequest) {
try {
@@ -28,14 +29,13 @@ export async function POST(request: NextRequest) {
const body = await request.json();
const { email } = body;
if (!email || typeof email !== 'string' || email.length > 254 || !email.includes('@')) {
if (!email || typeof email !== 'string') {
return apiErrors.badRequest('Valid email is required');
}
const normalizedEmail = email.toLowerCase().trim();
const normalizedEmail = normalizeEmail(email);
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(normalizedEmail)) {
if (!isValidEmailAddress(normalizedEmail)) {
return apiErrors.badRequest('Valid email is required');
}