diff --git a/cmd/server/web/src/pages/register/components/user-register-form.tsx b/cmd/server/web/src/pages/register/components/user-register-form.tsx
index 32a8a39..ed6d70b 100644
--- a/cmd/server/web/src/pages/register/components/user-register-form.tsx
+++ b/cmd/server/web/src/pages/register/components/user-register-form.tsx
@@ -1,169 +1,179 @@
import * as React from "react"
-import {useState} from "react"
+import {useEffect, useState} from "react"
import {cn} from "@/lib/utils"
import {Button} from "@/components/ui/button"
import {Input} from "@/components/ui/input"
import {Label} from "@/components/ui/label"
import {Icons} from "@/components/ui/icons.tsx";
-import {useNavigate} from "react-router-dom";
+import {useLocation, useNavigate} from "react-router-dom";
import {AlertTriangle} from "lucide-react";
+import useAuth from "@/hooks/use-auth.ts";
interface UserRegisterFormProps extends React.HTMLAttributes
{
}
export function UserRegisterForm({className, ...props}: UserRegisterFormProps) {
- const [isLoading, setIsLoading] = useState(false)
- const navigate = useNavigate()
- const [errors, setErrors] = useState([])
- const [name, setName] = useState("")
- const [email, setEmail] = useState("")
- const [password, setPassword] = useState("")
+ const [isLoading, setIsLoading] = useState(false)
+ const navigate = useNavigate();
+ const location = useLocation();
+ const from = location.state?.from?.pathname || "/";
+ const [errors, setErrors] = useState([])
+ const [name, setName] = useState("")
+ const [email, setEmail] = useState("")
+ const [password, setPassword] = useState("")
+ const {auth, setAuth} = useAuth();
- async function onSubmit(event: React.SyntheticEvent) {
- event.preventDefault()
- setIsLoading(true)
+ async function onSubmit(event: React.SyntheticEvent) {
+ event.preventDefault()
+ setIsLoading(true)
- setErrors([])
+ setErrors([])
- setTimeout(() => {
- setIsLoading(false)
- }, 3000)
+ setTimeout(() => {
+ setIsLoading(false)
+ }, 3000)
- let request = {
- full_name: name,
- username: email,
- email: email,
- password: password
- }
-
- await fetch('http://localhost:8000/api/v1/create_user', {
- method: 'POST',
- headers: {'Content-Type': 'application/json'},
- body: JSON.stringify(request),
- }).then((response) => {
- if (!response.ok) {
- response.json().then((data) => {
- let responseErrors = []
- let details = data?.details
- for (let key in details) {
- for (let violation of details[key]?.field_violations) {
- responseErrors.push(violation?.field + ": " + violation?.description)
- }
- }
- setErrors(responseErrors)
- })
- }
+ let request = {
+ full_name: name,
+ username: email,
+ email: email,
+ password: password
+ }
- if (response.ok) {
- navigate('/login')
+ await fetch('http://localhost:8000/api/v1/create_user', {
+ method: 'POST',
+ headers: {'Content-Type': 'application/json'},
+ body: JSON.stringify(request),
+ }).then((response) => {
+ if (!response.ok) {
+ response.json().then((data) => {
+ let responseErrors = []
+ let details = data?.details
+ for (let key in details) {
+ for (let violation of details[key]?.field_violations) {
+ responseErrors.push(violation?.field + ": " + violation?.description)
}
- }).catch((error) => {
- console.log(error)
+ }
+ setErrors(responseErrors)
})
+ }
+
+ if (response.ok) {
+ navigate('/login')
+ }
+ }).catch((error) => {
+ console.log(error)
+ })
+ }
+
+ useEffect(() => {
+ if (auth?.user) {
+ navigate(from, {replace: true});
}
+ });
- return (
-
-
-
- Create an account
-
-
- Enter your email below to create your account
-
-
-