|
|
@ -20,6 +20,7 @@ import { useDispatch, useSelector } from "react-redux"; |
|
|
|
import { RootState } from "@/services/store"; |
|
|
|
import { setAuthTokens, setUserDetails } from "@/services/store/authSlice"; |
|
|
|
import { routes } from "constant/route.constant"; |
|
|
|
import { grey } from "@mui/material/colors"; |
|
|
|
|
|
|
|
const loginSchema = z.object({ |
|
|
|
username: z.string(), |
|
|
@ -30,15 +31,20 @@ type LoginFormValues = z.infer<typeof loginSchema>; |
|
|
|
|
|
|
|
export default function LoginPage() { |
|
|
|
const [loader, setLoader] = useState(false); |
|
|
|
const router = useRouter() |
|
|
|
const { register, handleSubmit, formState: { errors }, control } = useForm<LoginFormValues>({ |
|
|
|
const router = useRouter(); |
|
|
|
const { |
|
|
|
register, |
|
|
|
handleSubmit, |
|
|
|
formState: { errors }, |
|
|
|
control, |
|
|
|
} = useForm<LoginFormValues>({ |
|
|
|
resolver: zodResolver(loginSchema), |
|
|
|
}); |
|
|
|
const [error, setError] = useState(""); |
|
|
|
const dispatch = useDispatch(); |
|
|
|
const onSubmit = async (data: LoginFormValues) => { |
|
|
|
try { |
|
|
|
setLoader(true) |
|
|
|
setLoader(true); |
|
|
|
const response = await loginApi(data); |
|
|
|
localStorage.setItem("token", response.token); |
|
|
|
localStorage.setItem("refreshToken", response.refreshToken); |
|
|
@ -52,8 +58,8 @@ export default function LoginPage() { |
|
|
|
setLoader(false) |
|
|
|
router.push(routes.PRODUCTS); |
|
|
|
} catch (err) { |
|
|
|
setLoader(false) |
|
|
|
setError('Invalid credentials'); |
|
|
|
setLoader(false); |
|
|
|
setError("Invalid credentials"); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
@ -63,7 +69,11 @@ export default function LoginPage() { |
|
|
|
<Grid item display={{ xs: "none", md: "block" }} md={7}> |
|
|
|
<Box |
|
|
|
height={"100%"} |
|
|
|
sx={{ background: "var(--primary)" }} |
|
|
|
sx={{ |
|
|
|
background: grey[900], |
|
|
|
overflow: "hidden", |
|
|
|
height: "100vh", |
|
|
|
}} |
|
|
|
display={"flex"} |
|
|
|
alignItems={"center"} |
|
|
|
justifyContent={"space-between"} |
|
|
@ -88,7 +98,7 @@ export default function LoginPage() { |
|
|
|
paddingBlock={5} |
|
|
|
> |
|
|
|
<img src={UTILITY_CONSTANT.IMAGES.AUTH.HEADER_LOG} alt="logo" /> |
|
|
|
<form onSubmit={handleSubmit(onSubmit)}> |
|
|
|
<form onSubmit={handleSubmit(onSubmit)} style={{ width: "100%" }}> |
|
|
|
<Typography variant="h4">Welcome to Convexsol</Typography> |
|
|
|
<Typography variant="h4">Sign in to your account</Typography> |
|
|
|
<Box |
|
|
@ -116,7 +126,10 @@ export default function LoginPage() { |
|
|
|
/> |
|
|
|
</Box> |
|
|
|
<Box width={"100%"} marginBlockStart={"20px"}> |
|
|
|
<CustomizedButtons btnType="submit" label={!loader ? "Login" : "Login..."} /> |
|
|
|
<CustomizedButtons |
|
|
|
btnType="submit" |
|
|
|
label={!loader ? "Login" : "Login..."} |
|
|
|
/> |
|
|
|
</Box> |
|
|
|
</form> |
|
|
|
<Box |
|
|
|