Новый правила валидации пароля

This commit is contained in:
Web-serfer 2026-05-05 21:03:24 +05:00
parent 691521739c
commit da261fcf9f

View file

@ -2,6 +2,23 @@ import type { APIRoute } from 'astro';
import { pb } from '../../../lib/pb';
import { sendEmail, generateVerifyEmailHtml, getSiteUrl } from '../../../lib/email';
const PASSWORD_MIN_LENGTH = 8;
const PASSWORD_MAX_LENGTH = 12;
const PASSWORD_REGEX = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d_!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]+$/;
function validatePassword(password: string): { valid: boolean; error?: string } {
if (!password || password.length < PASSWORD_MIN_LENGTH) {
return { valid: false, error: 'Пароль должен быть не менее 8 символов' };
}
if (password.length > PASSWORD_MAX_LENGTH) {
return { valid: false, error: 'Пароль не должен превышать 12 символов' };
}
if (!PASSWORD_REGEX.test(password)) {
return { valid: false, error: 'Пароль должен содержать хотя бы одну букву и одну цифру' };
}
return { valid: true };
}
export const POST: APIRoute = async ({ request, redirect }) => {
try {
const data = await request.json();
@ -17,6 +34,14 @@ export const POST: APIRoute = async ({ request, redirect }) => {
}), { status: 400 });
}
const passwordValidation = validatePassword(password);
if (!passwordValidation.valid) {
return new Response(JSON.stringify({
success: false,
error: passwordValidation.error
}), { status: 400 });
}
// Создаём пользователя
const record = await pb.collection('users').create({
firstName,