mirror of
https://github.com/SrIzan10/next-auth.git
synced 2026-05-01 10:55:20 +00:00
* added saml-jackson provider * incorporated code review changes * fixed SAMLJacksonProfile type * trying to adjust code for monorepo * cleanup from merge with main * updated docs link * added example * consistent naming * Incorporated code review changes: - env var default values moved to env.local.example - consistent naming and use of id * email is guaranteed to be present
219 lines
7.1 KiB
TypeScript
219 lines
7.1 KiB
TypeScript
import NextAuth, { NextAuthOptions } from "next-auth"
|
|
// import EmailProvider from "next-auth/providers/email"
|
|
import GitHubProvider from "next-auth/providers/github"
|
|
import Auth0Provider from "next-auth/providers/auth0"
|
|
import KeycloakProvider from "next-auth/providers/keycloak"
|
|
import TwitterProvider, {
|
|
TwitterLegacy as TwitterLegacyProvider,
|
|
} from "next-auth/providers/twitter"
|
|
import CredentialsProvider from "next-auth/providers/credentials"
|
|
import IDS4Provider from "next-auth/providers/identity-server4"
|
|
import Twitch from "next-auth/providers/twitch"
|
|
import GoogleProvider from "next-auth/providers/google"
|
|
import FacebookProvider from "next-auth/providers/facebook"
|
|
import FoursquareProvider from "next-auth/providers/foursquare"
|
|
// import FreshbooksProvider from "next-auth/providers/freshbooks"
|
|
import GitlabProvider from "next-auth/providers/gitlab"
|
|
import InstagramProvider from "next-auth/providers/instagram"
|
|
import LineProvider from "next-auth/providers/line"
|
|
import LinkedInProvider from "next-auth/providers/linkedin"
|
|
import MailchimpProvider from "next-auth/providers/mailchimp"
|
|
import DiscordProvider from "next-auth/providers/discord"
|
|
import AzureADProvider from "next-auth/providers/azure-ad"
|
|
import SpotifyProvider from "next-auth/providers/spotify"
|
|
import CognitoProvider from "next-auth/providers/cognito"
|
|
import SlackProvider from "next-auth/providers/slack"
|
|
import Okta from "next-auth/providers/okta"
|
|
import AzureB2C from "next-auth/providers/azure-ad-b2c"
|
|
import OsuProvider from "next-auth/providers/osu"
|
|
import AppleProvider from "next-auth/providers/apple"
|
|
import PatreonProvider from "next-auth/providers/patreon"
|
|
import TraktProvider from "next-auth/providers/trakt"
|
|
import WorkOSProvider from "next-auth/providers/workos"
|
|
import BoxyHQSAMLProvider from "next-auth/providers/boxyhq-saml"
|
|
|
|
// import { PrismaAdapter } from "@next-auth/prisma-adapter"
|
|
// import { PrismaClient } from "@prisma/client"
|
|
// const prisma = new PrismaClient()
|
|
// const adapter = PrismaAdapter(prisma)
|
|
|
|
// import { Client as FaunaClient } from "faunadb"
|
|
// import { FaunaAdapter } from "@next-auth/fauna-adapter"
|
|
|
|
// const client = new FaunaClient({
|
|
// secret: process.env.FAUNA_SECRET,
|
|
// domain: process.env.FAUNA_DOMAIN,
|
|
// })
|
|
// const adapter = FaunaAdapter(client)
|
|
export const authOptions: NextAuthOptions = {
|
|
// adapter,
|
|
providers: [
|
|
// E-mail
|
|
// Start fake e-mail server with `npm run start:email`
|
|
// EmailProvider({
|
|
// server: {
|
|
// host: "127.0.0.1",
|
|
// auth: null,
|
|
// secure: false,
|
|
// port: 1025,
|
|
// tls: { rejectUnauthorized: false },
|
|
// },
|
|
// }),
|
|
// Credentials
|
|
CredentialsProvider({
|
|
name: "Credentials",
|
|
credentials: {
|
|
password: { label: "Password", type: "password" },
|
|
},
|
|
async authorize(credentials) {
|
|
if (credentials.password === "pw") {
|
|
return {
|
|
name: "Fill Murray",
|
|
email: "bill@fillmurray.com",
|
|
image: "https://www.fillmurray.com/64/64",
|
|
}
|
|
}
|
|
return null
|
|
},
|
|
}),
|
|
// OAuth 1
|
|
// TwitterLegacyProvider({
|
|
// clientId: process.env.TWITTER_LEGACY_ID,
|
|
// clientSecret: process.env.TWITTER_LEGACY_SECRET,
|
|
// }),
|
|
// OAuth 2 / OIDC
|
|
TwitterProvider({
|
|
// Opt-in to the new Twitter API for now. Should be default in the future.
|
|
version: "2.0",
|
|
clientId: process.env.TWITTER_ID,
|
|
clientSecret: process.env.TWITTER_SECRET,
|
|
}),
|
|
GitHubProvider({
|
|
clientId: process.env.GITHUB_ID,
|
|
clientSecret: process.env.GITHUB_SECRET,
|
|
}),
|
|
Auth0Provider({
|
|
clientId: process.env.AUTH0_ID,
|
|
clientSecret: process.env.AUTH0_SECRET,
|
|
issuer: process.env.AUTH0_ISSUER,
|
|
}),
|
|
KeycloakProvider({
|
|
clientId: process.env.KEYCLOAK_ID,
|
|
clientSecret: process.env.KEYCLOAK_SECRET,
|
|
issuer: process.env.KEYCLOAK_ISSUER,
|
|
}),
|
|
Twitch({
|
|
clientId: process.env.TWITCH_ID,
|
|
clientSecret: process.env.TWITCH_SECRET,
|
|
}),
|
|
GoogleProvider({
|
|
clientId: process.env.GOOGLE_ID,
|
|
clientSecret: process.env.GOOGLE_SECRET,
|
|
}),
|
|
FacebookProvider({
|
|
clientId: process.env.FACEBOOK_ID,
|
|
clientSecret: process.env.FACEBOOK_SECRET,
|
|
}),
|
|
FoursquareProvider({
|
|
clientId: process.env.FOURSQUARE_ID,
|
|
clientSecret: process.env.FOURSQUARE_SECRET,
|
|
}),
|
|
// FreshbooksProvider({
|
|
// clientId: process.env.FRESHBOOKS_ID,
|
|
// clientSecret: process.env.FRESHBOOKS_SECRET,
|
|
// }),
|
|
GitlabProvider({
|
|
clientId: process.env.GITLAB_ID,
|
|
clientSecret: process.env.GITLAB_SECRET,
|
|
}),
|
|
InstagramProvider({
|
|
clientId: process.env.INSTAGRAM_ID,
|
|
clientSecret: process.env.INSTAGRAM_SECRET,
|
|
}),
|
|
LineProvider({
|
|
clientId: process.env.LINE_ID,
|
|
clientSecret: process.env.LINE_SECRET,
|
|
}),
|
|
LinkedInProvider({
|
|
clientId: process.env.LINKEDIN_ID,
|
|
clientSecret: process.env.LINKEDIN_SECRET,
|
|
}),
|
|
MailchimpProvider({
|
|
clientId: process.env.MAILCHIMP_ID,
|
|
clientSecret: process.env.MAILCHIMP_SECRET,
|
|
}),
|
|
IDS4Provider({
|
|
clientId: process.env.IDS4_ID,
|
|
clientSecret: process.env.IDS4_SECRET,
|
|
issuer: process.env.IDS4_ISSUER,
|
|
}),
|
|
DiscordProvider({
|
|
clientId: process.env.DISCORD_ID,
|
|
clientSecret: process.env.DISCORD_SECRET,
|
|
}),
|
|
AzureADProvider({
|
|
clientId: process.env.AZURE_AD_CLIENT_ID,
|
|
clientSecret: process.env.AZURE_AD_CLIENT_SECRET,
|
|
tenantId: process.env.AZURE_AD_TENANT_ID,
|
|
profilePhotoSize: 48,
|
|
}),
|
|
SpotifyProvider({
|
|
clientId: process.env.SPOTIFY_ID,
|
|
clientSecret: process.env.SPOTIFY_SECRET,
|
|
}),
|
|
CognitoProvider({
|
|
clientId: process.env.COGNITO_ID,
|
|
clientSecret: process.env.COGNITO_SECRET,
|
|
issuer: process.env.COGNITO_ISSUER,
|
|
}),
|
|
Okta({
|
|
clientId: process.env.OKTA_ID,
|
|
clientSecret: process.env.OKTA_SECRET,
|
|
issuer: process.env.OKTA_ISSUER,
|
|
}),
|
|
SlackProvider({
|
|
clientId: process.env.SLACK_ID,
|
|
clientSecret: process.env.SLACK_SECRET,
|
|
}),
|
|
AzureB2C({
|
|
clientId: process.env.AZURE_B2C_ID,
|
|
clientSecret: process.env.AZURE_B2C_SECRET,
|
|
tenantId: process.env.AZURE_B2C_TENANT_ID,
|
|
primaryUserFlow: process.env.AZURE_B2C_PRIMARY_USER_FLOW,
|
|
}),
|
|
OsuProvider({
|
|
clientId: process.env.OSU_CLIENT_ID,
|
|
clientSecret: process.env.OSU_CLIENT_SECRET,
|
|
}),
|
|
AppleProvider({
|
|
clientId: process.env.APPLE_ID,
|
|
clientSecret: process.env.APPLE_SECRET,
|
|
}),
|
|
PatreonProvider({
|
|
clientId: process.env.PATREON_ID,
|
|
clientSecret: process.env.PATREON_SECRET,
|
|
}),
|
|
TraktProvider({
|
|
clientId: process.env.TRAKT_ID,
|
|
clientSecret: process.env.TRAKT_SECRET,
|
|
}),
|
|
WorkOSProvider({
|
|
clientId: process.env.WORKOS_ID,
|
|
clientSecret: process.env.WORKOS_SECRET,
|
|
}),
|
|
BoxyHQSAMLProvider({
|
|
issuer: process.env.BOXYHQSAML_ISSUER,
|
|
clientId: process.env.BOXYHQSAML_ID,
|
|
clientSecret: process.env.BOXYHQSAML_SECRET,
|
|
}),
|
|
],
|
|
debug: true,
|
|
theme: {
|
|
colorScheme: "auto",
|
|
logo: "https://next-auth.js.org/img/logo/logo-sm.png",
|
|
brandColor: "#1786fb",
|
|
},
|
|
}
|
|
|
|
export default NextAuth(authOptions)
|