From 695cc690d98e32092db532c38a818065c6212f1e Mon Sep 17 00:00:00 2001 From: Ivan Date: Sun, 14 Apr 2024 15:01:04 +0300 Subject: [PATCH] registration fix --- src/App.jsx | 112 ++++++++++--------- src/components/NavBar.jsx | 83 +++++++------- src/hooks/validation/enterAccountValidate.js | 59 +++++----- src/pages/EnterAccount.jsx | 30 +++-- 4 files changed, 144 insertions(+), 140 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 6a2e781..8365017 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -3,13 +3,13 @@ import { Outlet, useNavigate } from "react-router-dom"; import { FormsData, UserData, TypeAnswerData, answersData } from "./context"; import { useCookies } from "react-cookie"; import { globalRender } from "./router/protectedRouting.js"; -import { verifyUserApi } from "./hooks/api/enterAccountApi.js" -import classes from "./assets/styles/app.module.scss" +import { verifyUserApi } from "./hooks/api/enterAccountApi.js"; +import classes from "./assets/styles/app.module.scss"; import NavBar from "./components/NavBar.jsx"; -import 'bootstrap/dist/css/bootstrap.min.css'; +import "bootstrap/dist/css/bootstrap.min.css"; import InputText from "./components/typeAnswer/InputText.jsx"; import TextArea from "./components/typeAnswer/TextArea.jsx"; -import YesNo from "./components/typeAnswer/YesNo.jsx" +import YesNo from "./components/typeAnswer/YesNo.jsx"; import InputDate from "./components/typeAnswer/InputDate.jsx"; import InputMultipleRadio from "./components/typeAnswer/InputMultipleRadio.jsx"; import InputRadio from "./components/typeAnswer/InputRadio.jsx"; @@ -17,61 +17,63 @@ import DropDownList from "./components/typeAnswer/DropDownList.jsx"; import InputFile from "./components/typeAnswer/InputFile.jsx"; const App = () => { - const navigate = useNavigate(); - const [forms, setForms] = useState([]); - const [user, setUser] = useState(false); - const [answersList, setAnswersList] = useState([]); - const [listTypeAnswer, setListTypeAnswer] = useState([ - {id: 1, text: 'Краткий ответ', typeTag: InputText}, - {id: 2, text: 'Расширенный ответ', typeTag: TextArea}, - {id: 3, text: 'Выбор из вариантов', typeTag: InputRadio}, - {id: 4, text: 'Множественный выбор', typeTag: InputMultipleRadio}, - {id: 5, text: 'Выпадающий список', typeTag: DropDownList}, - {id: 6, text: 'Да/Нет', typeTag: YesNo}, - {id: 7, text: 'Файл', typeTag: InputFile}, - {id: 8, text: 'Дата', typeTag: InputDate} - ]); + const navigate = useNavigate(); + const [forms, setForms] = useState([]); + const [user, setUser] = useState(false); + const [answersList, setAnswersList] = useState([]); + const [listTypeAnswer, setListTypeAnswer] = useState([ + { id: 1, text: "Краткий ответ", typeTag: InputText }, + { id: 2, text: "Расширенный ответ", typeTag: TextArea }, + { id: 3, text: "Выбор из вариантов", typeTag: InputRadio }, + { id: 4, text: "Множественный выбор", typeTag: InputMultipleRadio }, + { id: 5, text: "Выпадающий список", typeTag: DropDownList }, + { id: 6, text: "Да/Нет", typeTag: YesNo }, + { id: 7, text: "Файл", typeTag: InputFile }, + { id: 8, text: "Дата", typeTag: InputDate }, + ]); - // useEffect(() => globalRender(window.location.pathname, user, navigate)); - const [cookies, _, __] = useCookies(["user"]); + // useEffect(() => globalRender(window.location.pathname, user, navigate)); + const [cookies, _, __] = useCookies(["user"]); - useEffect(() => { - async function verifyUser() { - const response = await verifyUserApi(cookies.token); + useEffect(() => { + async function verifyUser() { + const response = await verifyUserApi(cookies.token); + console.log("app", user); - if (response) { - if (response.status === 200) { - setUser(response.data); - } - else { - console.log(response) - } - } + if (response) { + if (response.status === 200) { + setUser(response.data); + } else { + console.log(response); } + } + } - verifyUser(); - }, []) + verifyUser(); + }, []); - return ( - - - - -
-
-
- -
-
- -
-
-
-
-
-
-
- ) -} + return ( + + + + +
+
+
+ +
+
+ +
+
+
+
+
+
+
+ ); +}; -export default App; \ No newline at end of file +export default App; diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index 462cc52..da19eaa 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -3,49 +3,46 @@ import { useCookies } from "react-cookie"; import classes from "../assets/styles/components/navbar.module.scss"; import { verifyUserApi } from "../hooks/api/enterAccountApi"; -const NavBar = ({navigate, auth, setAuth}) => { - // const [cookies, _, __] = useCookies(["user"]); +const NavBar = ({ navigate, auth, setAuth }) => { + useEffect(() => { + console.log("nav", auth); + }); - // useEffect(() => { - // async function verifyUser() { - // const response = await verifyUserApi(cookies.token); - - // if (response) { - // if (response.status === 200) { - // setAuth(response.data); - // } - // else { - // console.log(response) - // } - // } - // } - - // verifyUser() - // }, []); - - return ( -
-
-
-
- navigate("/")}>Главная - {auth ? - auth.is_admin ? navigate("/forms")}>Мои формы : : - } -
-
-
- {auth ? -
- navigate("/profile")}>Профиль ({auth.login}) -
: -
- navigate("/enter")}>Вход -
} -
-
+ return ( +
+
+
+
+ navigate("/")}>Главная + {auth ? ( + auth.is_admin ? ( + navigate("/forms")}>Мои формы + ) : ( + + ) + ) : ( + + )} +
- ) -} +
+ {auth ? ( +
+ navigate("/profile")}> + Профиль ({auth.login}) + +
+ ) : ( +
+ navigate("/enter")}> + Вход + +
+ )} +
+
+
+ ); +}; -export default NavBar; \ No newline at end of file +export default NavBar; diff --git a/src/hooks/validation/enterAccountValidate.js b/src/hooks/validation/enterAccountValidate.js index 6234291..52efee4 100644 --- a/src/hooks/validation/enterAccountValidate.js +++ b/src/hooks/validation/enterAccountValidate.js @@ -1,31 +1,38 @@ -const constructorAnswerValidate = (state, messageReject = "Ошибка", messageResolve = undefined) => { - return state ? - { - status: true, - message: messageResolve - } : - { - status: false, - message: messageReject - } -} +const constructorAnswerValidate = ( + state, + messageReject = "Ошибка", + messageResolve = undefined +) => { + return state + ? { + status: true, + message: messageResolve, + } + : { + status: false, + message: messageReject, + }; +}; const totalRegisterValidate = (data) => { - const listValidation = [ - constructorAnswerValidate(data.login.length, "Обязательное поле."), - // constructorAnswerValidate(data.surname.length, "Обязательное поле."), - // constructorAnswerValidate(data.email.length, "Обязательное поле."), - // constructorAnswerValidate(data.phone.length, "Обязательное поле."), - constructorAnswerValidate(data.password === data.repiedPassword, "Введенные пароли не совпадают."), - constructorAnswerValidate(data.password >= 8, "Пароль должен иметь более 8 символов.") - ] + const listValidation = [ + constructorAnswerValidate(data.login.length, "Обязательное поле."), + // constructorAnswerValidate(data.surname.length, "Обязательное поле."), + // constructorAnswerValidate(data.email.length, "Обязательное поле."), + // constructorAnswerValidate(data.phone.length, "Обязательное поле."), + constructorAnswerValidate( + data.password === data.repiedPassword, + "Введенные пароли не совпадают." + ), + // constructorAnswerValidate(data.password >= 8, "Пароль должен иметь более 8 символов.") + ]; - for (let value of listValidation) { - if (!value.status) { - return value - } + for (let value of listValidation) { + if (!value.status) { + return value; } - return { status: true } -} + } + return { status: true }; +}; -export { totalRegisterValidate, constructorAnswerValidate } \ No newline at end of file +export { totalRegisterValidate, constructorAnswerValidate }; diff --git a/src/pages/EnterAccount.jsx b/src/pages/EnterAccount.jsx index df00423..2a9b89a 100644 --- a/src/pages/EnterAccount.jsx +++ b/src/pages/EnterAccount.jsx @@ -49,18 +49,19 @@ const EnterAccount = () => { }); if (response.status === 200) { - setUser({ - email: email, - phone: phone, - login: login, - surname: surname, - patronymic: patronymic, - password: password, - }); + // setUser({ + // email: email, + // phone: phone, + // login: login, + // surname: surname, + // patronymic: patronymic, + // password: password, + // }); + const responseMe = await verifyUserApi(response.data.token); + setUser(responseMe.data); setCookie("token", response.data.token); cleanState(); - window.location.reload(); - // navigate("/"); + navigate("/"); } else { console.log("Error"); } @@ -71,13 +72,10 @@ const EnterAccount = () => { if (response.status === 200) { setCookie("token", response.data.token); + const responseMe = await verifyUserApi(response.data.token); + setUser(responseMe.data); cleanState(); - // setUser({ - // login: login - // }) - window.location.reload(); - // navigate("/") - // window.location.reload() + navigate("/"); } else { console.log(response); }