From 47904011de646b92b1f3774f9a30bcfa118c5dc4 Mon Sep 17 00:00:00 2001 From: Dhravya Shah Date: Mon, 20 Jan 2025 17:49:19 -0700 Subject: =?UTF-8?q?Supermemory=20v2=20Release=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/app/lib/auth/authMiddleware.ts | 45 +++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 apps/web/app/lib/auth/authMiddleware.ts (limited to 'apps/web/app/lib/auth/authMiddleware.ts') diff --git a/apps/web/app/lib/auth/authMiddleware.ts b/apps/web/app/lib/auth/authMiddleware.ts new file mode 100644 index 00000000..e4b59243 --- /dev/null +++ b/apps/web/app/lib/auth/authMiddleware.ts @@ -0,0 +1,45 @@ +import { AppLoadContext, redirect } from "@remix-run/cloudflare"; + +import { getSessionFromRequest } from "@supermemory/authkit-remix-cloudflare/src/session"; +import { database, eq } from "@supermemory/db"; +import { User, users } from "@supermemory/db/schema"; + +export const verifyOrCreateUser = async ( + request: Request, + context: AppLoadContext, +): Promise => { + const session = await getSessionFromRequest(request, context); + console.log(session); + if (!session?.user?.id) { + return null; + } + + let user = await database(context.cloudflare.env.HYPERDRIVE.connectionString) + .select() + .from(users) + .where(eq(users.uuid, session.user.id)); + + if ((!user || user.length === 0) && session?.user?.id) { + const newUser = await database(context.cloudflare.env.HYPERDRIVE.connectionString) + .insert(users) + .values({ + uuid: session.user?.id, + email: session.user?.email, + firstName: session.user?.firstName, + lastName: session.user?.lastName, + createdAt: new Date(), + updatedAt: new Date(), + emailVerified: false, + profilePictureUrl: session.user?.profilePictureUrl ?? "", + }) + .returning(); + + user = newUser; + } + + if (!user) { + return null; + } + + return user[0]; +}; -- cgit v1.2.3