From f66b6a0f0a880ad289bd22eacd6dd39dfb8de826 Mon Sep 17 00:00:00 2001 From: Peter KW Date: Sat, 13 Apr 2024 21:18:01 +0200 Subject: [PATCH] Now uses new input types and checks if input is allowed + alerts and design changes --- frontend/src/Components/Register.tsx | 72 +++++++----- frontend/src/Components/UserInfoModal.tsx | 133 ++++++++++++++++------ 2 files changed, 145 insertions(+), 60 deletions(-) diff --git a/frontend/src/Components/Register.tsx b/frontend/src/Components/Register.tsx index af5808c..281042f 100644 --- a/frontend/src/Components/Register.tsx +++ b/frontend/src/Components/Register.tsx @@ -3,7 +3,14 @@ import { NewUser } from "../Types/goTypes"; import { api } from "../API/API"; import Logo from "../assets/Logo.svg"; import Button from "./Button"; -import InputField from "./InputField"; +import UsernameInput from "./Inputs/UsernameInput"; +import PasswordInput from "./Inputs/PasswordInput"; +import { alphanumeric, lowercase } from "../Data/regex"; +import { + passwordLength, + usernameLowLimit, + usernameUpLimit, +} from "../Data/constants"; /** * Renders a registration form for the admin to add new users in. @@ -15,9 +22,25 @@ export default function Register(): JSX.Element { const [errMessage, setErrMessage] = useState(); const handleRegister = async (): Promise => { - if (username === "" || password === "") { - alert("Must provide username and password"); - return; + if (username !== undefined) { + if ( + username.length > usernameUpLimit || + username.length < usernameLowLimit || + !alphanumeric.test(username) + ) { + alert( + "Please provide valid username: \n-Between 5-10 characters \n-No special characters (.-!?/*)", + ); + return; + } + } + if (password !== undefined) { + if (password.length !== passwordLength || !lowercase.test(password)) { + alert( + "Please provide valid password: \n-Exactly 6 characters \n-No uppercase letters \n-No numbers \n-No special characters (.-!?/*)", + ); + return; + } } const newUser: NewUser = { username: username?.replace(/ /g, "") ?? "", @@ -39,7 +62,7 @@ export default function Register(): JSX.Element {
{ e.preventDefault(); void handleRegister(); @@ -47,33 +70,28 @@ export default function Register(): JSX.Element { > TTIME Logo

Register New User

-
- { - setUsername(e.target.value); - }} - placeholder={"Username"} - /> - { - setPassword(e.target.value); - }} - placeholder={"Password"} - /> -
-
+ + { + setUsername(e.target.value); + }} + /> +
+ { + setPassword(e.target.value); + }} + /> + +
+ )} + {showPwordInput && ( +
+ { + setNewPassword(e.target.value); + }} + /> +