From e2872005fb0963988730317a2fdb4dce39ee47b5 Mon Sep 17 00:00:00 2001 From: Hyteq Date: Tue, 24 Jun 2025 11:27:19 +0300 Subject: feat: initial auth package --- apps/web/src/lib/db/index.tsx | 14 --------- apps/web/src/lib/db/schema.ts | 69 ------------------------------------------- 2 files changed, 83 deletions(-) delete mode 100644 apps/web/src/lib/db/index.tsx delete mode 100644 apps/web/src/lib/db/schema.ts (limited to 'apps/web/src') diff --git a/apps/web/src/lib/db/index.tsx b/apps/web/src/lib/db/index.tsx deleted file mode 100644 index b66c6e39..00000000 --- a/apps/web/src/lib/db/index.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { drizzle } from "drizzle-orm/node-postgres"; -import { Pool } from "pg"; -import * as schema from "./schema"; - -const pool = new Pool({ - connectionString: process.env.DATABASE_URL, - max: 3, - idleTimeoutMillis: 10000, - connectionTimeoutMillis: 15000, - query_timeout: 20000, - statement_timeout: 20000, -}); - -export const db = drizzle(pool, { schema }); diff --git a/apps/web/src/lib/db/schema.ts b/apps/web/src/lib/db/schema.ts deleted file mode 100644 index 7c38724a..00000000 --- a/apps/web/src/lib/db/schema.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { pgTable, text, timestamp, boolean } from "drizzle-orm/pg-core"; - -export const users = pgTable("users", { - id: text("id").primaryKey(), - name: text("name").notNull(), - email: text("email").notNull().unique(), - emailVerified: boolean("email_verified") - .$defaultFn(() => false) - .notNull(), - image: text("image"), - createdAt: timestamp("created_at") - .$defaultFn(() => /* @__PURE__ */ new Date()) - .notNull(), - updatedAt: timestamp("updated_at") - .$defaultFn(() => /* @__PURE__ */ new Date()) - .notNull(), -}).enableRLS(); - -export const sessions = pgTable("sessions", { - id: text("id").primaryKey(), - expiresAt: timestamp("expires_at").notNull(), - token: text("token").notNull().unique(), - createdAt: timestamp("created_at").notNull(), - updatedAt: timestamp("updated_at").notNull(), - ipAddress: text("ip_address"), - userAgent: text("user_agent"), - userId: text("user_id") - .notNull() - .references(() => users.id, { onDelete: "cascade" }), -}).enableRLS(); - -export const accounts = pgTable("accounts", { - id: text("id").primaryKey(), - accountId: text("account_id").notNull(), - providerId: text("provider_id").notNull(), - userId: text("user_id") - .notNull() - .references(() => users.id, { onDelete: "cascade" }), - accessToken: text("access_token"), - refreshToken: text("refresh_token"), - idToken: text("id_token"), - accessTokenExpiresAt: timestamp("access_token_expires_at"), - refreshTokenExpiresAt: timestamp("refresh_token_expires_at"), - scope: text("scope"), - password: text("password"), - createdAt: timestamp("created_at").notNull(), - updatedAt: timestamp("updated_at").notNull(), -}).enableRLS(); - -export const verifications = pgTable("verifications", { - id: text("id").primaryKey(), - identifier: text("identifier").notNull(), - value: text("value").notNull(), - expiresAt: timestamp("expires_at").notNull(), - createdAt: timestamp("created_at").$defaultFn( - () => /* @__PURE__ */ new Date() - ), - updatedAt: timestamp("updated_at").$defaultFn( - () => /* @__PURE__ */ new Date() - ), -}).enableRLS(); - -export const waitlist = pgTable("waitlist", { - id: text("id").primaryKey(), - email: text("email").notNull().unique(), - createdAt: timestamp("created_at") - .$defaultFn(() => /* @__PURE__ */ new Date()) - .notNull(), -}).enableRLS(); -- cgit v1.3.1 From d25e1eaa1d83617cecba822ac0fb24fe61bb3a08 Mon Sep 17 00:00:00 2001 From: Hyteq Date: Tue, 24 Jun 2025 11:29:15 +0300 Subject: feat: migrated packages properly, using packages in web app --- apps/web/package.json | 2 ++ apps/web/src/app/api/auth/[...all]/route.ts | 2 +- apps/web/src/components/auth-form.tsx | 2 +- apps/web/src/components/header.tsx | 2 +- apps/web/src/lib/auth-client.ts | 4 ---- apps/web/src/lib/auth.ts | 29 ---------------------------- bun.lockb | Bin 200656 -> 201960 bytes 7 files changed, 5 insertions(+), 36 deletions(-) delete mode 100644 apps/web/src/lib/auth-client.ts delete mode 100644 apps/web/src/lib/auth.ts (limited to 'apps/web/src') diff --git a/apps/web/package.json b/apps/web/package.json index b66a8eeb..ed08734e 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -19,6 +19,8 @@ "@ffmpeg/util": "^0.12.2", "@hello-pangea/dnd": "^18.0.1", "@hookform/resolvers": "^3.9.1", + "@opencut/auth": "workspace:*", + "@opencut/db": "workspace:*", "@types/pg": "^8.15.4", "@upstash/ratelimit": "^2.0.5", "@upstash/redis": "^1.35.0", diff --git a/apps/web/src/app/api/auth/[...all]/route.ts b/apps/web/src/app/api/auth/[...all]/route.ts index 1fb57443..393fb7e7 100644 --- a/apps/web/src/app/api/auth/[...all]/route.ts +++ b/apps/web/src/app/api/auth/[...all]/route.ts @@ -1,4 +1,4 @@ -import { auth } from "@/lib/auth"; +import { auth } from "@opencut/auth/server"; import { toNextJsHandler } from "better-auth/next-js"; export const { POST, GET } = toNextJsHandler(auth); \ No newline at end of file diff --git a/apps/web/src/components/auth-form.tsx b/apps/web/src/components/auth-form.tsx index 3dd56036..72bddd3d 100644 --- a/apps/web/src/components/auth-form.tsx +++ b/apps/web/src/components/auth-form.tsx @@ -1,7 +1,7 @@ "use client"; import { useRouter } from "next/navigation"; -import { signUp, signIn } from "@/lib/auth-client"; +import { signUp, signIn } from "@opencut/auth/client"; import { Button } from "@/components/ui/button"; import { Card, diff --git a/apps/web/src/components/header.tsx b/apps/web/src/components/header.tsx index 9f842b24..d1e0518f 100644 --- a/apps/web/src/components/header.tsx +++ b/apps/web/src/components/header.tsx @@ -5,7 +5,7 @@ import Image from "next/image"; import { Button } from "./ui/button"; import { ArrowRight } from "lucide-react"; import { HeaderBase } from "./header-base"; -import { useSession } from "@/lib/auth-client"; +import { useSession } from "@opencut/auth/client"; import { getStars } from "@/lib/fetchGhStars"; import { Star } from "lucide-react"; import { useEffect, useState } from "react"; diff --git a/apps/web/src/lib/auth-client.ts b/apps/web/src/lib/auth-client.ts deleted file mode 100644 index 1ab4e636..00000000 --- a/apps/web/src/lib/auth-client.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { createAuthClient } from "better-auth/react"; -export const { signIn, signUp, useSession } = createAuthClient({ - baseURL: process.env.NEXT_PUBLIC_BETTER_AUTH_URL!, -}); diff --git a/apps/web/src/lib/auth.ts b/apps/web/src/lib/auth.ts deleted file mode 100644 index d0175c97..00000000 --- a/apps/web/src/lib/auth.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { betterAuth } from "better-auth"; -import { drizzleAdapter } from "better-auth/adapters/drizzle"; -import { db } from "./db"; - -export const auth = betterAuth({ - database: drizzleAdapter(db, { - provider: "pg", - usePlural: true, - }), - secret: process.env.BETTER_AUTH_SECRET!, - user: { - deleteUser: { - enabled: true, - }, - }, - emailAndPassword: { - enabled: true, - }, - socialProviders: { - google: { - clientId: process.env.GOOGLE_CLIENT_ID as string, - clientSecret: process.env.GOOGLE_CLIENT_SECRET as string, - }, - }, - appName: "OpenCut", - trustedOrigins: ["http://localhost:3000"], -}); - -export type Auth = typeof auth; diff --git a/bun.lockb b/bun.lockb index 2f51e8f2..2871b5e6 100644 Binary files a/bun.lockb and b/bun.lockb differ -- cgit v1.3.1