Новый правила валидации пароля
This commit is contained in:
parent
691521739c
commit
da261fcf9f
1 changed files with 25 additions and 0 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue