diff --git a/frontend/src/components/auth/LoginForm.tsx b/frontend/src/components/auth/LoginForm.tsx index 3acb682..f9ea4fc 100644 --- a/frontend/src/components/auth/LoginForm.tsx +++ b/frontend/src/components/auth/LoginForm.tsx @@ -1,153 +1,164 @@ -import {useSessionStore} from "../../lib/store/sessionStore"; -import {LstCard} from "../extendedUI/LstCard"; -import {CardHeader} from "../ui/card"; -import {toast} from "sonner"; -import {z} from "zod"; -import {useRouter} from "@tanstack/react-router"; -import {Controller, useForm} from "react-hook-form"; -import {zodResolver} from "@hookform/resolvers/zod"; -import {Label} from "../ui/label"; -import {Input} from "../ui/input"; -import {Checkbox} from "../ui/checkbox"; -import {Button} from "../ui/button"; +import { useSessionStore } from "../../lib/store/sessionStore"; +import { LstCard } from "../extendedUI/LstCard"; +import { CardHeader } from "../ui/card"; +import { toast } from "sonner"; +import { z } from "zod"; +import { useRouter } from "@tanstack/react-router"; +import { Controller, useForm } from "react-hook-form"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { Label } from "../ui/label"; +import { Input } from "../ui/input"; +import { Checkbox } from "../ui/checkbox"; +import { Button } from "../ui/button"; const FormSchema = z.object({ - username: z.string().min(1, "You must enter a valid username"), - password: z.string().min(4, "You must enter a valid password"), - rememberMe: z.boolean(), + username: z.string().min(1, "You must enter a valid username"), + password: z.string().min(4, "You must enter a valid password"), + rememberMe: z.boolean(), }); const LoginForm = () => { - const {setSession} = useSessionStore(); - const rememeberMe = localStorage.getItem("rememberMe") === "true"; - const username = localStorage.getItem("username") || ""; - const router = useRouter(); - const { - register, - handleSubmit, - control, - formState: {errors}, - } = useForm>({ - resolver: zodResolver(FormSchema), - defaultValues: { - username: username || "", - password: "", - rememberMe: rememeberMe, + const { setSession } = useSessionStore(); + const rememeberMe = localStorage.getItem("rememberMe") === "true"; + const username = localStorage.getItem("username") || ""; + const router = useRouter(); + const { + register, + handleSubmit, + control, + formState: { errors }, + } = useForm>({ + resolver: zodResolver(FormSchema), + defaultValues: { + username: username || "", + password: "", + rememberMe: rememeberMe, + }, + }); + + const onSubmitLogin = async (value: z.infer) => { + // Do something with form data + + // first update the rememberMe incase it was selected + if (value.rememberMe) { + localStorage.setItem("rememberMe", value.rememberMe.toString()); + localStorage.setItem("username", value.username); + } else { + localStorage.removeItem("rememberMe"); + localStorage.removeItem("username"); + } + + try { + const response = await fetch("/api/auth/login", { + method: "POST", + headers: { + "Content-Type": "application/json", }, - }); + body: JSON.stringify({ + username: value.username, + password: value.password, + }), + }); - const onSubmitLogin = async (value: z.infer) => { - // Do something with form data + const data = await response.json(); - // first update the rememberMe incase it was selected - if (value.rememberMe) { - localStorage.setItem("rememberMe", value.rememberMe.toString()); - localStorage.setItem("username", value.username); - } else { - localStorage.removeItem("rememberMe"); - localStorage.removeItem("username"); - } + // Store token in localStorage + // localStorage.setItem("auth_token", data.data.token); + if (data.success) { + const prod = btoa(`${value.username.toLowerCase()}:${value.password}`); + const prodUser = { ...data.user, prod: prod }; - try { - const response = await fetch("/api/auth/login", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({username: value.username, password: value.password}), - }); + setSession(prodUser, data.token); + toast.success(`You are logged in as ${data.user.username}`); + router.navigate({ to: "/" }); + } - const data = await response.json(); + if (!data.success) { + toast.error(`${data.message}`); + } - // Store token in localStorage - // localStorage.setItem("auth_token", data.data.token); - if (data.success) { - const prod = btoa(`${value.username.toLowerCase()}:${value.password}`); - const prodUser = {...data.user, prod: prod}; + //console.log(data); + } catch (err) { + toast.error("Invalid credentials"); + } + }; - setSession(prodUser, data.token); - toast.success(`You are logged in as ${data.user.username}`); - router.navigate({to: "/"}); - } + return ( +
+ + +
+

Login to LST

+
+
+
+
+
+ + + {errors.username && ( +

+ {errors.username.message} +

+ )} +
+
+ <> + + + {errors.password && ( +

+ {errors.password.message} +

+ )} + +
+
+
+ ( + <> + + + + )} + control={control} + name="rememberMe" + defaultValue={rememeberMe} + /> +
- if (!data.success) { - toast.error(`${data.message}`); - } - - console.log(data); - } catch (err) { - toast.error("Invalid credentials"); - } - }; - - return ( -
- - -
-

Login to LST

-
-
-
- -
- - - {errors.username &&

{errors.username.message}

} -
-
- <> - - - {errors.password &&

{errors.password.message}

} - -
-
-
- ( - <> - - - - )} - control={control} - name="rememberMe" - defaultValue={rememeberMe} - /> -
- -
- -
-
- -
-
- ); +
+ +
+
+ +
+
+ ); }; export default LoginForm;