From a5d1c80aaafcb41539be808e782b1de0a2c2a91d Mon Sep 17 00:00:00 2001 From: Tatyana Date: Fri, 15 Aug 2025 14:55:11 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20?= =?UTF-8?q?=D0=B2=20local=20storage=20=D0=BF=D1=80=D0=B8=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B3=D0=B8=D1=81=D1=82=D1=80=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 23 +++++++++ package.json | 1 + src/pages/Login.tsx | 79 +++++++++++++++++++++++++------ src/shared/consts/localStorage.ts | 2 - src/shared/consts/router.ts | 20 -------- 5 files changed, 89 insertions(+), 36 deletions(-) delete mode 100644 src/shared/consts/localStorage.ts delete mode 100644 src/shared/consts/router.ts diff --git a/package-lock.json b/package-lock.json index 4b07849..5b6070f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "@ionic/react-router": "^8.6.5", "@tailwindcss/vite": "^4.1.11", "axios": "^1.11.0", + "cors": "^2.8.5", "react": "^19.1.0", "react-dom": "^19.1.0", "react-router-dom": "^5.3.4", @@ -2930,6 +2931,19 @@ "dev": true, "license": "MIT" }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -5519,6 +5533,15 @@ "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==", "license": "MIT" }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/vite": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.6.tgz", diff --git a/package.json b/package.json index 06bb40e..9548246 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@ionic/react-router": "^8.6.5", "@tailwindcss/vite": "^4.1.11", "axios": "^1.11.0", + "cors": "^2.8.5", "react": "^19.1.0", "react-dom": "^19.1.0", "react-router-dom": "^5.3.4", diff --git a/src/pages/Login.tsx b/src/pages/Login.tsx index f169d39..294774b 100644 --- a/src/pages/Login.tsx +++ b/src/pages/Login.tsx @@ -5,40 +5,85 @@ import { useState } from "react" import { useHistory } from "react-router-dom" import manImage from "../assets/man.svg" // Reverted to original import +import axios from 'axios'; + + + export default function LoginPage() { const history = useHistory() + // Стейты для формы входа const [email, setEmail] = useState("") const [password, setPassword] = useState("") const [showPassword, setShowPassword] = useState(false) const [rememberMe, setRememberMe] = useState(false) const [activeTab, setActiveTab] = useState<"login" | "register">("login") - // State and handlers for the registration form + //// Состояние и обработчики регистрационной формы const [registerFormData, setRegisterFormData] = useState({ email: "", // Removed firstName, lastName password: "", confirmPassword: "", + name: "", }) const [showRegisterPassword, setShowRegisterPassword] = useState(false) const [showConfirmRegisterPassword, setShowConfirmRegisterPassword] = useState(false) - const handleLogin = (e: React.FormEvent) => { + + // Обработчик входа + const handleLogin = async (e: React.FormEvent) => { e.preventDefault() - // Simulate login - console.log("Logging in with:", { email, password, rememberMe }) - history.push("/home") + try { + const response = await axios.post('http://localhost:8093/auth/api/login', { + email, + password, + rememberMe, + }) + console.log('Ответ сервера:', response.data) + // например, сохранить токен или перейти + history.push("/home") + } catch (error) { + console.error('Ошибка при входе:', error) + alert('Ошибка при входе') + } } - const handleRegisterSubmit = (e: React.FormEvent) => { - e.preventDefault() - if (registerFormData.password !== registerFormData.confirmPassword) { - alert("Пароли не совпадают") - return - } - // Simulate registration - console.log("Registering with:", registerFormData) - history.push("/home") + +// Обработчик регистрации +const handleRegisterSubmit = async (e: React.FormEvent) => { + e.preventDefault() + if (registerFormData.password !== registerFormData.confirmPassword) { + alert("Пароли не совпадают") + return } + try { + const response = await axios.post('http://localhost:8093/auth/api/register', { + email: registerFormData.email, + name: registerFormData.email, + password: registerFormData.password, + }) + + // Предположим, что ответ содержит объект с токеном и другой информацией + const data = response.data + + // Сохраняем нужные данные в localStorage + localStorage.setItem('authToken', data.token) + localStorage.setItem('userEmail', data.user_email) + localStorage.setItem('userId', String(data.user_id)) + localStorage.setItem('userName', data.user_name) + + console.log('Данные сохранены в localStorage') + + // После этого можно перейти или показать сообщение + history.push("/home") + } catch (error) { + console.error('Ошибка при регистрации:', error) + alert('Ошибка при регистрации') + } +} + + + + const handleRegisterInputChange = (e: React.ChangeEvent) => { setRegisterFormData({ @@ -47,6 +92,12 @@ export default function LoginPage() { }) } + + + + + + return (
diff --git a/src/shared/consts/localStorage.ts b/src/shared/consts/localStorage.ts deleted file mode 100644 index b2535b9..0000000 --- a/src/shared/consts/localStorage.ts +++ /dev/null @@ -1,2 +0,0 @@ -export const USER_KEY = 'user'; -export const AUTH_TOKEN = 'token'; diff --git a/src/shared/consts/router.ts b/src/shared/consts/router.ts deleted file mode 100644 index 3fc953f..0000000 --- a/src/shared/consts/router.ts +++ /dev/null @@ -1,20 +0,0 @@ -export const getRouteLogin = () => `/auth/login`; -export const getRouteRegister = () => `/auth/register`; -export const getRouteResetPassword = () => `/auth/reset-password`; -export const getRouteLkHome = () => `/lk`; - -export const getRouteUsersList = () => `/lk/admin/users`; -export const getRouteUserEdit = (id: number | string) => `/lk/admin/users/${id}`; -export const getRouteUserCreate = () => `/lk/admin/users/create`; - -export const getRouteUserRolesList = () => `/lk/admin/user-roles`; -export const getRouteUserRoleEdit = (id: number | string) => `/lk/admin/user-roles/${id}`; -export const getRouteUserRoleCreate = () => `/lk/admin/user-roles/create`; - -export const getRouterExercisesList = () =>`/lk/admin/exercises`; -export const getRouterExercisesEdit = (id: number | string) =>`/lk/admin/exercises/${id}`; -export const getRouterExercisesCreate = () =>`/lk/admin/exercises/create`; - -export const getRouterCoursesList = () => `/lk/admin/courses`; -export const getRouterCoursesEdit = (id: number | string) => `/lk/admin/courses/${id}`; -export const getRouterCoursesCreate = () => `/lk/admin/courses/create`;