diff --git a/front/src/main.tsx b/front/src/main.tsx index 1d1bea6..6a4d58e 100644 --- a/front/src/main.tsx +++ b/front/src/main.tsx @@ -4,12 +4,18 @@ import './index.css' import Home from './pages/Home' import Login from './pages/Login' +import Register from './pages/Register' +import Admin from './pages/Admin' +import AddUser from './pages/AddUser' createRoot(document.getElementById('root')!).render( } /> } /> + } /> + } /> + } /> , ) diff --git a/front/src/pages/AddUser.tsx b/front/src/pages/AddUser.tsx new file mode 100644 index 0000000..1d0d61e --- /dev/null +++ b/front/src/pages/AddUser.tsx @@ -0,0 +1,59 @@ +import { useState, useEffect } from 'react'; +import { useNavigate } from 'react-router-dom'; +import axios from 'axios'; + +export default function AddUser () { + const navigate = useNavigate(); + const [token, setToken] = useState(""); + const [name, setName] = useState(""); + const [lastname, setLastname] = useState(""); + const [email, setEmail] = useState(""); + const [numero, setNumero] = useState(""); + const [password, setPassword] = useState(""); + + useEffect(() => { + const storedToken = localStorage.getItem("token"); + if (storedToken) { + setToken(storedToken); + } else { + navigate("/login"); + } + }, []); + + function handleSubmit(e: React.FormEvent) { + e.preventDefault(); + if (name === "" || lastname === "" || email === "" || numero === "" || password === "") { + alert("Please fill in all fields"); + return; + } + axios + .post("/api/users/add", { + token, + name, + lastname, + email, + numero, + password + }) + .then(() => { + navigate("/admin"); + }) + .catch((error) => { + console.log(error.response.data); + }); + } + + return ( +
+

Add User

+
+ setName(e.target.value)} /> + setLastname(e.target.value)} /> + setEmail(e.target.value)} /> + setNumero(e.target.value)} /> + setPassword(e.target.value)} /> + +
+
+ ) +} \ No newline at end of file diff --git a/front/src/pages/Admin.tsx b/front/src/pages/Admin.tsx new file mode 100644 index 0000000..a2f187c --- /dev/null +++ b/front/src/pages/Admin.tsx @@ -0,0 +1,14 @@ +import { Link } from 'react-router-dom'; + +export default function Admin () { + return ( +
+

Admin

+

Welcome Admin

+
+

Admin Panel

+

Manage users, accounts, and cards.

+
+
+ ); +} \ No newline at end of file diff --git a/front/src/pages/Login.tsx b/front/src/pages/Login.tsx index 745126b..e8e60cb 100644 --- a/front/src/pages/Login.tsx +++ b/front/src/pages/Login.tsx @@ -24,7 +24,7 @@ export default function Login () { navigate("/") }) .catch((error) => { - alert("Login failed : " + error.response.data) + alert("Login failed : " + error.response) }) } diff --git a/front/src/pages/Register.tsx b/front/src/pages/Register.tsx new file mode 100644 index 0000000..878eac1 --- /dev/null +++ b/front/src/pages/Register.tsx @@ -0,0 +1,59 @@ +import { useState, useEffect } from 'react'; +import { useNavigate } from 'react-router-dom'; +import axios from 'axios'; + +export default function Register () { + const navigate = useNavigate(); + const [name, setName] = useState(""); + const [lastname, setLastname] = useState(""); + const [email, setEmail] = useState(""); + const [numero, setNumero] = useState(""); + const [password, setPassword] = useState(""); + + function handleSubmit(e: React.FormEvent) { + e.preventDefault(); + if (name === "" || lastname === "" || email === "" || numero === "" || password === "") { + alert("Please fill in all fields"); + return; + } + axios + .post("/api/auth/register", { + name, + lastname, + email, + numero, + password + }) + .then(() => { + axios + .post("/api/auth/login", { + email, + password + }) + .then((response) => { + localStorage.setItem("token", response.data.token); + navigate("/"); + }) + .catch((error) => { + console.error(error.response.data); + }); + }) + .catch((error) => { + console.error(error.response.data); + }); + } + + return ( +
+

Add User

+
+ setName(e.target.value)} /> + setLastname(e.target.value)} /> + setEmail(e.target.value)} /> + setNumero(e.target.value)} /> + setPassword(e.target.value)} /> + +
+
+ ) +} \ No newline at end of file