diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 46f00a9..830bedb 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,4 +1,5 @@ import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; +import Register from "./pages/Register"; import Login from "./pages/Login"; import Tasks from "./pages/Tasks"; import Profile from "./pages/Profile"; @@ -9,6 +10,7 @@ const App = () => { return ( + } /> } /> } /> } /> diff --git a/frontend/src/pages/Login.tsx b/frontend/src/pages/Login.tsx index 570a8b3..26c0651 100644 --- a/frontend/src/pages/Login.tsx +++ b/frontend/src/pages/Login.tsx @@ -49,6 +49,12 @@ const Login = () => { Zaloguj się +

+ Nie masz jeszcze konta?{" "} + + Zarejestruj się + +

); diff --git a/frontend/src/pages/Register.tsx b/frontend/src/pages/Register.tsx new file mode 100644 index 0000000..d59cc01 --- /dev/null +++ b/frontend/src/pages/Register.tsx @@ -0,0 +1,99 @@ +import { useState } from "react"; +import { useNavigate } from "react-router-dom"; +import api from "../api/api"; + +const Register = () => { + const navigate = useNavigate(); + + const [formData, setFormData] = useState({ + username: "", + email: "", + password: "", + confirmPassword: "" + }); + + const [error, setError] = useState(""); + + const handleChange = (e: React.ChangeEvent) => { + setFormData({ ...formData, [e.target.name]: e.target.value }); + }; + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + + if (formData.password !== formData.confirmPassword) { + setError("Hasła muszą być takie same."); + return; + } + + try { + await api.post("/users", { + username: formData.username, + email: formData.email, + password: formData.password, + role: "User" // in frontend only regular users can be created + }); + + navigate("/login"); + } catch (err) { + console.error(err); + setError("Rejestracja nie powiodła się."); + } + }; + + return ( +
+

Rejestracja

+ + {error &&

{error}

} + +
+ + + + + + +
+
+ ); +}; + +export default Register;