mirror of
https://github.com/zitadel/zitadel.git
synced 2026-10-24 23:27:43 -05:00
### Which Problems Are Solved
- A user authenticates successfully with an external IdP, but no
matching ZITADEL user exists and the IdP allows neither user creation
nor linking. The hosted login then renders a hardcoded error message
(`Errors.User.ExternalIDP.NoOptionAllowed`): *"Neither creation of
linking is allowed on this provider. Please contact your
administrator."*
- Unlike every other message of the login flow, this message cannot be
customized. An administrator can neither point the user to the right
place (e.g. a specific support address or internal process) nor adjust
wording, tone or branding — and the default sentence contains a typo.
### How the Problems Are Solved
- Adds the login text `ExternalNotFound.NoOptionAvailable` (proto:
`ExternalUserNotFoundScreenText.no_option_available`), which can be set
per instance and per organization like all other login texts (Console:
Branding → Login Texts → External User Not Found).
- Renders that text instead of the hardcoded error when an external user
does not match an existing user and neither creation nor linking is
allowed on the IdP. If an actual error occurred on that page, it is
still rendered as before.
- Passes the provider name to the text, so a custom text can reference
it as `{{.ProviderName}}`.
### Additional Changes
- Adds the default text for the new key to all 22 login translation
files.
- Console: includes the new field when saving login texts. The editor
itself renders the fields returned by the API, so no changes to the form
were required.
### Additional Context
- Relates to #12723. This PR only makes the message configurable, it
does not change *when* the message is shown: the configuration reported
in that issue (IdP linking allowed, user creation disabled) still ends
up on the "external user not found" page with a link option instead of
this message.
- Login v2 (`apps/login`) is not affected. It already renders a
dedicated `/idp/{provider}/account-not-found` page whose texts come from
the hosted login translations.
---------
Co-authored-by: Stefan Schöb <stefan.schoeb@taskbase.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Silvan <27845747+adlerhurst@users.noreply.github.com>