mirror of
https://github.com/sourcebot-dev/sourcebot.git
synced 2025-12-15 05:45:20 +00:00
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
|
|
import NextAuth from "next-auth"
|
||
|
|
import GitHub from "next-auth/providers/github"
|
||
|
|
import { PrismaAdapter } from "@auth/prisma-adapter"
|
||
|
|
import { prisma } from "@/prisma";
|
||
|
|
import type { Provider } from "next-auth/providers"
|
||
|
|
import { AUTH_GITHUB_CLIENT_ID, AUTH_GITHUB_CLIENT_SECRET, AUTH_SECRET } from "./lib/environment";
|
||
|
|
|
||
|
|
const providers: Provider[] = [
|
||
|
|
GitHub({
|
||
|
|
clientId: AUTH_GITHUB_CLIENT_ID,
|
||
|
|
clientSecret: AUTH_GITHUB_CLIENT_SECRET,
|
||
|
|
}),
|
||
|
|
];
|
||
|
|
|
||
|
|
// @see: https://authjs.dev/guides/pages/signin
|
||
|
|
export const providerMap = providers
|
||
|
|
.map((provider) => {
|
||
|
|
if (typeof provider === "function") {
|
||
|
|
const providerData = provider()
|
||
|
|
return { id: providerData.id, name: providerData.name }
|
||
|
|
} else {
|
||
|
|
return { id: provider.id, name: provider.name }
|
||
|
|
}
|
||
|
|
})
|
||
|
|
.filter((provider) => provider.id !== "credentials");
|
||
|
|
|
||
|
|
|
||
|
|
export const { handlers, signIn, signOut, auth } = NextAuth({
|
||
|
|
secret: AUTH_SECRET,
|
||
|
|
adapter: PrismaAdapter(prisma),
|
||
|
|
session: {
|
||
|
|
strategy: "jwt",
|
||
|
|
},
|
||
|
|
providers: providers,
|
||
|
|
pages: {
|
||
|
|
signIn: "/login"
|
||
|
|
}
|
||
|
|
})
|