diff --git a/.react-router/types/+register.ts b/.react-router/types/+register.ts index 6b6dd3e..8e951ae 100644 --- a/.react-router/types/+register.ts +++ b/.react-router/types/+register.ts @@ -28,4 +28,5 @@ type Params = { "/account/profile": {}; "/account/orders": {}; "/not-found": {}; + "/verify-email": {}; }; \ No newline at end of file diff --git a/src/routes.ts b/src/routes.ts index aa89265..c0c8c8a 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -23,6 +23,7 @@ export default [ route("orders", "./routes/account/orders/index.tsx"), ]), route("/not-found", "./routes/not-found/index.tsx"), + route("/verify-email", "./routes/verify-email/index.tsx"), ], }, ] satisfies RouteConfig; diff --git a/src/routes/verify-email/index.tsx b/src/routes/verify-email/index.tsx new file mode 100644 index 0000000..7ed161f --- /dev/null +++ b/src/routes/verify-email/index.tsx @@ -0,0 +1,14 @@ +import { verifyUniqueEmail } from "@/services/user.service"; + +import type { Route } from "./+types"; + +export async function loader({ request }: Route.ActionArgs) { + const url = new URL(request.url); + const email = url.searchParams.get("email"); + + if (email) { + const response = await verifyUniqueEmail(email); + return response; + } + return false; +} diff --git a/src/services/user.client-service.ts b/src/services/user.client-service.ts index d16fd9d..63fc199 100644 --- a/src/services/user.client-service.ts +++ b/src/services/user.client-service.ts @@ -1,10 +1,17 @@ -import { client } from "@/lib/utils"; - -// Se mantiene para hacer la validación de correo electrónico en el registro del lado del cliente export async function findEmail(email: string): Promise { - const body = await client("/users/findEmail", { - body: { email }, - }); + try { + const response = await fetch( + `/verify-email?email=${encodeURIComponent(email)}` + ); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } - return body; + const result = await response.json(); + return result; + } catch (error) { + console.error("Error verifying email:", error); + return false; + } } diff --git a/src/services/user.service.ts b/src/services/user.service.ts index 94d62bd..d389630 100644 --- a/src/services/user.service.ts +++ b/src/services/user.service.ts @@ -48,3 +48,11 @@ export async function getOrCreateUser(email: string): Promise { return existingUser; } + +export async function verifyUniqueEmail(email: string): Promise { + const user = await prisma.user.findUnique({ + where: { email }, + }); + + return user ? false : true; +}