import React, { useEffect, useState } from "react"; function Register() { const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [status, setStatus] = useState(""); // Validation functions const validateUsername = (name) => /^[A-Za-z0-9_-]+$/.test(name); const validatePassword = (pass) => /^\S+$/.test(pass); // No spaces useEffect(() => { document.title = "Register | CDRM-Project"; }, []); const handleRegister = async () => { if (!validateUsername(username)) { setStatus("Invalid username. Use only letters, numbers, hyphens, or underscores."); return; } if (!validatePassword(password)) { setStatus("Invalid password. Spaces are not allowed."); return; } try { const response = await fetch("/register", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ username, password }), }); const data = await response.json(); if (data.message) { setStatus(data.message); } else if (data.error) { setStatus(data.error); } } catch (err) { setStatus("An error occurred while registering."); } }; const handleLogin = async () => { if (!validateUsername(username)) { setStatus("Invalid username. Use only letters, numbers, hyphens, or underscores."); return; } if (!validatePassword(password)) { setStatus("Invalid password. Spaces are not allowed."); return; } try { const response = await fetch("/login", { method: "POST", headers: { "Content-Type": "application/json", }, credentials: "include", // Important to send cookies body: JSON.stringify({ username, password }), }); const data = await response.json(); if (data.message) { // Successful login - reload the page to trigger Account check window.location.reload(); } else if (data.error) { setStatus(data.error); } } catch (err) { setStatus("An error occurred while logging in."); } }; return (
{status}
}