diff options
| author | Dhravya Shah <[email protected]> | 2025-01-20 17:49:19 -0700 |
|---|---|---|
| committer | Dhravya Shah <[email protected]> | 2025-01-20 17:50:45 -0700 |
| commit | 47904011de646b92b1f3774f9a30bcfa118c5dc4 (patch) | |
| tree | ab0e5e79c4ad5465ceeedc9b4015be2d9d01be45 /apps/web/app/lib/auth/authMiddleware.ts | |
| parent | Merge pull request #295 from supermemoryai/extension/duplicate-save-fix (diff) | |
| download | supermemory-47904011de646b92b1f3774f9a30bcfa118c5dc4.tar.xz supermemory-47904011de646b92b1f3774f9a30bcfa118c5dc4.zip | |
Supermemory v2 Release 🚀
Diffstat (limited to 'apps/web/app/lib/auth/authMiddleware.ts')
| -rw-r--r-- | apps/web/app/lib/auth/authMiddleware.ts | 45 |
1 files changed, 45 insertions, 0 deletions
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<User | null> => { + 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]; +}; |