summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorHyteq <DerpsDer.es@gmail.com>2025-06-24 11:31:35 +0300
committerHyteq <DerpsDer.es@gmail.com>2025-06-24 11:31:35 +0300
commit3b4577e474a95a16f0b9478ad3eddf50a2ba90eb (patch)
tree928c6fe5bc27ddf4e6ae5f15b0159e11aed52ca6 /packages
parent30bc2127a2e1fb8368d0e29d5eb755e30dc1485e (diff)
downloadopencut-3b4577e474a95a16f0b9478ad3eddf50a2ba90eb.tar.gz
feat: initial auth package
Diffstat (limited to 'packages')
-rw-r--r--packages/auth/package.json19
-rw-r--r--packages/auth/src/client.ts5
-rw-r--r--packages/auth/src/index.ts5
-rw-r--r--packages/auth/src/server.ts29
4 files changed, 58 insertions, 0 deletions
diff --git a/packages/auth/package.json b/packages/auth/package.json
new file mode 100644
index 00000000..3ee43643
--- /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 00000000..deda3928
--- /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 00000000..f0676f1f
--- /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 00000000..f6c68dc5
--- /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