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
XuqwmUh9A!VCZQy!E?XsS^7a1$wHKYW
literal 0
HcmV?d00001
diff --git a/src/new-frontend/src/assets/images/favicon.png b/src/new-frontend/src/assets/images/favicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..b3dcdd3090e52a3d94affb00a40df2fe8a56d4ba
GIT binary patch
literal 412
zcmV;N0b~A&P)PX*
z{K4Sv{rBz-z`hUQ_xYc@=P{f3wCEBt;){?j=lD#CN0Dbl@rgY=9LX_2EDp%wKp9cI
zMIx3-p{Zs%RFRksEYuLyRV5_kK_@^|uR#rs@lnXoM^snz5JHbR4E7P#D@Y6p1q@!)
z!9SL*p^zBsi0UO+L&BQN_xdH98agIITODdKfgP$7A7V2%MCd7*AC`zS&wFg@kqB=}
z=nRtsV`@l*p)v5uqQgGIYueH3m>eRA{b(IyphURB#|jeINrI@hBxe*(E%tWQ!K}gpBwmq{{`{%p(7v$68vzm0<1w0000 {
+ return localStorage.getItem('access_token') || '';
+}
ReactDOM.createRoot(document.getElementById('root')!).render(
-
+
+
+
,
)
+
diff --git a/src/new-frontend/src/pages/auth/Login.tsx b/src/new-frontend/src/pages/auth/Login.tsx
new file mode 100644
index 0000000..112ae1c
--- /dev/null
+++ b/src/new-frontend/src/pages/auth/Login.tsx
@@ -0,0 +1,72 @@
+import React from "react";
+
+import { ViewIcon, ViewOffIcon } from "@chakra-ui/icons";
+import { Button, Center, Container, FormControl, Icon, Image, Input, InputGroup, InputRightElement, Link, useBoolean } from "@chakra-ui/react";
+import { SubmitHandler, useForm } from "react-hook-form";
+import { Link as ReactRouterLink, useNavigate } from "react-router-dom";
+
+import Logo from "../../assets/images/fastapi-logo.png";
+import { LoginService } from "../../client";
+import { Body_login_login_access_token as AccessToken } from "../../client/models/Body_login_login_access_token";
+
+const Login: React.FC = () => {
+ const [show, setShow] = useBoolean();
+ const navigate = useNavigate();
+ const { register, handleSubmit } = useForm();
+
+ const onSubmit: SubmitHandler = async (data) => {
+ const response = await LoginService.loginAccessToken({
+ formData: data,
+ });
+ localStorage.setItem("access_token", response.access_token);
+ navigate("/");
+ };
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ {show ? : }
+
+
+
+
+
+ Forgot password?
+
+
+
+
+
+ );
+};
+
+export default Login;