@mulverse/mulguard-core 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/adapters.d.ts +522 -0
- package/adapters.d.ts.map +1 -0
- package/adapters.js +170 -0
- package/errors.d.ts +429 -0
- package/errors.d.ts.map +1 -0
- package/errors.js +473 -0
- package/index.d.ts +547 -0
- package/index.d.ts.map +1 -0
- package/index.js +142 -0
- package/jwt.d.ts +132 -0
- package/jwt.d.ts.map +1 -0
- package/jwt.js +123 -0
- package/lib/actions/callback/handle-login.d.ts +35 -0
- package/lib/actions/callback/handle-login.d.ts.map +1 -0
- package/lib/actions/callback/handle-login.js +275 -0
- package/lib/actions/callback/index.d.ts +5 -0
- package/lib/actions/callback/index.d.ts.map +1 -0
- package/lib/actions/callback/index.js +409 -0
- package/lib/actions/callback/oauth/callback.d.ts +36 -0
- package/lib/actions/callback/oauth/callback.d.ts.map +1 -0
- package/lib/actions/callback/oauth/callback.js +248 -0
- package/lib/actions/callback/oauth/checks.d.ts +70 -0
- package/lib/actions/callback/oauth/checks.d.ts.map +1 -0
- package/lib/actions/callback/oauth/checks.js +188 -0
- package/lib/actions/callback/oauth/csrf-token.d.ts +33 -0
- package/lib/actions/callback/oauth/csrf-token.d.ts.map +1 -0
- package/lib/actions/callback/oauth/csrf-token.js +39 -0
- package/lib/actions/index.d.ts +6 -0
- package/lib/actions/index.d.ts.map +1 -0
- package/lib/actions/index.js +5 -0
- package/lib/actions/session.d.ts +5 -0
- package/lib/actions/session.d.ts.map +1 -0
- package/lib/actions/session.js +127 -0
- package/lib/actions/signin/authorization-url.d.ts +12 -0
- package/lib/actions/signin/authorization-url.d.ts.map +1 -0
- package/lib/actions/signin/authorization-url.js +94 -0
- package/lib/actions/signin/index.d.ts +4 -0
- package/lib/actions/signin/index.d.ts.map +1 -0
- package/lib/actions/signin/index.js +22 -0
- package/lib/actions/signin/send-token.d.ts +10 -0
- package/lib/actions/signin/send-token.d.ts.map +1 -0
- package/lib/actions/signin/send-token.js +98 -0
- package/lib/actions/signout.d.ts +11 -0
- package/lib/actions/signout.d.ts.map +1 -0
- package/lib/actions/signout.js +30 -0
- package/lib/actions/webauthn-options.d.ts +8 -0
- package/lib/actions/webauthn-options.d.ts.map +1 -0
- package/lib/actions/webauthn-options.js +60 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +70 -0
- package/lib/init.d.ts +25 -0
- package/lib/init.d.ts.map +1 -0
- package/lib/init.js +172 -0
- package/lib/pages/error.d.ts +17 -0
- package/lib/pages/error.d.ts.map +1 -0
- package/lib/pages/error.js +40 -0
- package/lib/pages/index.d.ts +42 -0
- package/lib/pages/index.d.ts.map +1 -0
- package/lib/pages/index.js +136 -0
- package/lib/pages/signin.d.ts +10 -0
- package/lib/pages/signin.d.ts.map +1 -0
- package/lib/pages/signin.js +75 -0
- package/lib/pages/signout.d.ts +8 -0
- package/lib/pages/signout.d.ts.map +1 -0
- package/lib/pages/signout.js +17 -0
- package/lib/pages/styles.d.ts +3 -0
- package/lib/pages/styles.d.ts.map +1 -0
- package/lib/pages/styles.js +381 -0
- package/lib/pages/verify-request.d.ts +8 -0
- package/lib/pages/verify-request.d.ts.map +1 -0
- package/lib/pages/verify-request.js +11 -0
- package/lib/symbols.d.ts +50 -0
- package/lib/symbols.d.ts.map +1 -0
- package/lib/symbols.js +57 -0
- package/lib/utils/actions.d.ts +3 -0
- package/lib/utils/actions.d.ts.map +1 -0
- package/lib/utils/actions.js +14 -0
- package/lib/utils/assert.d.ts +14 -0
- package/lib/utils/assert.d.ts.map +1 -0
- package/lib/utils/assert.js +168 -0
- package/lib/utils/callback-url.d.ts +17 -0
- package/lib/utils/callback-url.d.ts.map +1 -0
- package/lib/utils/callback-url.js +27 -0
- package/lib/utils/cookie.d.ts +111 -0
- package/lib/utils/cookie.d.ts.map +1 -0
- package/lib/utils/cookie.js +205 -0
- package/lib/utils/date.d.ts +7 -0
- package/lib/utils/date.d.ts.map +1 -0
- package/lib/utils/date.js +8 -0
- package/lib/utils/email.d.ts +20 -0
- package/lib/utils/email.d.ts.map +1 -0
- package/lib/utils/email.js +57 -0
- package/lib/utils/env.d.ts +9 -0
- package/lib/utils/env.d.ts.map +1 -0
- package/lib/utils/env.js +96 -0
- package/lib/utils/logger.d.ts +18 -0
- package/lib/utils/logger.d.ts.map +1 -0
- package/lib/utils/logger.js +50 -0
- package/lib/utils/merge.d.ts +3 -0
- package/lib/utils/merge.d.ts.map +1 -0
- package/lib/utils/merge.js +23 -0
- package/lib/utils/providers.d.ts +19 -0
- package/lib/utils/providers.d.ts.map +1 -0
- package/lib/utils/providers.js +149 -0
- package/lib/utils/session.d.ts +7 -0
- package/lib/utils/session.d.ts.map +1 -0
- package/lib/utils/session.js +29 -0
- package/lib/utils/web.d.ts +10 -0
- package/lib/utils/web.d.ts.map +1 -0
- package/lib/utils/web.js +109 -0
- package/lib/utils/webauthn-client.d.ts +30 -0
- package/lib/utils/webauthn-client.d.ts.map +1 -0
- package/lib/utils/webauthn-client.js +197 -0
- package/lib/utils/webauthn-utils.d.ts +81 -0
- package/lib/utils/webauthn-utils.d.ts.map +1 -0
- package/lib/utils/webauthn-utils.js +343 -0
- package/lib/vendored/cookie.d.ts +120 -0
- package/lib/vendored/cookie.d.ts.map +1 -0
- package/lib/vendored/cookie.js +237 -0
- package/package.json +118 -0
- package/providers/42-school.d.ts +240 -0
- package/providers/42-school.d.ts.map +1 -0
- package/providers/42-school.js +78 -0
- package/providers/apple.d.ts +149 -0
- package/providers/apple.d.ts.map +1 -0
- package/providers/apple.js +104 -0
- package/providers/asgardeo.d.ts +102 -0
- package/providers/asgardeo.d.ts.map +1 -0
- package/providers/asgardeo.js +93 -0
- package/providers/atlassian.d.ts +94 -0
- package/providers/atlassian.d.ts.map +1 -0
- package/providers/atlassian.js +84 -0
- package/providers/auth0.d.ts +116 -0
- package/providers/auth0.d.ts.map +1 -0
- package/providers/auth0.js +49 -0
- package/providers/authentik.d.ts +90 -0
- package/providers/authentik.d.ts.map +1 -0
- package/providers/authentik.js +65 -0
- package/providers/azure-ad-b2c.d.ts +104 -0
- package/providers/azure-ad-b2c.d.ts.map +1 -0
- package/providers/azure-ad-b2c.js +100 -0
- package/providers/azure-ad.d.ts +19 -0
- package/providers/azure-ad.d.ts.map +1 -0
- package/providers/azure-ad.js +23 -0
- package/providers/azure-devops.d.ts +128 -0
- package/providers/azure-devops.d.ts.map +1 -0
- package/providers/azure-devops.js +158 -0
- package/providers/bankid-no.d.ts +134 -0
- package/providers/bankid-no.d.ts.map +1 -0
- package/providers/bankid-no.js +65 -0
- package/providers/battlenet.d.ts +85 -0
- package/providers/battlenet.d.ts.map +1 -0
- package/providers/battlenet.js +81 -0
- package/providers/beyondidentity.d.ts +77 -0
- package/providers/beyondidentity.d.ts.map +1 -0
- package/providers/beyondidentity.js +84 -0
- package/providers/bitbucket.d.ts +89 -0
- package/providers/bitbucket.d.ts.map +1 -0
- package/providers/bitbucket.js +92 -0
- package/providers/box.d.ts +63 -0
- package/providers/box.d.ts.map +1 -0
- package/providers/box.js +73 -0
- package/providers/boxyhq-saml.d.ts +121 -0
- package/providers/boxyhq-saml.d.ts.map +1 -0
- package/providers/boxyhq-saml.js +127 -0
- package/providers/bungie.d.ts +167 -0
- package/providers/bungie.d.ts.map +1 -0
- package/providers/bungie.js +174 -0
- package/providers/click-up.d.ts +75 -0
- package/providers/click-up.d.ts.map +1 -0
- package/providers/click-up.js +89 -0
- package/providers/cognito.d.ts +81 -0
- package/providers/cognito.d.ts.map +1 -0
- package/providers/cognito.js +73 -0
- package/providers/coinbase.d.ts +69 -0
- package/providers/coinbase.d.ts.map +1 -0
- package/providers/coinbase.js +78 -0
- package/providers/concept2.d.ts +81 -0
- package/providers/concept2.d.ts.map +1 -0
- package/providers/concept2.js +86 -0
- package/providers/credentials.d.ts +132 -0
- package/providers/credentials.d.ts.map +1 -0
- package/providers/credentials.js +74 -0
- package/providers/descope.d.ts +91 -0
- package/providers/descope.d.ts.map +1 -0
- package/providers/descope.js +78 -0
- package/providers/discord.d.ts +139 -0
- package/providers/discord.d.ts.map +1 -0
- package/providers/discord.js +86 -0
- package/providers/dribbble.d.ts +88 -0
- package/providers/dribbble.d.ts.map +1 -0
- package/providers/dribbble.js +85 -0
- package/providers/dropbox.d.ts +65 -0
- package/providers/dropbox.d.ts.map +1 -0
- package/providers/dropbox.js +88 -0
- package/providers/duende-identity-server6.d.ts +91 -0
- package/providers/duende-identity-server6.d.ts.map +1 -0
- package/providers/duende-identity-server6.js +80 -0
- package/providers/email.d.ts +41 -0
- package/providers/email.d.ts.map +1 -0
- package/providers/email.js +18 -0
- package/providers/eventbrite.d.ts +78 -0
- package/providers/eventbrite.d.ts.map +1 -0
- package/providers/eventbrite.js +88 -0
- package/providers/eveonline.d.ts +94 -0
- package/providers/eveonline.d.ts.map +1 -0
- package/providers/eveonline.js +92 -0
- package/providers/facebook.d.ts +84 -0
- package/providers/facebook.d.ts.map +1 -0
- package/providers/facebook.js +93 -0
- package/providers/faceit.d.ts +64 -0
- package/providers/faceit.d.ts.map +1 -0
- package/providers/faceit.js +74 -0
- package/providers/figma.d.ts +75 -0
- package/providers/figma.d.ts.map +1 -0
- package/providers/figma.js +81 -0
- package/providers/forwardemail.d.ts +4 -0
- package/providers/forwardemail.d.ts.map +1 -0
- package/providers/forwardemail.js +32 -0
- package/providers/foursquare.d.ts +71 -0
- package/providers/foursquare.d.ts.map +1 -0
- package/providers/foursquare.js +91 -0
- package/providers/freshbooks.d.ts +66 -0
- package/providers/freshbooks.d.ts.map +1 -0
- package/providers/freshbooks.js +76 -0
- package/providers/frontegg.d.ts +95 -0
- package/providers/frontegg.d.ts.map +1 -0
- package/providers/frontegg.js +88 -0
- package/providers/fusionauth.d.ts +279 -0
- package/providers/fusionauth.d.ts.map +1 -0
- package/providers/fusionauth.js +292 -0
- package/providers/github.d.ts +127 -0
- package/providers/github.d.ts.map +1 -0
- package/providers/github.js +115 -0
- package/providers/gitlab.d.ts +115 -0
- package/providers/gitlab.d.ts.map +1 -0
- package/providers/gitlab.js +75 -0
- package/providers/google.d.ts +138 -0
- package/providers/google.d.ts.map +1 -0
- package/providers/google.js +119 -0
- package/providers/hubspot.d.ts +76 -0
- package/providers/hubspot.d.ts.map +1 -0
- package/providers/hubspot.js +93 -0
- package/providers/huggingface.d.ts +216 -0
- package/providers/huggingface.d.ts.map +1 -0
- package/providers/huggingface.js +101 -0
- package/providers/identity-server4.d.ts +69 -0
- package/providers/identity-server4.d.ts.map +1 -0
- package/providers/identity-server4.js +64 -0
- package/providers/index.d.ts +61 -0
- package/providers/index.d.ts.map +1 -0
- package/providers/index.js +3 -0
- package/providers/instagram.d.ts +74 -0
- package/providers/instagram.d.ts.map +1 -0
- package/providers/instagram.js +87 -0
- package/providers/kakao.d.ts +148 -0
- package/providers/kakao.d.ts.map +1 -0
- package/providers/kakao.js +103 -0
- package/providers/keycloak.d.ts +100 -0
- package/providers/keycloak.d.ts.map +1 -0
- package/providers/keycloak.js +73 -0
- package/providers/kinde.d.ts +73 -0
- package/providers/kinde.d.ts.map +1 -0
- package/providers/kinde.js +51 -0
- package/providers/line.d.ts +83 -0
- package/providers/line.d.ts.map +1 -0
- package/providers/line.js +73 -0
- package/providers/linkedin.d.ts +77 -0
- package/providers/linkedin.d.ts.map +1 -0
- package/providers/linkedin.js +65 -0
- package/providers/logto.d.ts +98 -0
- package/providers/logto.d.ts.map +1 -0
- package/providers/logto.js +81 -0
- package/providers/loops.d.ts +40 -0
- package/providers/loops.d.ts.map +1 -0
- package/providers/loops.js +59 -0
- package/providers/mailchimp.d.ts +66 -0
- package/providers/mailchimp.d.ts.map +1 -0
- package/providers/mailchimp.js +76 -0
- package/providers/mailgun.d.ts +55 -0
- package/providers/mailgun.d.ts.map +1 -0
- package/providers/mailgun.js +74 -0
- package/providers/mailru.d.ts +63 -0
- package/providers/mailru.d.ts.map +1 -0
- package/providers/mailru.js +61 -0
- package/providers/mastodon.d.ts +90 -0
- package/providers/mastodon.d.ts.map +1 -0
- package/providers/mastodon.js +75 -0
- package/providers/mattermost.d.ts +132 -0
- package/providers/mattermost.d.ts.map +1 -0
- package/providers/mattermost.js +83 -0
- package/providers/medium.d.ts +68 -0
- package/providers/medium.d.ts.map +1 -0
- package/providers/medium.js +84 -0
- package/providers/microsoft-entra-id.d.ts +428 -0
- package/providers/microsoft-entra-id.d.ts.map +1 -0
- package/providers/microsoft-entra-id.js +156 -0
- package/providers/naver.d.ts +80 -0
- package/providers/naver.d.ts.map +1 -0
- package/providers/naver.js +79 -0
- package/providers/netlify.d.ts +66 -0
- package/providers/netlify.d.ts.map +1 -0
- package/providers/netlify.js +85 -0
- package/providers/netsuite.d.ts +189 -0
- package/providers/netsuite.d.ts.map +1 -0
- package/providers/netsuite.js +170 -0
- package/providers/nextcloud.d.ts +150 -0
- package/providers/nextcloud.d.ts.map +1 -0
- package/providers/nextcloud.js +99 -0
- package/providers/nodemailer.d.ts +27 -0
- package/providers/nodemailer.d.ts.map +1 -0
- package/providers/nodemailer.js +34 -0
- package/providers/notion.d.ts +99 -0
- package/providers/notion.d.ts.map +1 -0
- package/providers/notion.js +110 -0
- package/providers/oauth.d.ts +188 -0
- package/providers/oauth.d.ts.map +1 -0
- package/providers/oauth.js +1 -0
- package/providers/okta.d.ts +99 -0
- package/providers/okta.d.ts.map +1 -0
- package/providers/okta.js +63 -0
- package/providers/onelogin.d.ts +65 -0
- package/providers/onelogin.d.ts.map +1 -0
- package/providers/onelogin.js +61 -0
- package/providers/ory-hydra.d.ts +79 -0
- package/providers/ory-hydra.d.ts.map +1 -0
- package/providers/ory-hydra.js +67 -0
- package/providers/osso.d.ts +79 -0
- package/providers/osso.d.ts.map +1 -0
- package/providers/osso.js +77 -0
- package/providers/osu.d.ts +116 -0
- package/providers/osu.d.ts.map +1 -0
- package/providers/osu.js +75 -0
- package/providers/passage.d.ts +88 -0
- package/providers/passage.d.ts.map +1 -0
- package/providers/passage.js +75 -0
- package/providers/passkey.d.ts +65 -0
- package/providers/passkey.d.ts.map +1 -0
- package/providers/passkey.js +87 -0
- package/providers/patreon.d.ts +73 -0
- package/providers/patreon.d.ts.map +1 -0
- package/providers/patreon.js +77 -0
- package/providers/ping-id.d.ts +57 -0
- package/providers/ping-id.d.ts.map +1 -0
- package/providers/ping-id.js +40 -0
- package/providers/pinterest.d.ts +79 -0
- package/providers/pinterest.d.ts.map +1 -0
- package/providers/pinterest.js +85 -0
- package/providers/pipedrive.d.ts +99 -0
- package/providers/pipedrive.d.ts.map +1 -0
- package/providers/pipedrive.js +71 -0
- package/providers/postmark.d.ts +4 -0
- package/providers/postmark.d.ts.map +1 -0
- package/providers/postmark.js +36 -0
- package/providers/provider-types.d.ts +3 -0
- package/providers/provider-types.d.ts.map +1 -0
- package/providers/provider-types.js +1 -0
- package/providers/reddit.d.ts +88 -0
- package/providers/reddit.d.ts.map +1 -0
- package/providers/reddit.js +90 -0
- package/providers/resend.d.ts +4 -0
- package/providers/resend.d.ts.map +1 -0
- package/providers/resend.js +32 -0
- package/providers/roblox.d.ts +67 -0
- package/providers/roblox.d.ts.map +1 -0
- package/providers/roblox.js +53 -0
- package/providers/salesforce.d.ts +59 -0
- package/providers/salesforce.d.ts.map +1 -0
- package/providers/salesforce.js +52 -0
- package/providers/sendgrid.d.ts +4 -0
- package/providers/sendgrid.d.ts.map +1 -0
- package/providers/sendgrid.js +35 -0
- package/providers/simplelogin.d.ts +87 -0
- package/providers/simplelogin.d.ts.map +1 -0
- package/providers/simplelogin.js +83 -0
- package/providers/slack.d.ts +102 -0
- package/providers/slack.d.ts.map +1 -0
- package/providers/slack.js +69 -0
- package/providers/spotify.d.ts +75 -0
- package/providers/spotify.d.ts.map +1 -0
- package/providers/spotify.js +73 -0
- package/providers/strava.d.ts +68 -0
- package/providers/strava.d.ts.map +1 -0
- package/providers/strava.js +80 -0
- package/providers/threads.d.ts +108 -0
- package/providers/threads.d.ts.map +1 -0
- package/providers/threads.js +89 -0
- package/providers/tiktok.d.ts +248 -0
- package/providers/tiktok.d.ts.map +1 -0
- package/providers/tiktok.js +195 -0
- package/providers/todoist.d.ts +76 -0
- package/providers/todoist.d.ts.map +1 -0
- package/providers/todoist.js +97 -0
- package/providers/trakt.d.ts +93 -0
- package/providers/trakt.d.ts.map +1 -0
- package/providers/trakt.js +91 -0
- package/providers/twitch.d.ts +71 -0
- package/providers/twitch.d.ts.map +1 -0
- package/providers/twitch.js +96 -0
- package/providers/twitter.d.ts +183 -0
- package/providers/twitter.d.ts.map +1 -0
- package/providers/twitter.js +100 -0
- package/providers/united-effects.d.ts +80 -0
- package/providers/united-effects.d.ts.map +1 -0
- package/providers/united-effects.js +72 -0
- package/providers/vipps.d.ts +71 -0
- package/providers/vipps.d.ts.map +1 -0
- package/providers/vipps.js +33 -0
- package/providers/vk.d.ts +334 -0
- package/providers/vk.d.ts.map +1 -0
- package/providers/vk.js +103 -0
- package/providers/webauthn.d.ts +148 -0
- package/providers/webauthn.d.ts.map +1 -0
- package/providers/webauthn.js +128 -0
- package/providers/webex.d.ts +78 -0
- package/providers/webex.d.ts.map +1 -0
- package/providers/webex.js +73 -0
- package/providers/wechat.d.ts +78 -0
- package/providers/wechat.d.ts.map +1 -0
- package/providers/wechat.js +105 -0
- package/providers/wikimedia.d.ts +99 -0
- package/providers/wikimedia.d.ts.map +1 -0
- package/providers/wikimedia.js +90 -0
- package/providers/wordpress.d.ts +65 -0
- package/providers/wordpress.d.ts.map +1 -0
- package/providers/wordpress.js +71 -0
- package/providers/workos.d.ts +154 -0
- package/providers/workos.d.ts.map +1 -0
- package/providers/workos.js +143 -0
- package/providers/yandex.d.ts +131 -0
- package/providers/yandex.d.ts.map +1 -0
- package/providers/yandex.js +80 -0
- package/providers/zitadel.d.ts +117 -0
- package/providers/zitadel.d.ts.map +1 -0
- package/providers/zitadel.js +95 -0
- package/providers/zoho.d.ts +63 -0
- package/providers/zoho.d.ts.map +1 -0
- package/providers/zoho.js +79 -0
- package/providers/zoom.d.ts +93 -0
- package/providers/zoom.d.ts.map +1 -0
- package/providers/zoom.js +82 -0
- package/src/adapters/server-actions-helpers.ts +126 -0
- package/src/adapters.ts +603 -0
- package/src/errors.ts +551 -0
- package/src/index.ts +689 -0
- package/src/jwt.ts +283 -0
- package/src/lib/actions/callback/handle-login.ts +334 -0
- package/src/lib/actions/callback/index.ts +554 -0
- package/src/lib/actions/callback/oauth/callback.ts +347 -0
- package/src/lib/actions/callback/oauth/checks.ts +258 -0
- package/src/lib/actions/callback/oauth/csrf-token.ts +60 -0
- package/src/lib/actions/index.ts +5 -0
- package/src/lib/actions/session.ts +167 -0
- package/src/lib/actions/signin/authorization-url.ts +123 -0
- package/src/lib/actions/signin/index.ts +37 -0
- package/src/lib/actions/signin/send-token.ts +124 -0
- package/src/lib/actions/signout.ts +38 -0
- package/src/lib/actions/webauthn-options.ts +100 -0
- package/src/lib/index.ts +97 -0
- package/src/lib/init.ts +236 -0
- package/src/lib/pages/error.tsx +106 -0
- package/src/lib/pages/index.ts +181 -0
- package/src/lib/pages/signin.tsx +255 -0
- package/src/lib/pages/signout.tsx +49 -0
- package/src/lib/pages/styles.css +377 -0
- package/src/lib/pages/styles.ts +381 -0
- package/src/lib/pages/verify-request.tsx +36 -0
- package/src/lib/symbols.ts +60 -0
- package/src/lib/utils/actions.ts +17 -0
- package/src/lib/utils/assert.ts +259 -0
- package/src/lib/utils/callback-url.ts +42 -0
- package/src/lib/utils/cookie.ts +248 -0
- package/src/lib/utils/date.ts +8 -0
- package/src/lib/utils/email.ts +65 -0
- package/src/lib/utils/env.ts +113 -0
- package/src/lib/utils/logger.ts +75 -0
- package/src/lib/utils/merge.ts +30 -0
- package/src/lib/utils/providers.ts +203 -0
- package/src/lib/utils/session.ts +41 -0
- package/src/lib/utils/web.ts +151 -0
- package/src/lib/utils/webauthn-client.js +229 -0
- package/src/lib/utils/webauthn-utils.ts +531 -0
- package/src/lib/vendored/cookie.ts +383 -0
- package/src/providers/42-school.ts +256 -0
- package/src/providers/apple.ts +206 -0
- package/src/providers/asgardeo.ts +118 -0
- package/src/providers/atlassian.ts +120 -0
- package/src/providers/auth0.ts +127 -0
- package/src/providers/authentik.ts +100 -0
- package/src/providers/azure-ad-b2c.ts +124 -0
- package/src/providers/azure-ad.ts +30 -0
- package/src/providers/azure-devops.ts +184 -0
- package/src/providers/bankid-no.ts +161 -0
- package/src/providers/battlenet.ts +107 -0
- package/src/providers/beyondidentity.ts +102 -0
- package/src/providers/bitbucket.ts +122 -0
- package/src/providers/box.ts +87 -0
- package/src/providers/boxyhq-saml.ts +148 -0
- package/src/providers/bungie.ts +192 -0
- package/src/providers/click-up.ts +104 -0
- package/src/providers/cognito.ts +94 -0
- package/src/providers/coinbase.ts +93 -0
- package/src/providers/concept2.ts +108 -0
- package/src/providers/credentials.ts +157 -0
- package/src/providers/descope.ts +105 -0
- package/src/providers/discord.ts +176 -0
- package/src/providers/dribbble.ts +122 -0
- package/src/providers/dropbox.ts +102 -0
- package/src/providers/duende-identity-server6.ts +101 -0
- package/src/providers/email.ts +60 -0
- package/src/providers/eventbrite.ts +105 -0
- package/src/providers/eveonline.ts +117 -0
- package/src/providers/facebook.ts +119 -0
- package/src/providers/faceit.ts +90 -0
- package/src/providers/figma.ts +105 -0
- package/src/providers/forwardemail.ts +37 -0
- package/src/providers/foursquare.ts +105 -0
- package/src/providers/freshbooks.ts +90 -0
- package/src/providers/frontegg.ts +111 -0
- package/src/providers/fusionauth.ts +336 -0
- package/src/providers/github.ts +187 -0
- package/src/providers/gitlab.ts +140 -0
- package/src/providers/google.ts +152 -0
- package/src/providers/hubspot.ts +117 -0
- package/src/providers/huggingface.ts +234 -0
- package/src/providers/identity-server4.ts +78 -0
- package/src/providers/index.ts +115 -0
- package/src/providers/instagram.ts +103 -0
- package/src/providers/kakao.ts +184 -0
- package/src/providers/keycloak.ts +111 -0
- package/src/providers/kinde.ts +85 -0
- package/src/providers/line.ts +99 -0
- package/src/providers/linkedin.ts +91 -0
- package/src/providers/logto.ts +122 -0
- package/src/providers/loops.ts +79 -0
- package/src/providers/mailchimp.ts +90 -0
- package/src/providers/mailgun.ts +98 -0
- package/src/providers/mailru.ts +75 -0
- package/src/providers/mastodon.ts +112 -0
- package/src/providers/mattermost.ts +154 -0
- package/src/providers/medium.ts +89 -0
- package/src/providers/microsoft-entra-id.ts +497 -0
- package/src/providers/naver.ts +102 -0
- package/src/providers/netlify.ts +90 -0
- package/src/providers/netsuite.ts +225 -0
- package/src/providers/nextcloud.ts +207 -0
- package/src/providers/nodemailer.ts +84 -0
- package/src/providers/notion.ts +166 -0
- package/src/providers/oauth.ts +310 -0
- package/src/providers/okta.ts +111 -0
- package/src/providers/onelogin.ts +75 -0
- package/src/providers/ory-hydra.ts +93 -0
- package/src/providers/osso.ts +91 -0
- package/src/providers/osu.ts +138 -0
- package/src/providers/passage.ts +103 -0
- package/src/providers/passkey.ts +94 -0
- package/src/providers/patreon.ts +98 -0
- package/src/providers/ping-id.ts +68 -0
- package/src/providers/pinterest.ts +106 -0
- package/src/providers/pipedrive.ts +120 -0
- package/src/providers/postmark.ts +38 -0
- package/src/providers/provider-types.ts +107 -0
- package/src/providers/reddit.ts +104 -0
- package/src/providers/resend.ts +35 -0
- package/src/providers/roblox.ts +94 -0
- package/src/providers/salesforce.ts +73 -0
- package/src/providers/sendgrid.ts +36 -0
- package/src/providers/simplelogin.ts +107 -0
- package/src/providers/slack.ts +115 -0
- package/src/providers/spotify.ts +99 -0
- package/src/providers/strava.ts +101 -0
- package/src/providers/threads.ts +135 -0
- package/src/providers/tiktok.ts +319 -0
- package/src/providers/todoist.ts +122 -0
- package/src/providers/trakt.ts +120 -0
- package/src/providers/twitch.ts +121 -0
- package/src/providers/twitter.ts +207 -0
- package/src/providers/united-effects.ts +89 -0
- package/src/providers/vipps.ts +86 -0
- package/src/providers/vk.ts +401 -0
- package/src/providers/webauthn.ts +296 -0
- package/src/providers/webex.ts +102 -0
- package/src/providers/wechat.ts +141 -0
- package/src/providers/wikimedia.ts +258 -0
- package/src/providers/wordpress.ts +86 -0
- package/src/providers/workos.ts +180 -0
- package/src/providers/yandex.ts +159 -0
- package/src/providers/zitadel.ts +128 -0
- package/src/providers/zoho.ts +84 -0
- package/src/providers/zoom.ts +119 -0
- package/src/types.ts +430 -0
- package/src/warnings.ts +21 -0
- package/types.d.ts +309 -0
- package/types.d.ts.map +1 -0
- package/types.js +53 -0
- package/warnings.d.ts +17 -0
- package/warnings.d.ts.map +1 -0
- package/warnings.js +1 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <div class="provider" style={{backgroundColor: "#24292f", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
|
|
3
|
+
* <span>Built-in <b>ClickUp</b> integration.</span>
|
|
4
|
+
* <a href="https://clickup.com">
|
|
5
|
+
* <img style={{display: "block"}} src="https://authjs.dev/img/providers/click-up.svg" height="48" width="48"/>
|
|
6
|
+
* </a>
|
|
7
|
+
* </div>
|
|
8
|
+
*
|
|
9
|
+
* @module providers/click-up
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type { OAuthConfig, OAuthUserConfig } from "./index.js"
|
|
13
|
+
|
|
14
|
+
/** @see [Get the authenticated user](https://clickup.com/api/clickupreference/operation/GetAuthorizedUser/)*/
|
|
15
|
+
export interface ClickUpProfile {
|
|
16
|
+
user: {
|
|
17
|
+
id: number
|
|
18
|
+
username: string
|
|
19
|
+
color: string
|
|
20
|
+
profilePicture: string
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Add ClickUp login to your page and make requests to [ClickUp APIs](https://clickup.com/api/).
|
|
26
|
+
*
|
|
27
|
+
* ### Setup
|
|
28
|
+
*
|
|
29
|
+
* #### Callback URL
|
|
30
|
+
* ```
|
|
31
|
+
* https://example.com/api/auth/callback/clickup
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* #### Configuration
|
|
35
|
+
* ```ts
|
|
36
|
+
* import { Auth } from "@auth/core"
|
|
37
|
+
* import ClickUp from "@auth/core/providers/click-up"
|
|
38
|
+
*
|
|
39
|
+
* const request = new Request(origin)
|
|
40
|
+
* const response = await Auth(request, {
|
|
41
|
+
* providers: [
|
|
42
|
+
* ClickUp({
|
|
43
|
+
* clientId: CLICKUP_CLIENT_ID,
|
|
44
|
+
* clientSecret: CLICKUP_CLIENT_SECRET,
|
|
45
|
+
* }),
|
|
46
|
+
* ],
|
|
47
|
+
* })
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* ### Resources
|
|
51
|
+
*
|
|
52
|
+
* - [ClickUp - Authorizing OAuth Apps](https://clickup.com/api/developer-portal/authentication#oauth-flow)
|
|
53
|
+
* - [Source code](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/click-up.ts)
|
|
54
|
+
*
|
|
55
|
+
* ### Notes
|
|
56
|
+
*
|
|
57
|
+
* By default, Auth.js assumes that the ClickUp provider is
|
|
58
|
+
* based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
|
|
59
|
+
*
|
|
60
|
+
* :::tip
|
|
61
|
+
*
|
|
62
|
+
* The ClickUp provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/click-up.ts).
|
|
63
|
+
* To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
|
|
64
|
+
*
|
|
65
|
+
* :::
|
|
66
|
+
*
|
|
67
|
+
* :::info **Disclaimer**
|
|
68
|
+
*
|
|
69
|
+
* If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
|
|
70
|
+
*
|
|
71
|
+
* Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
|
|
72
|
+
* the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
|
|
73
|
+
* we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
|
|
74
|
+
*
|
|
75
|
+
* :::
|
|
76
|
+
*/
|
|
77
|
+
export default function ClickUp(
|
|
78
|
+
config: OAuthUserConfig<ClickUpProfile>
|
|
79
|
+
): OAuthConfig<ClickUpProfile> {
|
|
80
|
+
return {
|
|
81
|
+
id: "click-up",
|
|
82
|
+
name: "ClickUp",
|
|
83
|
+
type: "oauth",
|
|
84
|
+
authorization: "https://app.clickup.com/api",
|
|
85
|
+
token: "https://api.clickup.com/api/v2/oauth/token",
|
|
86
|
+
userinfo: "https://api.clickup.com/api/v2/user",
|
|
87
|
+
clientId: config.clientId,
|
|
88
|
+
clientSecret: config.clientSecret,
|
|
89
|
+
checks: ["state"],
|
|
90
|
+
profile: (profile: ClickUpProfile) => {
|
|
91
|
+
return {
|
|
92
|
+
id: profile.user.id.toString(),
|
|
93
|
+
name: profile.user.username,
|
|
94
|
+
profilePicture: profile.user.profilePicture,
|
|
95
|
+
color: profile.user.color,
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
style: {
|
|
99
|
+
bg: "#24292f",
|
|
100
|
+
text: "#fff",
|
|
101
|
+
},
|
|
102
|
+
options: config,
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <div class="provider" style={{backgroundColor: "#000", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
|
|
3
|
+
* <span>Built-in <b>Cognito</b> integration.</span>
|
|
4
|
+
* <a href="https://docs.aws.amazon.com/cognito">
|
|
5
|
+
* <img style={{display: "block"}} src="https://authjs.dev/img/providers/cognito.svg" height="48" width="48"/>
|
|
6
|
+
* </a>
|
|
7
|
+
* </div>
|
|
8
|
+
*
|
|
9
|
+
* @module providers/cognito
|
|
10
|
+
*/
|
|
11
|
+
import type { OAuthConfig, OAuthUserConfig } from "./index.js"
|
|
12
|
+
|
|
13
|
+
export interface CognitoProfile extends Record<string, any> {
|
|
14
|
+
sub: string
|
|
15
|
+
name: string
|
|
16
|
+
email: string
|
|
17
|
+
picture: string
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Add Cognito login to your page.
|
|
22
|
+
*
|
|
23
|
+
* ### Setup
|
|
24
|
+
*
|
|
25
|
+
* #### Callback URL
|
|
26
|
+
* ```
|
|
27
|
+
* https://example.com/api/auth/callback/cognito
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* #### Configuration
|
|
31
|
+
*```ts
|
|
32
|
+
* import { Auth } from "@auth/core"
|
|
33
|
+
* import Cognito from "@auth/core/providers/cognito"
|
|
34
|
+
*
|
|
35
|
+
* const request = new Request(origin)
|
|
36
|
+
* const response = await Auth(request, {
|
|
37
|
+
* providers: [
|
|
38
|
+
* Cognito({
|
|
39
|
+
* clientId: COGNITO_CLIENT_ID,
|
|
40
|
+
* clientSecret: COGNITO_CLIENT_SECRET,
|
|
41
|
+
* issuer: COGNITO_ISSUER,
|
|
42
|
+
* }),
|
|
43
|
+
* ],
|
|
44
|
+
* })
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* ### Resources
|
|
48
|
+
*
|
|
49
|
+
* - [Cognito OAuth documentation](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html)
|
|
50
|
+
*
|
|
51
|
+
* ### Notes
|
|
52
|
+
* You need to select your AWS region to go the the Cognito dashboard.
|
|
53
|
+
*
|
|
54
|
+
* :::tip
|
|
55
|
+
* The issuer is a URL, that looks like this: https://cognito-idp.{region}.amazonaws.com/{PoolId}
|
|
56
|
+
* :::
|
|
57
|
+
* `PoolId` is from General Settings in Cognito, not to be confused with the App Client ID.
|
|
58
|
+
* :::warning
|
|
59
|
+
* Make sure you select all the appropriate client settings or the OAuth flow will not work.
|
|
60
|
+
* :::
|
|
61
|
+
*
|
|
62
|
+
* By default, Auth.js assumes that the Cognito provider is
|
|
63
|
+
* based on the [Open ID Connect](https://openid.net/specs/openid-connect-core-1_0.html) specification.
|
|
64
|
+
*
|
|
65
|
+
* :::tip
|
|
66
|
+
*
|
|
67
|
+
* The Cognito provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/cognito.ts).
|
|
68
|
+
* To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
|
|
69
|
+
*
|
|
70
|
+
* :::
|
|
71
|
+
*
|
|
72
|
+
* :::info **Disclaimer**
|
|
73
|
+
*
|
|
74
|
+
* If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
|
|
75
|
+
*
|
|
76
|
+
* Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
|
|
77
|
+
* the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
|
|
78
|
+
* we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
|
|
79
|
+
*
|
|
80
|
+
* :::
|
|
81
|
+
*/
|
|
82
|
+
export default function Cognito<P extends CognitoProfile>(
|
|
83
|
+
options: OAuthUserConfig<P>
|
|
84
|
+
): OAuthConfig<P> {
|
|
85
|
+
return {
|
|
86
|
+
id: "cognito",
|
|
87
|
+
name: "Cognito",
|
|
88
|
+
type: "oidc",
|
|
89
|
+
style: {
|
|
90
|
+
brandColor: "#C17B9E",
|
|
91
|
+
},
|
|
92
|
+
options,
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <div class="provider" style={{backgroundColor: "#000", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
|
|
3
|
+
* <span>Built-in <b>Coinbase</b> integration.</span>
|
|
4
|
+
* <a href="https://coinbase.com/">
|
|
5
|
+
* <img style={{display: "block"}} src="https://authjs.dev/img/providers/coinbase.svg" height="48" width="48"/>
|
|
6
|
+
* </a>
|
|
7
|
+
* </div>
|
|
8
|
+
*
|
|
9
|
+
* @module providers/coinbase
|
|
10
|
+
*/
|
|
11
|
+
import type { OAuthConfig, OAuthUserConfig } from "./index.js"
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Add Coinbase login to your page.
|
|
15
|
+
*
|
|
16
|
+
* ### Setup
|
|
17
|
+
*
|
|
18
|
+
* #### Callback URL
|
|
19
|
+
* ```
|
|
20
|
+
* https://example.com/api/auth/callback/coinbase
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* #### Configuration
|
|
24
|
+
*```ts
|
|
25
|
+
* import { Auth } from "@auth/core"
|
|
26
|
+
* import Coinbase from "@auth/core/providers/coinbase"
|
|
27
|
+
*
|
|
28
|
+
* const request = new Request(origin)
|
|
29
|
+
* const response = await Auth(request, {
|
|
30
|
+
* providers: [
|
|
31
|
+
* Coinbase({
|
|
32
|
+
* clientId: COINBASE_CLIENT_ID,
|
|
33
|
+
* clientSecret: COINBASE_CLIENT_SECRET,
|
|
34
|
+
* }),
|
|
35
|
+
* ],
|
|
36
|
+
* })
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* ### Resources
|
|
40
|
+
*
|
|
41
|
+
* - [Coinbase OAuth documentation](https://developers.coinbase.com/api/v2)
|
|
42
|
+
*
|
|
43
|
+
* ### Notes
|
|
44
|
+
*
|
|
45
|
+
* :::tip
|
|
46
|
+
* This Provider template has a 2 hour access token to it. A refresh token is also returned.
|
|
47
|
+
* :::
|
|
48
|
+
*
|
|
49
|
+
* By default, Auth.js assumes that the Coinbase provider is
|
|
50
|
+
* based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
|
|
51
|
+
*
|
|
52
|
+
* :::tip
|
|
53
|
+
*
|
|
54
|
+
* The Coinbase provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/coinbase.ts).
|
|
55
|
+
* To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
|
|
56
|
+
*
|
|
57
|
+
* :::
|
|
58
|
+
*
|
|
59
|
+
* :::info **Disclaimer**
|
|
60
|
+
*
|
|
61
|
+
* If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
|
|
62
|
+
*
|
|
63
|
+
* Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
|
|
64
|
+
* the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
|
|
65
|
+
* we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
|
|
66
|
+
*
|
|
67
|
+
* :::
|
|
68
|
+
*/
|
|
69
|
+
export default function Coinbase(
|
|
70
|
+
options: OAuthUserConfig<Record<string, any>>
|
|
71
|
+
): OAuthConfig<Record<string, any>> {
|
|
72
|
+
return {
|
|
73
|
+
id: "coinbase",
|
|
74
|
+
name: "Coinbase",
|
|
75
|
+
type: "oauth",
|
|
76
|
+
authorization:
|
|
77
|
+
"https://login.coinbase.com/oauth2/auth?scope=wallet:user:email+wallet:user:read",
|
|
78
|
+
token: "https://login.coinbase.com/oauth2/token",
|
|
79
|
+
userinfo: "https://api.coinbase.com/v2/user",
|
|
80
|
+
profile(profile) {
|
|
81
|
+
return {
|
|
82
|
+
id: profile.data.id,
|
|
83
|
+
name: profile.data.name,
|
|
84
|
+
email: profile.data.email,
|
|
85
|
+
image: profile.data.avatar_url,
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
style: {
|
|
89
|
+
brandColor: "#0052ff",
|
|
90
|
+
},
|
|
91
|
+
options,
|
|
92
|
+
}
|
|
93
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <div class="provider" style={{backgroundColor: "#000", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
|
|
3
|
+
* <span>Built-in <b>Concept2</b> integration.</span>
|
|
4
|
+
* <a href="https://concept2.com">
|
|
5
|
+
* <img style={{display: "block"}} src="https://authjs.dev/img/providers/concept2.svg" height="48" width="48"/>
|
|
6
|
+
* </a>
|
|
7
|
+
* </div>
|
|
8
|
+
*
|
|
9
|
+
* @module providers/concept2
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type { OAuthConfig, OAuthUserConfig } from "./index.js"
|
|
13
|
+
|
|
14
|
+
export interface Concept2Profile extends Record<string, any> {
|
|
15
|
+
id: number
|
|
16
|
+
username: string
|
|
17
|
+
first_name: string
|
|
18
|
+
last_name: string
|
|
19
|
+
gender: string
|
|
20
|
+
dob: string
|
|
21
|
+
email: string
|
|
22
|
+
country: string
|
|
23
|
+
profile_image: string
|
|
24
|
+
age_restricted: boolean
|
|
25
|
+
email_permission: boolean | null
|
|
26
|
+
max_heart_rate: number | null
|
|
27
|
+
weight: number | null
|
|
28
|
+
logbook_privacy: string | null
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Add Concept2 login to your page.
|
|
33
|
+
*
|
|
34
|
+
* ### Setup
|
|
35
|
+
*
|
|
36
|
+
* #### Callback URL
|
|
37
|
+
* ```
|
|
38
|
+
* https://example.com/api/auth/callback/concept2
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* #### Configuration
|
|
42
|
+
*```js
|
|
43
|
+
* import { Auth } from "@auth/core"
|
|
44
|
+
* import Concept2 from "@auth/core/providers/concept2"
|
|
45
|
+
*
|
|
46
|
+
* const request = new Request(origin)
|
|
47
|
+
* const response = await Auth(request, {
|
|
48
|
+
* providers: [
|
|
49
|
+
* Concept2({
|
|
50
|
+
* clientId: CONCEPT2_CLIENT_ID,
|
|
51
|
+
* clientSecret: CONCEPT2_CLIENT_SECRET
|
|
52
|
+
* }),
|
|
53
|
+
* ],
|
|
54
|
+
* })
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* ### Resources
|
|
58
|
+
*
|
|
59
|
+
* - [Concept2 OAuth documentation](https://log.concept2.com/developers/documentation/)
|
|
60
|
+
*
|
|
61
|
+
* ### Notes
|
|
62
|
+
*
|
|
63
|
+
* By default, Auth.js assumes that the Concept2 provider is
|
|
64
|
+
* based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
|
|
65
|
+
*
|
|
66
|
+
* :::tip
|
|
67
|
+
*
|
|
68
|
+
* The Concept2 provider comes with a [default configuration](https://github.com/mulguard/mulguard/blob/main/packages/mulguard/src/providers/concept2.ts).
|
|
69
|
+
* To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/providers/custom-provider#override-default-options).
|
|
70
|
+
*
|
|
71
|
+
* :::
|
|
72
|
+
*
|
|
73
|
+
* :::info **Disclaimer**
|
|
74
|
+
*
|
|
75
|
+
* If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
|
|
76
|
+
*
|
|
77
|
+
* Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
|
|
78
|
+
* the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
|
|
79
|
+
* we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
|
|
80
|
+
*
|
|
81
|
+
* :::
|
|
82
|
+
*/
|
|
83
|
+
export default function Concept2(
|
|
84
|
+
options: OAuthUserConfig<Concept2Profile>
|
|
85
|
+
): OAuthConfig<Concept2Profile> {
|
|
86
|
+
return {
|
|
87
|
+
id: "concept2",
|
|
88
|
+
name: "Concept2",
|
|
89
|
+
type: "oauth",
|
|
90
|
+
authorization: {
|
|
91
|
+
url: "https://log.concept2.com/oauth/authorize",
|
|
92
|
+
params: {
|
|
93
|
+
scope: "user:read,results:write",
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
token: "https://log.concept2.com/oauth/access_token",
|
|
97
|
+
userinfo: "https://log.concept2.com/api/users/me",
|
|
98
|
+
profile(profile) {
|
|
99
|
+
return {
|
|
100
|
+
id: profile.data.id,
|
|
101
|
+
name: profile.data.username,
|
|
102
|
+
email: profile.data.email,
|
|
103
|
+
image: profile.data.profile_image,
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
options,
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import type { CommonProviderOptions } from "./index.js"
|
|
2
|
+
import type { Awaitable, User } from "../types.js"
|
|
3
|
+
import type { JSX } from "preact"
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Besides providing type safety inside {@link CredentialsConfig.authorize}
|
|
7
|
+
* it also determines how the credentials input fields will be rendered
|
|
8
|
+
* on the default sign in page.
|
|
9
|
+
*/
|
|
10
|
+
export interface CredentialInput
|
|
11
|
+
extends Partial<JSX.IntrinsicElements["input"]> {
|
|
12
|
+
label?: string
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/** The Credentials Provider needs to be configured. */
|
|
16
|
+
export interface CredentialsConfig<
|
|
17
|
+
CredentialsInputs extends Record<string, CredentialInput> = Record<
|
|
18
|
+
string,
|
|
19
|
+
CredentialInput
|
|
20
|
+
>,
|
|
21
|
+
> extends CommonProviderOptions {
|
|
22
|
+
type: "credentials"
|
|
23
|
+
credentials: CredentialsInputs
|
|
24
|
+
/**
|
|
25
|
+
* Gives full control over how you handle the credentials received from the user.
|
|
26
|
+
*
|
|
27
|
+
* :::warning
|
|
28
|
+
* There is no validation on the user inputs by default, so make sure you do so
|
|
29
|
+
* by a popular library like [Zod](https://zod.dev)
|
|
30
|
+
* :::
|
|
31
|
+
*
|
|
32
|
+
* This method expects a `User` object to be returned for a successful login.
|
|
33
|
+
*
|
|
34
|
+
* If an `CredentialsSignin` is thrown or `null` is returned, two things can happen:
|
|
35
|
+
* 1. The user is redirected to the login page, with `error=CredentialsSignin&code=credentials` in the URL. `code` is configurable, see below.
|
|
36
|
+
* 2. If you throw this error in a framework that handles form actions server-side, this error is thrown by the login form action, so you'll need to handle it there.
|
|
37
|
+
*
|
|
38
|
+
* In case of 1., generally, we recommend not hinting if the user for example gave a wrong username or password specifically,
|
|
39
|
+
* try rather something like "invalid-credentials". Try to be as generic with client-side errors as possible.
|
|
40
|
+
*
|
|
41
|
+
* To customize the error code, you can create a custom error that extends {@link CredentialsSignin} and throw it in `authorize`.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* class CustomError extends CredentialsSignin {
|
|
46
|
+
* code = "custom_error"
|
|
47
|
+
* }
|
|
48
|
+
* // URL will contain `error=CredentialsSignin&code=custom_error`
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* async authorize(credentials, request) { // you have access to the original request as well
|
|
54
|
+
* if(!isValidCredentials(credentials)) {
|
|
55
|
+
* throw new CustomError()
|
|
56
|
+
* }
|
|
57
|
+
* return await getUser(credentials) // assuming it returns a User or null
|
|
58
|
+
* }
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
authorize: (
|
|
62
|
+
/**
|
|
63
|
+
* The available keys are determined by {@link CredentialInput}.
|
|
64
|
+
*
|
|
65
|
+
* @note The existence/correctness of a field cannot be guaranteed at compile time,
|
|
66
|
+
* so you should always validate the input before using it.
|
|
67
|
+
*
|
|
68
|
+
* You can add basic validation depending on your use case,
|
|
69
|
+
* or you can use a popular library like [Zod](https://zod.dev) for example.
|
|
70
|
+
*/
|
|
71
|
+
credentials: Partial<Record<keyof CredentialsInputs, unknown>>,
|
|
72
|
+
/** The original request. */
|
|
73
|
+
request: Request
|
|
74
|
+
) => Awaitable<User | null>
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export type CredentialsProviderId = "credentials"
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* The Credentials provider allows you to handle signing in with arbitrary credentials,
|
|
81
|
+
* such as a username and password, domain, or two factor authentication or hardware device (e.g. YubiKey U2F / FIDO).
|
|
82
|
+
*
|
|
83
|
+
* It is intended to support use cases where you have an existing system you need to authenticate users against.
|
|
84
|
+
*
|
|
85
|
+
* It comes with the constraint that users authenticated in this manner are not persisted in the database,
|
|
86
|
+
* and consequently that the Credentials provider can only be used if JSON Web Tokens are enabled for sessions.
|
|
87
|
+
*
|
|
88
|
+
* :::caution
|
|
89
|
+
* The functionality provided for credentials-based authentication is intentionally limited to discourage the use of passwords due to the inherent security risks of the username-password model.
|
|
90
|
+
*
|
|
91
|
+
* OAuth providers spend significant amounts of money, time, and engineering effort to build:
|
|
92
|
+
*
|
|
93
|
+
* - abuse detection (bot-protection, rate-limiting)
|
|
94
|
+
* - password management (password reset, credential stuffing, rotation)
|
|
95
|
+
* - data security (encryption/salting, strength validation)
|
|
96
|
+
*
|
|
97
|
+
* and much more for authentication solutions. It is likely that your application would benefit from leveraging these battle-tested solutions rather than try to rebuild them from scratch.
|
|
98
|
+
*
|
|
99
|
+
* If you'd still like to build password-based authentication for your application despite these risks, Auth.js gives you full control to do so.
|
|
100
|
+
*
|
|
101
|
+
* :::
|
|
102
|
+
*
|
|
103
|
+
* See the [callbacks documentation](/reference/core#authconfig#callbacks) for more information on how to interact with the token. For example, you can add additional information to the token by returning an object from the `jwt()` callback:
|
|
104
|
+
*
|
|
105
|
+
* ```ts
|
|
106
|
+
* callbacks: {
|
|
107
|
+
* async jwt({ token, user, account, profile, isNewUser }) {
|
|
108
|
+
* if (user) {
|
|
109
|
+
* token.id = user.id
|
|
110
|
+
* }
|
|
111
|
+
* return token
|
|
112
|
+
* }
|
|
113
|
+
* }
|
|
114
|
+
* ```
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```ts
|
|
118
|
+
* import { Auth } from "@auth/core"
|
|
119
|
+
* import Credentials from "@auth/core/providers/credentials"
|
|
120
|
+
*
|
|
121
|
+
* const request = new Request("https://example.com")
|
|
122
|
+
* const response = await AuthHandler(request, {
|
|
123
|
+
* providers: [
|
|
124
|
+
* Credentials({
|
|
125
|
+
* credentials: {
|
|
126
|
+
* username: { label: "Username" },
|
|
127
|
+
* password: { label: "Password", type: "password" }
|
|
128
|
+
* },
|
|
129
|
+
* async authorize({ request }) {
|
|
130
|
+
* const response = await fetch(request)
|
|
131
|
+
* if(!response.ok) return null
|
|
132
|
+
* return await response.json() ?? null
|
|
133
|
+
* }
|
|
134
|
+
* })
|
|
135
|
+
* ],
|
|
136
|
+
* secret: "...",
|
|
137
|
+
* trustHost: true,
|
|
138
|
+
* })
|
|
139
|
+
* ```
|
|
140
|
+
* @see [Username/Password Example](https://authjs.dev/getting-started/authentication/credentials)
|
|
141
|
+
*/
|
|
142
|
+
export default function Credentials<
|
|
143
|
+
CredentialsInputs extends Record<string, CredentialInput> = Record<
|
|
144
|
+
string,
|
|
145
|
+
CredentialInput
|
|
146
|
+
>,
|
|
147
|
+
>(config: Partial<CredentialsConfig<CredentialsInputs>>): CredentialsConfig {
|
|
148
|
+
return {
|
|
149
|
+
id: "credentials",
|
|
150
|
+
name: "Credentials",
|
|
151
|
+
type: "credentials",
|
|
152
|
+
credentials: {},
|
|
153
|
+
authorize: () => null,
|
|
154
|
+
// @ts-expect-error
|
|
155
|
+
options: config,
|
|
156
|
+
}
|
|
157
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <div class="provider" style={{display: "flex", justifyContent: "space-between", alignItems: "center"}}>
|
|
3
|
+
* <span style={{fontSize: "1.35rem" }}>
|
|
4
|
+
* Built-in sign in with <b>Descope</b> integration.
|
|
5
|
+
* </span>
|
|
6
|
+
* <a href="https://descope.com" style={{backgroundColor: "#000000", padding: "12px", borderRadius: "100%" }}>
|
|
7
|
+
* <img style={{display: "block"}} src="https://authjs.dev/img/providers/descope.svg" width="24"/>
|
|
8
|
+
* </a>
|
|
9
|
+
* </div>
|
|
10
|
+
*
|
|
11
|
+
* @module providers/descope
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import type { OIDCConfig, OIDCUserConfig } from "./index.js"
|
|
15
|
+
|
|
16
|
+
/** The returned user profile from Descope when using the profile callback.
|
|
17
|
+
* [See Load User](https://docs.descope.com/api/openapi/usermanagement/operation/LoadUser/)
|
|
18
|
+
*/
|
|
19
|
+
export interface DescopeProfile {
|
|
20
|
+
/** The user's unique Descope ID */
|
|
21
|
+
sub: string
|
|
22
|
+
/** The user's name */
|
|
23
|
+
name: string
|
|
24
|
+
/** The user's email */
|
|
25
|
+
email: string
|
|
26
|
+
/** A boolean indicating if the user's email is verified */
|
|
27
|
+
email_verified: boolean
|
|
28
|
+
/** The user's phone number */
|
|
29
|
+
phone_number: string
|
|
30
|
+
/** A boolean indicating if the user's phone number is verified */
|
|
31
|
+
phone_number_verified: boolean
|
|
32
|
+
/** The user's picture */
|
|
33
|
+
picture: string
|
|
34
|
+
/** The user's custom attributes */
|
|
35
|
+
[claim: string]: unknown
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
*
|
|
40
|
+
* ### Setup
|
|
41
|
+
*
|
|
42
|
+
* #### Callback URL
|
|
43
|
+
* ```
|
|
44
|
+
* https://example.com/api/auth/callback/descope
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* #### Configuration
|
|
48
|
+
* ```ts
|
|
49
|
+
* import { Auth } from "@auth/core"
|
|
50
|
+
* import Descope from "@auth/core/providers/descope"
|
|
51
|
+
*
|
|
52
|
+
* const request = new Request(origin)
|
|
53
|
+
* const response = await Auth(request, { providers: [Descope({ clientId: AUTH_DESCOPE_ID, clientSecret: AUTH_DESCOPE_SECRET, issuer: AUTH_DESCOPE_ISSUER })] })
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* ### Configuring Descope
|
|
57
|
+
*
|
|
58
|
+
* Follow these steps:
|
|
59
|
+
*
|
|
60
|
+
* 1. Log into the [Descope console](https://app.descope.com)
|
|
61
|
+
* 2. Follow the [OIDC instructions](https://docs.descope.com/customize/auth/oidc)
|
|
62
|
+
*
|
|
63
|
+
* Then, create a `.env.local` file in the project root add the following entries:
|
|
64
|
+
*
|
|
65
|
+
* Get the following from the Descope's console:
|
|
66
|
+
* ```
|
|
67
|
+
* AUTH_DESCOPE_ID="<Descope Issuer's last url segment>" # Descope's Issuer can be found in "Authentication Methods > SSO > Identity Provider" (Can also be taken from "Project > Project ID")
|
|
68
|
+
* AUTH_DESCOPE_SECRET="<Descope Access Key>" # Manage > Access Keys
|
|
69
|
+
* AUTH_DESCOPE_ISSUER="<Descope Issuer URL>" # Applications -> OIDC Application -> Issuer
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* ### Resources
|
|
73
|
+
*
|
|
74
|
+
* - [Descope OIDC](https://docs.descope.com/customize/auth/oidc)
|
|
75
|
+
* - [Descope Flows](https://docs.descope.com/customize/flows)
|
|
76
|
+
*
|
|
77
|
+
* ### Notes
|
|
78
|
+
*
|
|
79
|
+
* The Descope provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/descope.ts). To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
|
|
80
|
+
*
|
|
81
|
+
* :::info
|
|
82
|
+
* By default, Auth.js assumes that the Descope provider is based on the [OIDC](https://openid.net/specs/openid-connect-core-1_0.html) spec
|
|
83
|
+
* :::
|
|
84
|
+
*
|
|
85
|
+
* ## Help
|
|
86
|
+
*
|
|
87
|
+
* If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
|
|
88
|
+
*
|
|
89
|
+
* Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
|
|
90
|
+
* the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
|
|
91
|
+
* we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
|
|
92
|
+
*/
|
|
93
|
+
export default function Descope(
|
|
94
|
+
config: OIDCUserConfig<DescopeProfile>
|
|
95
|
+
): OIDCConfig<DescopeProfile> {
|
|
96
|
+
config.issuer ??= `https://api.descope.com/${config.clientId}`
|
|
97
|
+
return {
|
|
98
|
+
id: "descope",
|
|
99
|
+
name: "Descope",
|
|
100
|
+
type: "oidc",
|
|
101
|
+
style: { bg: "#1C1C23", text: "#ffffff" },
|
|
102
|
+
checks: ["pkce", "state"],
|
|
103
|
+
options: config,
|
|
104
|
+
}
|
|
105
|
+
}
|