From e123177835a9edb68aa6cb0c8ea8fed5e5786aa2 Mon Sep 17 00:00:00 2001 From: DewanaGustavus <76590469+DewanaGustavus@users.noreply.github.com> Date: Wed, 15 Nov 2023 13:55:04 +0700 Subject: [PATCH] feat: user must logged in --- src/App.tsx | 25 +++++++++++++++++++------ src/api/Login.ts | 1 - src/components/Login.tsx | 12 ++++++------ src/components/NotFound.tsx | 17 +++++++++++++++++ src/components/Register.tsx | 20 ++++++++++---------- src/utils/LocalStorage.ts | 2 +- src/utils/Login.ts | 3 +-- 7 files changed, 54 insertions(+), 26 deletions(-) create mode 100644 src/components/NotFound.tsx diff --git a/src/App.tsx b/src/App.tsx index 3e1b317..ad85457 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -2,18 +2,31 @@ import { BrowserRouter, Routes, Route } from 'react-router-dom' import Login from './components/Login' import Navbar from './components/Navbar' import Register from './components/Register' +import NotFound from './components/NotFound' import Logout from './components/Logout' +import { isLoggedIn } from './utils/LocalStorage' function App() { return ( <BrowserRouter> - <Navbar/> - <Routes> - <Route path='/Login' element={<Login/>}/> - <Route path='/Register' element={<Register/>}/> - <Route path='/Logout' element={<Logout/>}/> - </Routes> + {isLoggedIn() ? + <> + <Navbar/> + <Routes> + <Route path='/Logout' element={<Logout/>}/> + <Route path='*' element={<NotFound/>}/> + </Routes> + </> + : + <> + <Routes> + <Route path='/Login' element={<Login/>}/> + <Route path='/Register' element={<Register/>}/> + <Route path='*' element={<Login/>}/> + </Routes> + </> + } </BrowserRouter> ) } diff --git a/src/api/Login.ts b/src/api/Login.ts index c14986c..89da61f 100644 --- a/src/api/Login.ts +++ b/src/api/Login.ts @@ -47,7 +47,6 @@ export async function login(username : string, password : string) { const data = {username : username, password : password}; const response = await axios.post<string>(API_URL, data); - console.log("api response", response); return response; } catch(err) { alert(err); diff --git a/src/components/Login.tsx b/src/components/Login.tsx index f434a7d..1d26c84 100644 --- a/src/components/Login.tsx +++ b/src/components/Login.tsx @@ -12,7 +12,7 @@ import { Link, FormErrorMessage, } from '@chakra-ui/react' -import { validateConfirmPassword, validateEmail, validateLogin, validateRegister, validateUsername } from '../utils/Login' +import { validateLogin, validateUsername } from '../utils/Login' import React, {useState} from 'react' import { useNavigate } from 'react-router-dom'; import { setUser } from '../utils/LocalStorage'; @@ -23,8 +23,8 @@ type formType = { }; export default function Login() { - const [formData, setFormData] = useState<formType>({username : "q", - password : "q"}); + const [formData, setFormData] = useState<formType>({username : "", + password : ""}); const [usernameValid, setUsernameValid] = useState(true); const [passwordValid, setPasswordValid] = useState(true); const navigate = useNavigate(); @@ -32,11 +32,11 @@ export default function Login() { function handleChange (event : React.ChangeEvent<HTMLInputElement>) { const { name, value } = event.target; setFormData((prevFormData) => ({ ...prevFormData, [name]: value })); - }; + } function revalidateUsername() { validateUsername(formData.username).then((available) => setUsernameValid(!available)); - }; + } function handleSubmit(event : React.FormEvent<HTMLFormElement>) { revalidateUsername(); @@ -54,7 +54,7 @@ export default function Login() { } event.preventDefault(); - }; + } return ( <Flex diff --git a/src/components/NotFound.tsx b/src/components/NotFound.tsx new file mode 100644 index 0000000..3db845e --- /dev/null +++ b/src/components/NotFound.tsx @@ -0,0 +1,17 @@ +import { Container, Text } from '@chakra-ui/react' + +export default function NotFound() { + return ( + <Container + sx={{ width: '100vw', height: '100vh', display: 'flex', alignItems: 'center', justifyContent: 'center' }} + > + <Container> + <Text variant="h1" textAlign={'center'}> + 404 Not Found + </Text> + </Container> + </Container> + ) +} + + \ No newline at end of file diff --git a/src/components/Register.tsx b/src/components/Register.tsx index 4d101c3..3f9b92e 100644 --- a/src/components/Register.tsx +++ b/src/components/Register.tsx @@ -26,11 +26,11 @@ type formType = { }; export default function Register() { - const [formData, setFormData] = useState<formType>({username : "q", - name : "q", - email : "qwe@gmail.com", - password : "q", - confirmPassword : "q"}); + const [formData, setFormData] = useState<formType>({username : "", + name : "", + email : "", + password : "", + confirmPassword : ""}); const [usernameValid, setUsernameValid] = useState(true); const [emailValid, setEmailValid] = useState(true); const [passwordValid, setPasswordValid] = useState(true); @@ -39,18 +39,18 @@ export default function Register() { function handleChange (event : React.ChangeEvent<HTMLInputElement>) { const { name, value } = event.target; setFormData((prevFormData) => ({ ...prevFormData, [name]: value })); - }; + } function revalidateUsername() { validateUsername(formData.username).then((available) => setUsernameValid(available)); - }; + } function revalidateEmail() { validateEmail(formData.email).then((available) => setEmailValid(available)); - }; + } function revalidatePassword() { const valid = validateConfirmPassword(formData.password, formData.confirmPassword); setPasswordValid(valid); - }; + } function handleSubmit(event : React.FormEvent<HTMLFormElement>) { revalidateUsername(); @@ -68,7 +68,7 @@ export default function Register() { } event.preventDefault(); - }; + } return ( <Flex diff --git a/src/utils/LocalStorage.ts b/src/utils/LocalStorage.ts index 83e1910..a82db20 100644 --- a/src/utils/LocalStorage.ts +++ b/src/utils/LocalStorage.ts @@ -1,5 +1,6 @@ export function setUser(username : string) { + // TODO : async issue localStorage.setItem('username', username); } @@ -14,6 +15,5 @@ export function getUser() { export function isLoggedIn() { const loggedIn = (getUser() !== null); - console.log('isLoggedIn', loggedIn); return loggedIn; } diff --git a/src/utils/Login.ts b/src/utils/Login.ts index 5f944f9..9a84b4e 100644 --- a/src/utils/Login.ts +++ b/src/utils/Login.ts @@ -25,7 +25,6 @@ export async function validateRegister(username : string, name : string, email : export async function validateLogin(username : string, password : string) { const response = await login(username, password); - console.log("util response", response); - const success = (response.data === "success"); + const success = (response.data === "success"); return success; } -- GitLab