"use client"; import "./SignUpForm.scss"; import { useState } from "react"; import AuthInput from "@/features/AuthInput/AuthInput"; import Loader from "@/shared/ui/components/Loader/Loader"; import GoogleButton from "@/features/GoogleButton/GoogleButton"; import { apiInstance } from "@/shared/config/apiConfig"; import { AxiosError } from "axios"; import { Link, useRouter } from "@/shared/config/navigation"; import check from "./icons/check.svg"; import Image from "next/image"; const SignUpForm = () => { const [checkbox, setCheckbox] = useState(false); const [emailWarning, setEmailWarning] = useState(""); const [passwordWarning, setPasswordWarning] = useState(""); const [passwordConfirmWarning, setPasswordConfirmWarning] = useState(""); const [error, setError] = useState(""); const [loader, setLoader] = useState(false); const router = useRouter(); const handleSubmit: React.MouseEventHandler< HTMLFormElement > = async (e) => { e.preventDefault(); const formData = new FormData(e.currentTarget); const regex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])/; if (!formData.get("email")?.toString()) { setError(""); setPasswordWarning(""); setPasswordConfirmWarning(""); setEmailWarning("Заполните поле Email"); return; } if (!formData.get("password")?.toString()) { setError(""); setEmailWarning(""); setPasswordConfirmWarning(""); setPasswordWarning("Заполните поле Пароль"); return; } if ((formData.get("password")?.toString().length as number) < 8) { setError(""); setEmailWarning(""); setPasswordConfirmWarning(""); setPasswordWarning( "Пароль должен содержать минимум 8 символов" ); return; } if (!regex.test(formData.get("password")?.toString() as string)) { setError(""); setEmailWarning(""); setPasswordConfirmWarning(""); setPasswordWarning( "Пароль должен содержать по меньшей мере 1 прописную букву, одну заглавную букву и одну цифру" ); return; } if (!formData.get("password2")?.toString()) { setError(""); setEmailWarning(""); setPasswordWarning(""); setPasswordConfirmWarning("Заполните поле потверждения"); return; } if ( formData.get("password")?.toString() !== formData.get("password2")?.toString() ) { setError(""); setEmailWarning(""); setPasswordWarning(""); setPasswordConfirmWarning("Пароли не совпадают"); return; } if (!checkbox) { setEmailWarning(""); setPasswordWarning(""); setPasswordConfirmWarning(""); setError("Необходимо принять политику конфиденциальности"); return; } try { setError(""); setEmailWarning(""); setPasswordWarning(""); setPasswordConfirmWarning(""); setLoader(true); const res = await apiInstance.post( "/users/register/", formData ); if ([200, 201].includes(res.status)) { router.push( `/sign-up/confirm-email/?email=${formData.get("email")}` ); } } catch (error: unknown) { if (error instanceof AxiosError) { if ([401, 400].includes(error.response?.status as number)) { setError("Такой пользователь уже существует"); } else if ( error.response?.status.toString().slice(0, 1) === "5" ) { setError("Ошибка на стороне сервера"); } } else { setError("Непредвиденная ошибка"); } } finally { setLoader(false); } }; return (
{error ?

{error}

: null}

Я ознакомлен(-а) с{" "} Политикой конфиденциальности

); }; export default SignUpForm;