diff --git a/apps/landing/src/app/(frontend)/(auth)/signin/_action/signin-action.ts b/apps/landing/src/app/(frontend)/(auth)/signin/_action/signin-action.ts index 289bc40..5ad05f1 100644 --- a/apps/landing/src/app/(frontend)/(auth)/signin/_action/signin-action.ts +++ b/apps/landing/src/app/(frontend)/(auth)/signin/_action/signin-action.ts @@ -2,14 +2,14 @@ import { setAccessToken, setRefreshToken } from '@/lib/cookies'; import { fetcher } from '@/lib/openapi'; +import { z } from 'zod'; +import { signInValidationSchema } from '../_validation/signin-validation'; + +export async function SigninAction( + data: z.infer +) { + const { email, password } = signInValidationSchema.parse(data); -export async function SigninAction({ - email, - password, -}: { - email: string; - password: string; -}) { const { data: json, error } = await fetcher.POST('/v1/auth/login', { body: { email, diff --git a/apps/landing/src/app/(frontend)/(auth)/signin/_components/signin-form.tsx b/apps/landing/src/app/(frontend)/(auth)/signin/_components/signin-form.tsx index bc7c1c9..e12a134 100644 --- a/apps/landing/src/app/(frontend)/(auth)/signin/_components/signin-form.tsx +++ b/apps/landing/src/app/(frontend)/(auth)/signin/_components/signin-form.tsx @@ -11,21 +11,19 @@ import { Input, } from '@components/atoms'; import { zodResolver } from '@hookform/resolvers/zod'; -import { authLoginSchema } from '@schemas'; import { useMutation } from '@tanstack/react-query'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; import { LuLoader } from 'react-icons/lu'; import { z } from 'zod'; import { SigninAction } from '../_action/signin-action'; - -type SigninData = z.infer; +import { signInValidationSchema } from '../_validation/signin-validation'; export function SigninForm() { const router = useRouter(); - const form = useForm({ - resolver: zodResolver(authLoginSchema), + const form = useForm>({ + resolver: zodResolver(signInValidationSchema), defaultValues: { email: '', password: '', @@ -42,7 +40,7 @@ export function SigninForm() { }, }); - const onSubmit = (values: SigninData) => { + const onSubmit = (values: z.infer) => { mutate(values); }; @@ -50,7 +48,7 @@ export function SigninForm() {
{error && ( -
+
{(error as Error).message}
)} diff --git a/apps/landing/src/app/(frontend)/(auth)/signin/_validation/signin-validation.ts b/apps/landing/src/app/(frontend)/(auth)/signin/_validation/signin-validation.ts new file mode 100644 index 0000000..a74f034 --- /dev/null +++ b/apps/landing/src/app/(frontend)/(auth)/signin/_validation/signin-validation.ts @@ -0,0 +1,17 @@ +import { z } from 'zod'; + +export const signInValidationSchema = z.object({ + email: z + .string({ + required_error: 'Email tidak boleh kosong', + invalid_type_error: 'Email harus berupa string', + }) + .min(1, 'Email tidak boleh kosong') + .email('Email harus valid'), + password: z + .string({ + required_error: 'Password tidak boleh kosong', + invalid_type_error: 'Password harus berupa string', + }) + .min(1, 'Password tidak boleh kosong'), +});