From 3b4577e474a95a16f0b9478ad3eddf50a2ba90eb Mon Sep 17 00:00:00 2001 From: Hyteq Date: Tue, 24 Jun 2025 11:31:35 +0300 Subject: [PATCH] feat: initial auth package --- packages/auth/package.json | 19 +++++++++++++++++++ packages/auth/src/client.ts | 5 +++++ packages/auth/src/index.ts | 5 +++++ packages/auth/src/server.ts | 29 +++++++++++++++++++++++++++++ 4 files changed, 58 insertions(+) create mode 100644 packages/auth/package.json create mode 100644 packages/auth/src/client.ts create mode 100644 packages/auth/src/index.ts create mode 100644 packages/auth/src/server.ts diff --git a/packages/auth/package.json b/packages/auth/package.json new file mode 100644 index 0000000..3ee4364 --- /dev/null +++ b/packages/auth/package.json @@ -0,0 +1,19 @@ +{ + "name": "@opencut/auth", + "version": "0.0.0", + "description": "Authentication package for OpenCut", + "main": "./src/index.ts", + "types": "./src/index.ts", + "exports": { + ".": "./src/index.ts", + "./client": "./src/client.ts", + "./server": "./src/server.ts" + }, + "dependencies": { + "better-auth": "^1.1.1", + "@opencut/db": "workspace:*" + }, + "devDependencies": { + "@types/node": "^22.10.2" + } +} \ No newline at end of file diff --git a/packages/auth/src/client.ts b/packages/auth/src/client.ts new file mode 100644 index 0000000..deda392 --- /dev/null +++ b/packages/auth/src/client.ts @@ -0,0 +1,5 @@ +import { createAuthClient } from "better-auth/react"; + +export const { signIn, signUp, useSession } = createAuthClient({ + baseURL: process.env.NEXT_PUBLIC_BETTER_AUTH_URL!, +}); \ No newline at end of file diff --git a/packages/auth/src/index.ts b/packages/auth/src/index.ts new file mode 100644 index 0000000..f0676f1 --- /dev/null +++ b/packages/auth/src/index.ts @@ -0,0 +1,5 @@ +// Re-export server auth +export * from "./server"; + +// Re-export client auth +export * from "./client"; \ No newline at end of file diff --git a/packages/auth/src/server.ts b/packages/auth/src/server.ts new file mode 100644 index 0000000..f6c68dc --- /dev/null +++ b/packages/auth/src/server.ts @@ -0,0 +1,29 @@ +import { betterAuth } from "better-auth"; +import { drizzleAdapter } from "better-auth/adapters/drizzle"; +import { db } from "@opencut/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; \ No newline at end of file