diff --git a/.changeset/lucky-islands-whisper.md b/.changeset/lucky-islands-whisper.md new file mode 100644 index 00000000000..8bfd137f0dd --- /dev/null +++ b/.changeset/lucky-islands-whisper.md @@ -0,0 +1,6 @@ +--- +'@clerk/clerk-js': patch +'@clerk/elements': patch +--- + +Display additional errors from enterprise SSO diff --git a/packages/clerk-js/src/core/constants.ts b/packages/clerk-js/src/core/constants.ts index d8c0b052593..7dd3d289d4d 100644 --- a/packages/clerk-js/src/core/constants.ts +++ b/packages/clerk-js/src/core/constants.ts @@ -27,6 +27,10 @@ export const ERROR_CODES = { USER_LOCKED: 'user_locked', EXTERNAL_ACCOUNT_NOT_FOUND: 'external_account_not_found', SIGN_UP_MODE_RESTRICTED: 'sign_up_mode_restricted', + ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING: 'enterprise_sso_user_attribute_missing', + ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'enterprise_sso_email_address_domain_mismatch', + ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH: 'enterprise_sso_hosted_domain_mismatch', + SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'saml_email_address_domain_mismatch', } as const; export const SIGN_IN_INITIAL_VALUE_KEYS = ['email_address', 'phone_number', 'username']; diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInStart.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInStart.tsx index 20175183b63..f55510885e6 100644 --- a/packages/clerk-js/src/ui/components/SignIn/SignInStart.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/SignInStart.tsx @@ -221,6 +221,10 @@ export function _SignInStart(): JSX.Element { case ERROR_CODES.USER_LOCKED: case ERROR_CODES.EXTERNAL_ACCOUNT_NOT_FOUND: case ERROR_CODES.SIGN_UP_MODE_RESTRICTED: + case ERROR_CODES.ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING: + case ERROR_CODES.ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH: + case ERROR_CODES.ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH: + case ERROR_CODES.SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH: card.setError(error); break; default: diff --git a/packages/clerk-js/src/ui/components/SignUp/SignUpStart.tsx b/packages/clerk-js/src/ui/components/SignUp/SignUpStart.tsx index 2c5d0ab4794..9a425e3ea70 100644 --- a/packages/clerk-js/src/ui/components/SignUp/SignUpStart.tsx +++ b/packages/clerk-js/src/ui/components/SignUp/SignUpStart.tsx @@ -169,6 +169,10 @@ function _SignUpStart(): JSX.Element { case ERROR_CODES.SAML_USER_ATTRIBUTE_MISSING: case ERROR_CODES.OAUTH_EMAIL_DOMAIN_RESERVED_BY_SAML: case ERROR_CODES.USER_LOCKED: + case ERROR_CODES.ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING: + case ERROR_CODES.ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH: + case ERROR_CODES.ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH: + case ERROR_CODES.SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH: card.setError(error); break; default: diff --git a/packages/elements/src/internals/constants/index.ts b/packages/elements/src/internals/constants/index.ts index 9ec7e3cc2d3..46d577aa8b4 100644 --- a/packages/elements/src/internals/constants/index.ts +++ b/packages/elements/src/internals/constants/index.ts @@ -53,6 +53,10 @@ export const ERROR_CODES = { NOT_ALLOWED_ACCESS: 'not_allowed_access', SAML_USER_ATTRIBUTE_MISSING: 'saml_user_attribute_missing', USER_LOCKED: 'user_locked', + ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING: 'enterprise_sso_user_attribute_missing', + ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'enterprise_sso_email_address_domain_mismatch', + ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH: 'enterprise_sso_hosted_domain_mismatch', + SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'saml_email_address_domain_mismatch', }; export const ROUTING = { diff --git a/packages/elements/src/internals/machines/sign-in/router.machine.ts b/packages/elements/src/internals/machines/sign-in/router.machine.ts index 18eac1068f3..2a923afe41b 100644 --- a/packages/elements/src/internals/machines/sign-in/router.machine.ts +++ b/packages/elements/src/internals/machines/sign-in/router.machine.ts @@ -123,6 +123,10 @@ export const SignInRouterMachine = setup({ case ERROR_CODES.SAML_USER_ATTRIBUTE_MISSING: case ERROR_CODES.OAUTH_EMAIL_DOMAIN_RESERVED_BY_SAML: case ERROR_CODES.USER_LOCKED: + case ERROR_CODES.ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING: + case ERROR_CODES.ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH: + case ERROR_CODES.ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH: + case ERROR_CODES.SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH: error = new ClerkElementsError(errorOrig.code, errorOrig.longMessage || ''); break; default: diff --git a/packages/elements/src/internals/machines/sign-up/router.machine.ts b/packages/elements/src/internals/machines/sign-up/router.machine.ts index 50bb02d76bd..39677cb5a25 100644 --- a/packages/elements/src/internals/machines/sign-up/router.machine.ts +++ b/packages/elements/src/internals/machines/sign-up/router.machine.ts @@ -109,6 +109,10 @@ export const SignUpRouterMachine = setup({ case ERROR_CODES.SAML_USER_ATTRIBUTE_MISSING: case ERROR_CODES.OAUTH_EMAIL_DOMAIN_RESERVED_BY_SAML: case ERROR_CODES.USER_LOCKED: + case ERROR_CODES.ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING: + case ERROR_CODES.ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH: + case ERROR_CODES.ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH: + case ERROR_CODES.SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH: error = new ClerkElementsError(errorOrig.code, errorOrig.longMessage!); break; default: