From 67335e2278519278ee011176d746f1f89f0a9cf8 Mon Sep 17 00:00:00 2001 From: Diego Torres Date: Tue, 8 Jul 2025 20:41:07 -0500 Subject: [PATCH 1/2] refactor: simplify email validation by using verifyUniqueEmail function --- src/services/user.client-service.ts | 8 ++------ src/services/user.service.ts | 8 ++++++++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/services/user.client-service.ts b/src/services/user.client-service.ts index d16fd9d..c42284a 100644 --- a/src/services/user.client-service.ts +++ b/src/services/user.client-service.ts @@ -1,10 +1,6 @@ -import { client } from "@/lib/utils"; +import { verifyUniqueEmail } from "./user.service"; // 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 }, - }); - - return body; + return verifyUniqueEmail(email); } diff --git a/src/services/user.service.ts b/src/services/user.service.ts index 94d62bd..c95ac5e 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 ? true : false; +} From a8c3ab071082f7728ce0a4a7b3175df4fa7bf5b5 Mon Sep 17 00:00:00 2001 From: Diego Torres Date: Tue, 8 Jul 2025 21:08:45 -0500 Subject: [PATCH 2/2] feat: add verify-email route and update email verification logic --- .react-router/types/+register.ts | 1 + src/routes.ts | 1 + src/routes/verify-email/index.tsx | 14 ++++++++++++++ src/services/user.client-service.ts | 19 +++++++++++++++---- src/services/user.service.ts | 2 +- 5 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 src/routes/verify-email/index.tsx 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 c42284a..63fc199 100644 --- a/src/services/user.client-service.ts +++ b/src/services/user.client-service.ts @@ -1,6 +1,17 @@ -import { verifyUniqueEmail } from "./user.service"; - -// 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 { - return verifyUniqueEmail(email); + try { + const response = await fetch( + `/verify-email?email=${encodeURIComponent(email)}` + ); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + 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 c95ac5e..d389630 100644 --- a/src/services/user.service.ts +++ b/src/services/user.service.ts @@ -54,5 +54,5 @@ export async function verifyUniqueEmail(email: string): Promise { where: { email }, }); - return user ? true : false; + return user ? false : true; }