diff options
| author | MohamedBassem <me@mbassem.com> | 2024-03-13 21:43:44 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2024-03-14 16:40:45 +0000 |
| commit | 04572a8e5081b1e4871e273cde9dbaaa44c52fe0 (patch) | |
| tree | 8e993acb732a50d1306d4d6953df96c165c57f57 /packages/web/server | |
| parent | 2df08ed08c065e8b91bc8df0266bd4bcbb062be4 (diff) | |
| download | karakeep-04572a8e5081b1e4871e273cde9dbaaa44c52fe0.tar.zst | |
structure: Create apps dir and copy tooling dir from t3-turbo repo
Diffstat (limited to 'packages/web/server')
| -rw-r--r-- | packages/web/server/api/client.ts | 16 | ||||
| -rw-r--r-- | packages/web/server/auth.ts | 96 |
2 files changed, 0 insertions, 112 deletions
diff --git a/packages/web/server/api/client.ts b/packages/web/server/api/client.ts deleted file mode 100644 index 88ea7a0e..00000000 --- a/packages/web/server/api/client.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { appRouter } from "@hoarder/trpc/routers/_app"; -import { getServerAuthSession } from "@/server/auth"; -import { Context, createCallerFactory } from "@hoarder/trpc"; -import { db } from "@hoarder/db"; - -export const createContext = async (database?: typeof db): Promise<Context> => { - const session = await getServerAuthSession(); - return { - user: session?.user ?? null, - db: database ?? db, - }; -}; - -const createCaller = createCallerFactory(appRouter); - -export const api = createCaller(createContext); diff --git a/packages/web/server/auth.ts b/packages/web/server/auth.ts deleted file mode 100644 index 950443b9..00000000 --- a/packages/web/server/auth.ts +++ /dev/null @@ -1,96 +0,0 @@ -import NextAuth, { NextAuthOptions, getServerSession } from "next-auth"; -import type { Adapter } from "next-auth/adapters"; -import AuthentikProvider from "next-auth/providers/authentik"; -import serverConfig from "@hoarder/shared/config"; -import { validatePassword } from "@hoarder/trpc/auth"; -import { db } from "@hoarder/db"; -import { DefaultSession } from "next-auth"; -import CredentialsProvider from "next-auth/providers/credentials"; -import { DrizzleAdapter } from "@auth/drizzle-adapter"; - -import { Provider } from "next-auth/providers/index"; - -declare module "next-auth/jwt" { - export interface JWT { - user: { - id: string; - role: "admin" | "user"; - } & DefaultSession["user"]; - } -} - -declare module "next-auth" { - /** - * Returned by `useSession`, `getSession` and received as a prop on the `SessionProvider` React Context - */ - export interface Session { - user: { - id: string; - role: "admin" | "user"; - } & DefaultSession["user"]; - } - - export interface DefaultUser { - role: "admin" | "user" | null; - } -} - -const providers: Provider[] = [ - CredentialsProvider({ - // The name to display on the sign in form (e.g. "Sign in with...") - name: "Credentials", - credentials: { - email: { label: "Email", type: "email", placeholder: "Email" }, - password: { label: "Password", type: "password" }, - }, - async authorize(credentials) { - if (!credentials) { - return null; - } - - try { - return await validatePassword( - credentials?.email, - credentials?.password, - ); - } catch (e) { - return null; - } - }, - }), -]; - -if (serverConfig.auth.authentik) { - providers.push(AuthentikProvider(serverConfig.auth.authentik)); -} - -export const authOptions: NextAuthOptions = { - // https://github.com/nextauthjs/next-auth/issues/9493 - adapter: DrizzleAdapter(db) as Adapter, - providers: providers, - session: { - strategy: "jwt", - }, - callbacks: { - async jwt({ token, user }) { - if (user) { - token.user = { - id: user.id, - name: user.name, - email: user.email, - image: user.image, - role: user.role || "user", - }; - } - return token; - }, - async session({ session, token }) { - session.user = { ...token.user }; - return session; - }, - }, -}; - -export const authHandler = NextAuth(authOptions); - -export const getServerAuthSession = () => getServerSession(authOptions); |
