aboutsummaryrefslogtreecommitdiffstats
path: root/packages/web/server/auth.ts
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-02-11 14:54:52 +0000
committerMohamedBassem <me@mbassem.com>2024-02-11 14:55:09 +0000
commit2c2d05fd0a2c3c26d765f8a6beb88d907a097c1d (patch)
treec4738ba0bc011d60361f89aca9be3293474ab9e9 /packages/web/server/auth.ts
parentc2f1d6d8b8a0f09820153fc736806b147d46abfe (diff)
downloadkarakeep-2c2d05fd0a2c3c26d765f8a6beb88d907a097c1d.tar.zst
refactor: Migrating to trpc instead of next's route handers
Diffstat (limited to 'packages/web/server/auth.ts')
-rw-r--r--packages/web/server/auth.ts39
1 files changed, 39 insertions, 0 deletions
diff --git a/packages/web/server/auth.ts b/packages/web/server/auth.ts
new file mode 100644
index 00000000..05d3d296
--- /dev/null
+++ b/packages/web/server/auth.ts
@@ -0,0 +1,39 @@
+import NextAuth, { NextAuthOptions, getServerSession } from "next-auth";
+import { PrismaAdapter } from "@next-auth/prisma-adapter";
+import AuthentikProvider from "next-auth/providers/authentik";
+import serverConfig from "@/server/config";
+import { prisma } from "@remember/db";
+import { DefaultSession } from "next-auth";
+
+declare module "next-auth" {
+ /**
+ * Returned by `useSession`, `getSession` and received as a prop on the `SessionProvider` React Context
+ */
+ export interface Session {
+ user: {
+ id: string;
+ } & DefaultSession["user"];
+ }
+}
+
+const providers = [];
+
+if (serverConfig.auth.authentik) {
+ providers.push(AuthentikProvider(serverConfig.auth.authentik));
+}
+
+export const authOptions: NextAuthOptions = {
+ // Configure one or more authentication providers
+ adapter: PrismaAdapter(prisma),
+ providers: providers,
+ callbacks: {
+ session({ session, user }) {
+ session.user = { ...user };
+ return session;
+ },
+ },
+};
+
+export const authHandler = NextAuth(authOptions);
+
+export const getServerAuthSession = () => getServerSession(authOptions);