UNPKG

@auth/nextjs

Version:

Authentication for Next.js.

86 lines (85 loc) 6.09 kB
// TODO: Generate this from the available providers export const providersEnv = { "42-school": [process.env.AUTH_42_SCHOOL_ID, process.env.AUTH_42_SCHOOL_SECRET], apple: [process.env.AUTH_APPLE_ID, process.env.AUTH_APPLE_SECRET], asgardeo: [process.env.AUTH_ASGARDEO_ID, process.env.AUTH_ASGARDEO_SECRET], atlassian: [process.env.AUTH_ATLASSIAN_ID, process.env.AUTH_ATLASSIAN_SECRET], auth0: [process.env.AUTH_AUTH0_ID, process.env.AUTH_AUTH0_SECRET], authentik: [process.env.AUTH_AUTHENTIK_ID, process.env.AUTH_AUTHENTIK_SECRET], "azure-ad": [process.env.AUTH_AAD_ID, process.env.AUTH_AAD_SECRET], "azure-ad-b2c": [process.env.AUTH_AAD_B2C_ID, process.env.AUTH_AAD_B2C_SECRET], battlenet: [process.env.AUTH_BATTLENET_ID, process.env.AUTH_BATTLENET_SECRET], beyondidentity: [process.env.AUTH_BEYOND_IDENTITY_ID, process.env.AUTH_BEYOND_IDENTITY_SECRET], box: [process.env.AUTH_BOX_ID, process.env.AUTH_BOX_SECRET], "boxyhq-saml": [process.env.AUTH_BOXYHQ_SAML_ID, process.env.AUTH_BOXYHQ_SAML_SECRET], bungie: [process.env.AUTH_BUNGIE_ID, process.env.AUTH_BUNGIE_SECRET], cognito: [process.env.AUTH_COGNITO_ID, process.env.AUTH_COGNITO_SECRET], coinbase: [process.env.AUTH_COINBASE_ID, process.env.AUTH_COINBASE_SECRET], discord: [process.env.AUTH_DISCORD_ID, process.env.AUTH_DISCORD_SECRET], dropbox: [process.env.AUTH_DROPBOX_ID, process.env.AUTH_DROPBOX_SECRET], "duende-identity-server6": [process.env.AUTH_IDS6_ID, process.env.AUTH_IDS6_SECRET], eveonline: [process.env.AUTH_EVEONLINE_ID, process.env.AUTH_EVEONLINE_SECRET], facebook: [process.env.AUTH_FACEBOOK_ID, process.env.AUTH_FACEBOOK_SECRET], faceit: [process.env.AUTH_FACEIT_ID, process.env.AUTH_FACEIT_SECRET], foursquare: [process.env.AUTH_FOURSQUARE_ID, process.env.AUTH_FOURSQUARE_SECRET], freshbooks: [process.env.AUTH_FRESHBOOKS_ID, process.env.AUTH_FRESHBOOKS_SECRET], fusionauth: [process.env.AUTH_FUSIONAUTH_ID, process.env.AUTH_FUSIONAUTH_SECRET], github: [process.env.AUTH_GITHUB_ID, process.env.AUTH_GITHUB_SECRET], gitlab: [process.env.AUTH_GITLAB_ID, process.env.AUTH_GITLAB_SECRET], google: [process.env.AUTH_GOOGLE_ID, process.env.AUTH_GOOGLE_SECRET], hubspot: [process.env.AUTH_HUBSPOT_ID, process.env.AUTH_HUBSPOT_SECRET], "identity-server4": [process.env.AUTH_IDS4_ID, process.env.AUTH_IDS4_SECRET], instagram: [process.env.AUTH_INSTAGRAM_ID, process.env.AUTH_INSTAGRAM_SECRET], kakao: [process.env.AUTH_KAKAO_ID, process.env.AUTH_KAKAO_SECRET], keycloak: [process.env.AUTH_KEYCLOAK_ID, process.env.AUTH_KEYCLOAK_SECRET], line: [process.env.AUTH_LINE_ID, process.env.AUTH_LINE_SECRET], linkedin: [process.env.AUTH_LINKEDIN_ID, process.env.AUTH_LINKEDIN_SECRET], mailchimp: [process.env.AUTH_MAILCHIMP_ID, process.env.AUTH_MAILCHIMP_SECRET], mailru: [process.env.AUTH_MAILRU_ID, process.env.AUTH_MAILRU_SECRET], mattermost: [process.env.AUTH_MATTERMOST_ID, process.env.AUTH_MATTERMOST_SECRET], medium: [process.env.AUTH_MEDIUM_ID, process.env.AUTH_MEDIUM_SECRET], naver: [process.env.AUTH_NAVER_ID, process.env.AUTH_NAVER_SECRET], netlify: [process.env.AUTH_NETLIFY_ID, process.env.AUTH_NETLIFY_SECRET], notion: [process.env.AUTH_NOTION_ID, process.env.AUTH_NOTION_SECRET], okta: [process.env.AUTH_OKTA_ID, process.env.AUTH_OKTA_SECRET], onelogin: [process.env.AUTH_ONELOGIN_ID, process.env.AUTH_ONELOGIN_SECRET], osso: [process.env.AUTH_OSSO_ID, process.env.AUTH_OSSO_SECRET], osu: [process.env.AUTH_OSU_ID, process.env.AUTH_OSU_SECRET], patreon: [process.env.AUTH_PATREON_ID, process.env.AUTH_PATREON_SECRET], pinterest: [process.env.AUTH_PINTEREST_ID, process.env.AUTH_PINTEREST_SECRET], pipedrive: [process.env.AUTH_PIPEDRIVE_ID, process.env.AUTH_PIPEDRIVE_SECRET], reddit: [process.env.AUTH_REDDIT_ID, process.env.AUTH_REDDIT_SECRET], salesforce: [process.env.AUTH_SALESFORCE_ID, process.env.AUTH_SALESFORCE_SECRET], slack: [process.env.AUTH_SLACK_ID, process.env.AUTH_SLACK_SECRET], spotify: [process.env.AUTH_SPOTIFY_ID, process.env.AUTH_SPOTIFY_SECRET], strava: [process.env.AUTH_STRAVA_ID, process.env.AUTH_STRAVA_SECRET], todoist: [process.env.AUTH_TODOIST_ID, process.env.AUTH_TODOIST_SECRET], trakt: [process.env.AUTH_TRAKT_ID, process.env.AUTH_TRAKT_SECRET], twitch: [process.env.AUTH_TWITCH_ID, process.env.AUTH_TWITCH_SECRET], twitter: [process.env.AUTH_TWITTER_ID, process.env.AUTH_TWITTER_SECRET], "united-effects": [process.env.AUTH_UNITED_EFFECTS_ID, process.env.AUTH_UNITED_EFFECTS_SECRET], vk: [process.env.AUTH_VK_ID, process.env.AUTH_VK_SECRET], wikimedia: [process.env.AUTH_WIKIMEDIA_ID, process.env.AUTH_WIKIMEDIA_SECRET], wordpress: [process.env.AUTH_WORDPRESS_ID, process.env.AUTH_WORDPRESS_SECRET], workos: [process.env.AUTH_WORKOS_ID, process.env.AUTH_WORKOS_SECRET], yandex: [process.env.AUTH_YANDEX_ID, process.env.AUTH_YANDEX_SECRET], zitadel: [process.env.AUTH_ZITADEL_ID, process.env.AUTH_ZITADEL_SECRET], zoho: [process.env.AUTH_ZOHO_ID, process.env.AUTH_ZOHO_SECRET], zoom: [process.env.AUTH_ZOOM_ID, process.env.AUTH_ZOOM_SECRET], }; export function setEnvDefaults(config) { config.secret ?? (config.secret = process.env.NEXTAUTH_SECRET ?? process.env.AUTH_SECRET); config.trustHost ?? (config.trustHost = !!(process.env.NEXTAUTH_URL ?? process.env.AUTH_TRUST_HOST ?? process.env.VERCEL ?? process.env.NODE_ENV !== "production")); config.redirectProxyUrl ?? (config.redirectProxyUrl = process.env.AUTH_REDIRECT_PROXY_URL); config.providers = config.providers.map((p) => { if (typeof p !== "function") return p; const provider = p(); if (provider.type === "oauth" || provider.type === "oidc") { const [clientId, clientSecret] = providersEnv[provider.id] ?? []; provider.clientId ?? (provider.clientId = clientId); provider.clientSecret ?? (provider.clientSecret = clientSecret); } return provider; }); }