diff --git a/web-app/index.html b/web-app/index.html index 48b1d32..f71f934 100644 --- a/web-app/index.html +++ b/web-app/index.html @@ -3,7 +3,27 @@ - Линза+ + Линза ➕ + + + + + + + + + + + + + + + + + + + +
diff --git a/web-app/public/favicons/browserconfig.xml b/web-app/public/favicons/browserconfig.xml new file mode 100644 index 0000000..e1ae694 --- /dev/null +++ b/web-app/public/favicons/browserconfig.xml @@ -0,0 +1,12 @@ + + + + + + + + + #ffffff + + + diff --git a/web-app/public/favicons/favicon-114x114.png b/web-app/public/favicons/favicon-114x114.png new file mode 100644 index 0000000..5ddcfe5 Binary files /dev/null and b/web-app/public/favicons/favicon-114x114.png differ diff --git a/web-app/public/favicons/favicon-120x120.png b/web-app/public/favicons/favicon-120x120.png new file mode 100644 index 0000000..543722b Binary files /dev/null and b/web-app/public/favicons/favicon-120x120.png differ diff --git a/web-app/public/favicons/favicon-144x144.png b/web-app/public/favicons/favicon-144x144.png new file mode 100644 index 0000000..0860eb3 Binary files /dev/null and b/web-app/public/favicons/favicon-144x144.png differ diff --git a/web-app/public/favicons/favicon-150x150.png b/web-app/public/favicons/favicon-150x150.png new file mode 100644 index 0000000..4d4fbbe Binary files /dev/null and b/web-app/public/favicons/favicon-150x150.png differ diff --git a/web-app/public/favicons/favicon-152x152.png b/web-app/public/favicons/favicon-152x152.png new file mode 100644 index 0000000..54fe15a Binary files /dev/null and b/web-app/public/favicons/favicon-152x152.png differ diff --git a/web-app/public/favicons/favicon-16x16.png b/web-app/public/favicons/favicon-16x16.png new file mode 100644 index 0000000..56960f8 Binary files /dev/null and b/web-app/public/favicons/favicon-16x16.png differ diff --git a/web-app/public/favicons/favicon-180x180.png b/web-app/public/favicons/favicon-180x180.png new file mode 100644 index 0000000..a776c64 Binary files /dev/null and b/web-app/public/favicons/favicon-180x180.png differ diff --git a/web-app/public/favicons/favicon-192x192.png b/web-app/public/favicons/favicon-192x192.png new file mode 100644 index 0000000..3d51a9c Binary files /dev/null and b/web-app/public/favicons/favicon-192x192.png differ diff --git a/web-app/public/favicons/favicon-310x310.png b/web-app/public/favicons/favicon-310x310.png new file mode 100644 index 0000000..4e0423d Binary files /dev/null and b/web-app/public/favicons/favicon-310x310.png differ diff --git a/web-app/public/favicons/favicon-32x32.png b/web-app/public/favicons/favicon-32x32.png new file mode 100644 index 0000000..53bfdef Binary files /dev/null and b/web-app/public/favicons/favicon-32x32.png differ diff --git a/web-app/public/favicons/favicon-57x57.png b/web-app/public/favicons/favicon-57x57.png new file mode 100644 index 0000000..bbcc59a Binary files /dev/null and b/web-app/public/favicons/favicon-57x57.png differ diff --git a/web-app/public/favicons/favicon-60x60.png b/web-app/public/favicons/favicon-60x60.png new file mode 100644 index 0000000..baea034 Binary files /dev/null and b/web-app/public/favicons/favicon-60x60.png differ diff --git a/web-app/public/favicons/favicon-70x70.png b/web-app/public/favicons/favicon-70x70.png new file mode 100644 index 0000000..1c0a1cd Binary files /dev/null and b/web-app/public/favicons/favicon-70x70.png differ diff --git a/web-app/public/favicons/favicon-72x72.png b/web-app/public/favicons/favicon-72x72.png new file mode 100644 index 0000000..71a024d Binary files /dev/null and b/web-app/public/favicons/favicon-72x72.png differ diff --git a/web-app/public/favicons/favicon-76x76.png b/web-app/public/favicons/favicon-76x76.png new file mode 100644 index 0000000..6c978ea Binary files /dev/null and b/web-app/public/favicons/favicon-76x76.png differ diff --git a/web-app/public/favicons/favicon-96x96.png b/web-app/public/favicons/favicon-96x96.png new file mode 100644 index 0000000..776239a Binary files /dev/null and b/web-app/public/favicons/favicon-96x96.png differ diff --git a/web-app/public/favicons/favicon.ico b/web-app/public/favicons/favicon.ico new file mode 100644 index 0000000..0b35c5b Binary files /dev/null and b/web-app/public/favicons/favicon.ico differ diff --git a/web-app/public/logo_rounded.png b/web-app/public/logo_rounded.png new file mode 100644 index 0000000..9e8403c Binary files /dev/null and b/web-app/public/logo_rounded.png differ diff --git a/web-app/public/logo_with_back.png b/web-app/public/logo_with_back.png new file mode 100644 index 0000000..168945a Binary files /dev/null and b/web-app/public/logo_with_back.png differ diff --git a/web-app/src/AppRouter.jsx b/web-app/src/AppRouter.jsx index 7b6487d..6d85598 100644 --- a/web-app/src/AppRouter.jsx +++ b/web-app/src/AppRouter.jsx @@ -1,13 +1,14 @@ import {Routes, Route} from "react-router-dom"; import PrivateRoute from "./components/PrivateRoute.jsx"; +import LoginPage from "./pages/LoginPage.jsx"; const AppRouter = () => ( - + }/> }> - + 1234

}/>
) diff --git a/web-app/src/AuthContext.jsx b/web-app/src/AuthContext.jsx index c7ea3c7..5a86161 100644 --- a/web-app/src/AuthContext.jsx +++ b/web-app/src/AuthContext.jsx @@ -18,9 +18,10 @@ export const AuthProvider = ({children}) => { try { const token = await loginUser(loginData); localStorage.setItem("access_token", token); - setUser({ token }); + setUser({token}); } catch (error) { console.error("Login failed", error); + throw error; } }; diff --git a/web-app/src/api/LoginRequest.jsx b/web-app/src/api/LoginRequest.jsx index 15a6bd5..c4993ea 100644 --- a/web-app/src/api/LoginRequest.jsx +++ b/web-app/src/api/LoginRequest.jsx @@ -2,12 +2,17 @@ import axios from "axios"; import CONFIG from "../core/Config.jsx"; export const loginUser = async (loginData) => { + console.log(loginData) try { const response = await axios.post(`${CONFIG.BASE_URL}/login/`, loginData, { withCredentials: true, }); return response.data.access_token; } catch (error) { - throw new Error("Login failed: " + error.message); + if (error.status === 401) { + throw new Error("Неверное имя пользователя или пароль") + } + + throw new Error(error.message); } }; diff --git a/web-app/src/core/Config.jsx b/web-app/src/core/Config.jsx index 78ec13c..76f01b4 100644 --- a/web-app/src/core/Config.jsx +++ b/web-app/src/core/Config.jsx @@ -1,5 +1,5 @@ const CONFIG = { - BASE_URL: 'http://localhost:8080/api/v1/', + BASE_URL: 'http://localhost:8000/api/v1', }; export default CONFIG; \ No newline at end of file diff --git a/web-app/src/pages/LoginPage.jsx b/web-app/src/pages/LoginPage.jsx new file mode 100644 index 0000000..0b60e27 --- /dev/null +++ b/web-app/src/pages/LoginPage.jsx @@ -0,0 +1,69 @@ +import {Form, Input, Button, Row, Col, Typography} from 'antd'; +import {useState} from 'react'; +import {useAuth} from "../AuthContext.jsx"; + +const {Title} = Typography; + +const LoginPage = () => { + const {login} = useAuth(); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + + const onFinish = async (values) => { + setLoading(true); + setError(null); + + try { + await login(values); + } catch (error) { + setError(`Ошибка при входе: ${error.message}`); + } finally { + setLoading(false); + } + }; + + return ( + + +
+ Авторизация + + {error &&
{error}
} + +
+ + + + + + + + + + + +
+
+ +
+ ); +}; + +export default LoginPage;