1
0
mirror of https://github.com/keycloak/keycloak.git synced 2026-10-23 19:29:23 +03:00

3694 Commits

Author SHA1 Message Date
Mahathir Mohammad Shuvo
e7689b41c7 Address cache policy fields by the shape held in the form (#52198)
The four cache policy detail fields were addressed with a fixed array index -
config.maxLifespan[0] and the three eviction fields. That holds on the LDAP and
Kerberos screens, which load with form.reset(component) and keep the raw
ComponentRepresentation, so the entry really is an array.

The custom provider screen loads with convertToFormValues, which unwraps a
single-element array, so the same entry is the plain string "50". react-hook-form
resolves config.maxLifespan[0] against that string as "5", and registering on an
index path writes that value back into form state. The truncation is therefore what
the next save sends, whether or not the user touched the field: a stored 50 persists
as ["5"], and an eviction time of 12:30 as 1:3.

Each field is now addressed by the shape actually present, the same way cachePolicy
already tolerated both through getValue. Only an array or a still-unset value takes
the index, so nothing changes for LDAP, for Kerberos or for a new provider, and the
path stays put when the number control replaces the string with a number.

Closes #52029

Signed-off-by: Mahathir Mohammad Shuvo <shuvo1728@gmail.com>
2026-10-23 14:08:22 +00:00
Chethann
fcf3ede11d Show a confirmation after the password is updated in the account console (#54248)
The account console never told the user that a password change went
through. Keep the result of the application-initiated action in the
Keycloak context and show accountPasswordUpdatedMessage on the signing in
page when UPDATE_PASSWORD finishes successfully.

Closes #54220

Signed-off-by: Chethann <chethankumar0544@gmail.com>
2026-10-22 10:51:04 +00:00
Alexander Schwartz
7eee7e7a64 Retry entering the mapper name if the text did not end up in the field
Closes #54221

Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-21 12:28:53 +02:00
Alexander Schwartz
2bdaf33670 Show the spinner from the first render in KeycloakDataTable
Closes #54218

Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-21 12:23:46 +02:00
Alexander Schwartz
cbd3da1dd0 Fix racy test to first wait for role creation
Closes #54202

Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
2026-10-21 12:15:55 +02:00
Alexander Schwartz
2f20028a75 Make clickCreateUser wait for an actionable button in the user profile tests
Closes #54215

Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-21 12:12:10 +02:00
Ricardo Martin
d7b7d660ba Upgrade playwright for JS testing
Closes #54173

Signed-off-by: rmartinc <rmartinc@redhat.com>
2026-10-20 16:45:30 +02:00
vramik
672f05e258 Require manage-realm to change realm-level default client scopes
Closes #54151

Signed-off-by: vramik <vramik@redhat.com>
2026-10-20 11:40:06 -03:00
vramik
e203767c06 Service account user ID available on client representation instead of exposing separate endpoint returning whole user representation
Closes #54047

Signed-off-by: vramik <vramik@redhat.com>
2026-10-20 10:03:04 -03:00
Bangaru Saivivek
36d6768085 Add regression test for the admin's email in the Email tab of non-master realms (#54095)
A master realm admin with an e-mail address should see that address in
the test connection hint on the Email tab of any realm, not only master.

Related to #54060, #52744

Signed-off-by: bangarusaivivek <bangarusaivivek1996@gmail.com>
2026-10-19 13:29:35 +00:00
Martin Kanis
e61e1e4e02 Deleted required client scope is removed from mixed client-scope policies
Closes #51248

Signed-off-by: Martin Kanis <mkanis@ibm.com>
2026-10-19 09:21:04 -03:00
Stan Silvert
0b881862c6 Authorize receiver-driven SSF subject adds per subject (#53765)
* Authorize receiver-driven SSF subject adds per subject

Any SSF receiver with ssf.manage could subscribe to security events for
every user in the realm, since subjects/add only verified stream
ownership. Receiver adds are now gated by ssf.receiverSubjectAddPolicy
(AUTHENTICATED by default, ANY, NONE), and can no longer override a
subject an administrator explicitly ignored.

Fixes #53695

Signed-off-by: Stan Silvert <ssilvert@redhat.com>
Assisted-by: Claude Opus 5.5

* Ignore expired sessions in the SSF AUTHENTICATED add check

Session streams can return user and client sessions past their idle or
max lifespan, so an expired relationship still let a receiver add the
user. Require the same session validity checks as token refresh.

Also restore the default add policy in test cleanup by blanking the
attribute: a client update keeps attributes omitted from the
representation, so ANY/NONE leaked into later tests.

Fixes #53695

Signed-off-by: Stan Silvert <ssilvert@redhat.com>
Assisted-by: Claude Opus 5.5

---------

Signed-off-by: Stan Silvert <ssilvert@redhat.com>
2026-10-14 14:45:17 -04:00
Erik Jan de Wit
b617a625f5 fix default / required value handling (#53018) 2026-10-14 15:08:09 +02:00
Alexander Schwartz
76fead023b Fix flaky OID4VC section visibility test in Admin UI E2E
Closes #53834

Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-12 14:31:55 +02:00
Weblate (bot)
df42fa2f29 Translations update from Hosted Weblate (#53375)
* Updated translation for Turkish

Language: tr

Updated translation for Turkish

Language: tr

Translated using Weblate (Turkish)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/tr/

Translated using Weblate (Turkish)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/tr/

Updated translation for Turkish

Language: tr

Updated translation for Turkish

Language: tr

Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Arif EROL <arif.erol16@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Arif EROL <arif.erol16@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Updated translation for German

Language: de

Translated using Weblate (German)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/de/

Updated translation for German

Language: de

Translated using Weblate (German)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/de/

Translated using Weblate (German)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/de/

Updated translation for German

Language: de

Translated using Weblate (German)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/de/

Updated translation for German

Language: de

Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Ettore Atalan <atalanttore@googlemail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Robin <39960884+robson90@users.noreply.github.com>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Ettore Atalan <atalanttore@googlemail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Robin <39960884+robson90@users.noreply.github.com>

* Updated translation for Russian

Language: ru

Updated translation for Russian

Language: ru

Co-authored-by: Eugene Pasternak <pasternake@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Eugene Pasternak <pasternake@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Updated translation for Catalan

Language: ca

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jordi Mallach <jordi@mallach.net>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Jordi Mallach <jordi@mallach.net>

* Updated translation for Czech

Language: cs

Updated translation for Czech

Language: cs

Updated translation for Czech

Language: cs

Updated translation for Czech

Language: cs

Updated translation for Czech

Language: cs

Translated using Weblate (Czech)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/cs/

Updated translation for Czech

Language: cs

Updated translation for Czech

Language: cs

Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Martin Kylián <martin.kylian@gmail.com>
Co-authored-by: Peter Schiffer <peter@pschiffer.eu>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Martin Kylián <martin.kylian@gmail.com>
Signed-off-by: Peter Schiffer <peter@pschiffer.eu>

* Updated translation for Indonesian

Language: id

Co-authored-by: Arif Budiman <arifpedia@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Arif Budiman <arifpedia@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Translated using Weblate (French)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/fr/

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Translated using Weblate (French)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/fr/

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Lewis Bertin <lewis@tactiqual.tech>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Lewis Bertin <lewis@tactiqual.tech>
Signed-off-by: Sylvain Pichon <service@spichon.fr>

* Updated translation for Swedish

Language: sv

Updated translation for Swedish

Language: sv

Updated translation for Swedish

Language: sv

Updated translation for Swedish

Language: sv

Updated translation for Swedish

Language: sv

Translated using Weblate (Swedish)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/sv/

Co-authored-by: Daniel Nylander <yeagersthlm@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Signed-off-by: Daniel Nylander <yeagersthlm@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: bittin1ddc447d824349b2 <bittin@reimu.nl>

* Updated translation for Persian

Language: fa

Updated translation for Persian

Language: fa

Translated using Weblate (Persian)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/fa/

Updated translation for Persian

Language: fa

Updated translation for Persian

Language: fa

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Naser Mirzaei <nasermirzaei89@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Naser Mirzaei <nasermirzaei89@gmail.com>

---------

Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Arif EROL <arif.erol16@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Ettore Atalan <atalanttore@googlemail.com>
Signed-off-by: Robin <39960884+robson90@users.noreply.github.com>
Signed-off-by: Eugene Pasternak <pasternake@gmail.com>
Signed-off-by: Jordi Mallach <jordi@mallach.net>
Signed-off-by: Martin Kylián <martin.kylian@gmail.com>
Signed-off-by: Peter Schiffer <peter@pschiffer.eu>
Signed-off-by: Arif Budiman <arifpedia@gmail.com>
Signed-off-by: Lewis Bertin <lewis@tactiqual.tech>
Signed-off-by: Sylvain Pichon <service@spichon.fr>
Signed-off-by: Daniel Nylander <yeagersthlm@gmail.com>
Signed-off-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Signed-off-by: Naser Mirzaei <nasermirzaei89@gmail.com>
Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Arif EROL <arif.erol16@gmail.com>
Co-authored-by: Ettore Atalan <atalanttore@googlemail.com>
Co-authored-by: Robin <39960884+robson90@users.noreply.github.com>
Co-authored-by: Eugene Pasternak <pasternake@gmail.com>
Co-authored-by: Jordi Mallach <jordi@mallach.net>
Co-authored-by: Martin Kylián <martin.kylian@gmail.com>
Co-authored-by: Peter Schiffer <peter@pschiffer.eu>
Co-authored-by: Arif Budiman <arifpedia@gmail.com>
Co-authored-by: Lewis Bertin <lewis@tactiqual.tech>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Daniel Nylander <yeagersthlm@gmail.com>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Co-authored-by: Naser Mirzaei <nasermirzaei89@gmail.com>
2026-10-11 17:58:43 +02:00
Eren Kan
f38eea8493 Reject workflow expressions with unrecognized characters (#53794)
* Reject workflow expressions with unrecognized characters

Closes #53790

Signed-off-by: erenkan <eren@keymate.io>
2026-10-09 15:29:22 -03:00
Yang Bai
27fd923ddf Declare null, not undefined, for admin client lookups that tolerate a 404
With catchNotFound the agent returns null for a missing resource, but most
of these methods declared T | undefined, and several declared no missing
case at all: findProtocolMapperById, findProtocolMappersByProtocol,
roles.findUsersWithRole, workflows.scheduled, getRequiredActionForAlias
(any) and the two policy lookups (void). The admin console now converts
the null where it stores the result as T | undefined, filters it out of
the user, role and policy selections, and shows an empty list where a
missing role or user made the Users in role and Workflows tabs fail.

Closes #43371

Signed-off-by: Yang Bai <271969568+ybai08@users.noreply.github.com>
2026-10-09 12:00:51 -03:00
Erik Jan de Wit
17e1425ab6 fixes CVE-2026-15943 by dropping when other values are changed (#53411)
* fixes CVE-2026-15943 by dropping when other values are changed

fixes: #50945
Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com>
2026-10-09 08:18:21 -03:00
Eren Kan
c0d9636f3d Refer to YAML in the create workflow page subtitle (#53783)
Closes #53782

Signed-off-by: erenkan <eren@keymate.io>
2026-10-09 11:25:04 +02:00
Yang Bai
3c612ce66a Let view-realm and manage-realm admins use the Authentication section
The admin console required view-clients and view-identity-providers to show
Authentication, and the Authorization Services roles for the flow routes,
while the endpoints behind them only ask for view-realm or manage-realm and
filter flow usage by the caller's own permissions (#53315).

Closes #51135

Signed-off-by: Yang Bai <271969568+ybai08@users.noreply.github.com>
2026-10-08 18:02:08 +02:00
Alexander Schwartz
8474bd5848 Fix unstable handling for table rows
Closes #53659

Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-10-07 15:39:09 +02:00
vramik
4c746a54c6 Organization invitation redirectUrl is not validated against the account client allowlist, leaking a new user's authorization code
Closes #53058

Signed-off-by: vramik <vramik@redhat.com>
2026-10-07 09:12:23 -03:00
Alexander Schwartz
094213fe67 Fix unstable handling for tables
Closes #53653

Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
2026-10-07 08:38:23 -03:00
Alexander Schwartz
83f6e2a2fb Fix unstable handling of the help
Closes #53660

Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
2026-10-07 13:26:08 +02:00
Erik Jan de Wit
7ef39f4fbc Bump simple-git from 3.36.0 to 4.0.2 in /js (#53611)
Update create-keycloak-theme to a patched simple-git release that addresses CVE-2026-102826, CVE-2026-102827, CVE-2026-102828, and CVE-2026-102829.

Closes #53582

Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com>
2026-10-06 15:50:00 +02:00
Martin Bartoš
ff2c490198 Fix tooltips in Security defense tab in admin console (#53585)
Closes #53142

Signed-off-by: Martin Bartoš <mabartos@redhat.com>
2026-10-06 14:41:37 +02:00
Martin Bartoš
228ec12884 Sign out user session logs out different session (#53543)
Closes #52927

Signed-off-by: Martin Bartoš <mabartos@redhat.com>
2026-10-06 09:59:42 +02:00
Erik Jan de Wit
49f8602518 use the user realm to query (#52997)
fixes: #52744

Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com>
2026-10-06 07:38:51 +02:00
Tomáš Kyjovský
e4cdb5eb88 Enforce signature validation for back-channel logout tokens even when the IDP's signature validation is disabled.
Signed-off-by: Tomas Kyjovsky <tkyjovsk@ibm.com>

Closes #51381
2026-10-05 14:49:35 -03:00
Alexander Schwartz
db9459b715 When selecting an option in the UI, wait for the UI to settle
Closes #53467

Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
2026-10-05 08:37:41 +02:00
forkimenjeckayang
6a041c5f5e Add OID4VCI UI integration tests for user credentials (#53466)
Closes #48927

Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>
2026-10-02 15:42:40 +02:00
Stan Silvert
51e0b97ba7 Restore undefined guard on RoleSelect form values
RoleSelect mounts in the Permissions Evaluation tab before the roles
field has a value, so getValues() returns undefined and reading
.length crashes the page. The guard was removed by the
no-unnecessary-condition cleanup because the form type declared the
value as non-nullable. Declare the field as possibly undefined so the
type matches react-hook-form's runtime behaviour and the lint rule no
longer flags the guard.

Fixes #53370

Signed-off-by: Stan Silvert <ssilvert@redhat.com>
Assisted-by: Claude Opus 5.5
2026-10-01 11:34:54 -03:00
Stan Silvert
0d93d7b4f2 Add missing selectRoles message key
The Permissions → Evaluation help popover builds its key as
select${resourceType}, and selectRoles was never defined, so the Roles
resource type showed the raw key instead of help text.

Fixes #53373

Signed-off-by: Stan Silvert <ssilvert@redhat.com>
Assisted-by: Claude Opus 5.5
2026-10-01 11:33:21 -03:00
Erik Jan de Wit
7097146469 Prevent reverse tabnabbing for account console client links (#53044)
* Prevent reverse tabnabbing for account console client links

Open client-controlled URLs with noopener and noreferrer so opened
pages cannot access window.opener.

Closes #52677

Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com>

* Add regression test for account console tabnabbing protection

Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com>

* changed to href

Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com>

* updated tests

Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com>

---------

Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com>
2026-10-01 15:32:25 +02:00
s3n-w6i
5c29466b74 Use the correct role guarding the edit organization route
Using `view-organizations` would require all users accessing the edit organization route to have access to all organizations, even if they are granted access to just one organization through FGAP. Using `query-organizations` unifies the role behavior with the users and group resource types.

Closes: #53400

Signed-off-by: s3n-w6i <37022952+s3n-w6i@users.noreply.github.com>
2026-10-01 10:01:55 -03:00
Yang Bai
4df925fd4e Name the remove buttons in the FGAP resource selects (#53380)
* Name the remove buttons in the FGAP resource selects

The remove button on each row of the group, role and organization selects was icon-only, so screen readers announced an unlabelled button. Give each one an aria-label that names the row it removes.

Closes #53372

Signed-off-by: Yang Bai <271969568+ybai08@users.noreply.github.com>

* Include the client in the accessible name of a client role's remove button

Client role names are only unique within a client, so two selected roles with the same name from different clients got the same accessible name.

Closes #53372

Signed-off-by: Yang Bai <271969568+ybai08@users.noreply.github.com>

* Test the remove buttons of the FGAP role select by their accessible names

Covers a realm role and a client role of the same name, which the client ID in the button's name tells apart.

Closes #53372

Signed-off-by: Yang Bai <271969568+ybai08@users.noreply.github.com>

---------

Signed-off-by: Yang Bai <271969568+ybai08@users.noreply.github.com>
Co-authored-by: Yang Bai <271969568+ybai08@users.noreply.github.com>
2026-10-01 08:58:35 -04:00
theohh0
feedec886e Implement selecting specific organizations in FGAP permission (#51717)
* Safely Adapted organization modal for use with fgap

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Create OrganizationSelect component

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Add organizations to resource types

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Added en translation keys

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* added orgs to permission eval

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Show error when no orgs selected

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* disable add/join button if no orgs selected

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* display error message when no organizations exist

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* filter out organization resource type if disabled

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Catch not found organizations

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* pass isRadio through to organization modal

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Clean up organization modal titles code

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* casing and placement

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Don't show empty orgs error when orgs loading.

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Disable existing orgs selected rather than removing them from modal

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Select all shouldnt select disabled rows in `KeycloakDataTable`

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* fix adminclient org typing and catch nulls

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* use translation keys for OrganizationModal.tsx titles

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Missing message keys

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Calculate orgsEnabled outside of memo

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Don't include subrows in select all

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* remove unnecessary properties from SubRow

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* disable select all if nothing selectable

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* don't need to pass existingOrgs length into loader params now that they aren't removed

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* added select/delete org permission test

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* enable organizations in test realm

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* reusable selectedRows var

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* hopefully more concrete org row selector

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* create policy with different name

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* just check for presence of data property - not truthiness

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* clean up perm tests once complete

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Safely Adapted organization modal for use with fgap

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Create OrganizationSelect component

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Add organizations to resource types

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Added en translation keys

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* added orgs to permission eval

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Show error when no orgs selected

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* disable add/join button if no orgs selected

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* display error message when no organizations exist

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* filter out organization resource type if disabled

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Catch not found organizations

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* pass isRadio through to organization modal

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Clean up organization modal titles code

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* casing and placement

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Don't show empty orgs error when orgs loading.

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Disable existing orgs selected rather than removing them from modal

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Select all shouldnt select disabled rows in `KeycloakDataTable`

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* fix adminclient org typing and catch nulls

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* use translation keys for OrganizationModal.tsx titles

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Missing message keys

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Calculate orgsEnabled outside of memo

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Don't include subrows in select all

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* remove unnecessary properties from SubRow

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* disable select all if nothing selectable

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* don't need to pass existingOrgs length into loader params now that they aren't removed

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* added select/delete org permission test

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* enable organizations in test realm

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* reusable selectedRows var

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* hopefully more concrete org row selector

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* create policy with different name

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* just check for presence of data property - not truthiness

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* clean up perm tests once complete

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Make sure delete completes

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* disable row selection only when var exists and true in KeycloakDataTable

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: theohh0 <theo.hintonhallows123@gmail.com>

* corrected copilots edit

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Handle undefined organization in findOne callers

* Handle undefined organization in findOne callers

organizations.findOne now returns OrganizationRepresentation | undefined
(catchNotFound), but the callers added on main in the multi-IdP work still
assumed it always returns an organization, which fails the type check.

Each caller now handles a missing organization the same way it did when
the 404 was thrown, so behaviour doesn't change.

Signed-off-by: Danny <117714228+UCNDanny@users.noreply.github.com>

* Undo change to DetailOrganization.tsx

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

* Use optional chaining for organization domains rather than throwing for undefined orgs

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

---------

Signed-off-by: Danny <117714228+UCNDanny@users.noreply.github.com>
Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>
Co-authored-by: theohh0 <theo.hinton-hallows@ibm.com>

* use isRadio to manage evaluation 'canSelectAll' so column headings don't incorrectly get shifted over by 1.

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>

---------

Signed-off-by: theohh0 <theo.hinton-hallows@ibm.com>
Signed-off-by: theohh0 <theo.hintonhallows123@gmail.com>
Signed-off-by: Danny <117714228+UCNDanny@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Danny <117714228+UCNDanny@users.noreply.github.com>
2026-09-30 15:37:12 -04:00
Niko Köbler
51472ab4a4 Convert string values before stepping a number control (#53127)
NumberControl hands the raw form value to PatternFly, and a value backed by a
config or attribute map is a string. Both steppers broke on that. PatternFly
substitutes 0 for a value that is not a number when it decides whether a
stepper is in range, so against the `min` of 0 that most callers set, the
minus button was permanently disabled. And `value + 1` on a string appends
instead of incrementing, so a stored 50 turned into 501 on the first click of
plus, which is then what gets saved.

Convert a numeric string once, for the displayed value as well as for the
steppers, since the disabled state is decided inside PatternFly from what it
is handed. A value that is not a numeric string is passed on untouched, so an
empty or unparseable field renders as before.

Closes #53126

Signed-off-by: Niko Köbler <niko@n-k.de>
2026-09-30 14:37:55 -04:00
Weblate (bot)
bdeeec146f Translations update from Hosted Weblate (#52866)
* Updated translation for Turkish

Language: tr

Updated translation for Turkish

Language: tr

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Arif EROL <arif.erol16@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Arif EROL <arif.erol16@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Translated using Weblate (Portuguese (Brazil))

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/pt_BR/

Translated using Weblate (Portuguese (Brazil))

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/pt_BR/

Updated translation for Portuguese (Brazil)

Language: pt_BR

Updated translation for Portuguese (Brazil)

Language: pt_BR

Updated translation for Portuguese (Brazil)

Language: pt_BR

Updated translation for Portuguese (Brazil)

Language: pt_BR

Updated translation for Portuguese (Brazil)

Language: pt_BR

Updated translation for Portuguese (Brazil)

Language: pt_BR

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Gustavo Bretas <gustavobretas@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Rafael Cunha <rafael.danicunha@gmail.com>
Signed-off-by: Gustavo Bretas <gustavobretas@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Rafael Cunha <rafael.danicunha@gmail.com>

* Updated translation for German

Language: de

Translated using Weblate (German)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/de/

Translated using Weblate (German)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/de/

Updated translation for German

Language: de

Updated translation for German

Language: de

Updated translation for German

Language: de

Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: André Schild <andre@schild.ws>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Hosted Weblate user 165770 <fstolte@users.noreply.hosted.weblate.org>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: André Schild <andre@schild.ws>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Hosted Weblate user 165770 <fstolte@users.noreply.hosted.weblate.org>

* Updated translation for Russian

Language: ru

Updated translation for Russian

Language: ru

Co-authored-by: Eugene Pasternak <pasternake@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Eugene Pasternak <pasternake@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Updated translation for Catalan

Language: ca

Co-authored-by: Ecron <ecron_89@hotmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Ecron <ecron_89@hotmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Updated translation for Czech

Language: cs

Updated translation for Czech

Language: cs

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Martin Kluska <martin@kluska.cz>
Co-authored-by: Peter Schiffer <peter@pschiffer.eu>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Martin Kluska <martin@kluska.cz>
Signed-off-by: Peter Schiffer <peter@pschiffer.eu>

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Updated translation for Dutch

Language: nl

Updated translation for Dutch

Language: nl

Updated translation for Dutch

Language: nl

Updated translation for Dutch

Language: nl

Updated translation for Dutch

Language: nl

Updated translation for Dutch

Language: nl

Updated translation for Dutch

Language: nl

Updated translation for Dutch

Language: nl

Updated translation for Dutch

Language: nl

Translated using Weblate (Dutch)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/nl/

Co-authored-by: Daan Breur <daanbreur@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jan Herrygers <jherrygers@vaa.com>
Signed-off-by: Daan Breur <daanbreur@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Jan Herrygers <jherrygers@vaa.com>

* Updated translation for Spanish

Language: es

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Herbert Solórzano <herbert.solorzano@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Herbert Solórzano <herbert.solorzano@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: André Schild <andre@schild.ws>
Co-authored-by: Dodouce <marin.pau22@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Lewis Bertin <lewis@tactiqual.tech>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Signed-off-by: André Schild <andre@schild.ws>
Signed-off-by: Dodouce <marin.pau22@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Lewis Bertin <lewis@tactiqual.tech>
Signed-off-by: Sylvain Pichon <service@spichon.fr>

* Updated translation for Swedish

Language: sv

Updated translation for Swedish

Language: sv

Translated using Weblate (Swedish)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/sv/

Updated translation for Swedish

Language: sv

Updated translation for Swedish

Language: sv

Updated translation for Swedish

Language: sv

Updated translation for Swedish

Language: sv

Updated translation for Swedish

Language: sv

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Updated translation for Swedish

Language: sv

Co-authored-by: Daniel Nylander <yeagersthlm@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Signed-off-by: Daniel Nylander <yeagersthlm@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: bittin1ddc447d824349b2 <bittin@reimu.nl>

* Updated translation for Persian

Language: fa

Updated translation for Persian

Language: fa

Updated translation for Persian

Language: fa

Translated using Weblate (Persian)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/fa/

Updated translation for Persian

Language: fa

Updated translation for Persian

Language: fa

Translated using Weblate (Persian)

Currently translated at 100.0% (1 of 1 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (1 of 1 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (1 of 1 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (1 of 1 strings)

Updated translation for Persian

Language: fa

Updated translation for Persian

Language: fa

Updated translation for Persian

Language: fa

Updated translation for Persian

Language: fa

Updated translation for Persian

Language: fa

Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Naser Mirzaei <nasermirzaei89@gmail.com>
Co-authored-by: Soltinator <ali.soltani2000@hotmail.com>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Naser Mirzaei <nasermirzaei89@gmail.com>
Signed-off-by: Soltinator <ali.soltani2000@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-e-mail-theme/fa/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-login-theme/fa/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-v2-login-theme/fa/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-welcome-theme/fa/
Translation: Keycloak/Keycloak E-mail theme
Translation: Keycloak/Keycloak Login theme
Translation: Keycloak/Keycloak Welcome theme
Translation: Keycloak/Keycloak v2 Login theme

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Translated using Weblate (Chinese (Traditional Han script))

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/zh_Hant/

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Translated using Weblate (Chinese (Traditional Han script))

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/zh_Hant/

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Translated using Weblate (Chinese (Traditional Han script))

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/zh_Hant/

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Translated using Weblate (Chinese (Traditional Han script))

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/zh_Hant/

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Translated using Weblate (Chinese (Traditional Han script))

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/zh_Hant/

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Translated using Weblate (Chinese (Traditional Han script))

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/zh_Hant/

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: 秉虎 <s96016641@gmail.com>
Co-authored-by: 翁震軒 <benwater12@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: 秉虎 <s96016641@gmail.com>
Signed-off-by: 翁震軒 <benwater12@gmail.com>

* Updated translation for Hungarian

Language: hu

Updated translation for Hungarian

Language: hu

Updated translation for Hungarian

Language: hu

Updated translation for Hungarian

Language: hu

Updated translation for Hungarian

Language: hu

Updated translation for Hungarian

Language: hu

Updated translation for Hungarian

Language: hu

Updated translation for Hungarian

Language: hu

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Norbert Kelemen <nkelemen18@nkelemen.hu>
Co-authored-by: Vilmos Szabó-Nagy <me@vnagy.eu>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Norbert Kelemen <nkelemen18@nkelemen.hu>
Signed-off-by: Vilmos Szabó-Nagy <me@vnagy.eu>

---------

Signed-off-by: Arif EROL <arif.erol16@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Gustavo Bretas <gustavobretas@gmail.com>
Signed-off-by: Rafael Cunha <rafael.danicunha@gmail.com>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: André Schild <andre@schild.ws>
Signed-off-by: Hosted Weblate user 165770 <fstolte@users.noreply.hosted.weblate.org>
Signed-off-by: Eugene Pasternak <pasternake@gmail.com>
Signed-off-by: Ecron <ecron_89@hotmail.com>
Signed-off-by: Martin Kluska <martin@kluska.cz>
Signed-off-by: Peter Schiffer <peter@pschiffer.eu>
Signed-off-by: Daan Breur <daanbreur@gmail.com>
Signed-off-by: Jan Herrygers <jherrygers@vaa.com>
Signed-off-by: Herbert Solórzano <herbert.solorzano@gmail.com>
Signed-off-by: Dodouce <marin.pau22@gmail.com>
Signed-off-by: Lewis Bertin <lewis@tactiqual.tech>
Signed-off-by: Sylvain Pichon <service@spichon.fr>
Signed-off-by: Daniel Nylander <yeagersthlm@gmail.com>
Signed-off-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Signed-off-by: Naser Mirzaei <nasermirzaei89@gmail.com>
Signed-off-by: Soltinator <ali.soltani2000@hotmail.com>
Signed-off-by: 秉虎 <s96016641@gmail.com>
Signed-off-by: 翁震軒 <benwater12@gmail.com>
Signed-off-by: Norbert Kelemen <nkelemen18@nkelemen.hu>
Signed-off-by: Vilmos Szabó-Nagy <me@vnagy.eu>
Co-authored-by: Arif EROL <arif.erol16@gmail.com>
Co-authored-by: Gustavo Bretas <gustavobretas@gmail.com>
Co-authored-by: Rafael Cunha <rafael.danicunha@gmail.com>
Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: André Schild <andre@schild.ws>
Co-authored-by: Hosted Weblate user 165770 <fstolte@users.noreply.hosted.weblate.org>
Co-authored-by: Eugene Pasternak <pasternake@gmail.com>
Co-authored-by: Ecron <ecron_89@hotmail.com>
Co-authored-by: Martin Kluska <martin@kluska.cz>
Co-authored-by: Peter Schiffer <peter@pschiffer.eu>
Co-authored-by: Daan Breur <daanbreur@gmail.com>
Co-authored-by: Jan Herrygers <jherrygers@vaa.com>
Co-authored-by: Herbert Solórzano <herbert.solorzano@gmail.com>
Co-authored-by: Dodouce <marin.pau22@gmail.com>
Co-authored-by: Lewis Bertin <lewis@tactiqual.tech>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Daniel Nylander <yeagersthlm@gmail.com>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Co-authored-by: Naser Mirzaei <nasermirzaei89@gmail.com>
Co-authored-by: Soltinator <ali.soltani2000@hotmail.com>
Co-authored-by: 秉虎 <s96016641@gmail.com>
Co-authored-by: 翁震軒 <benwater12@gmail.com>
Co-authored-by: Norbert Kelemen <nkelemen18@nkelemen.hu>
Co-authored-by: Vilmos Szabó-Nagy <me@vnagy.eu>
2026-09-30 16:40:27 +02:00
Awambeng
6d2c039b9a [OID4VCI]: Add issuer_info support to OID4VCI metadata (#53330)
Closes #53293


Signed-off-by: Awambeng Rodrick <awambengrodrick@gmail.com>
2026-09-30 13:52:15 +02:00
wilmerdooley
dc1577c1dd fix(admin-ui): prevent attribute save crash when the key is an Object.prototype name (#50192)
Signed-off-by: wilmerdooley <wilmerdooley1@gmail.com>
2026-09-30 11:34:14 +00:00
Aloys Jehwin
a1a6c4493f Load quick theme login resources under the http-relative-path (#53228)
* Load quick theme login resources under the http-relative-path

The quick theme login preview and the theme download built the login
theme resource URLs from `/resources/...` at the server root, so with a
non-root http-relative-path the preview rendered unstyled and the
downloaded theme bundled a 404 page as its stylesheet.

Build both from the admin console's base URL, which includes the
relative path.

Closes #52913

Signed-off-by: Aloys Jehwin <aloysjehwin@gmail.com>
Claude-Session: https://claude.ai/code/session_01CFRv5kvesfnKYgHmNw9Vpf

* Skip the quick-theme preview test when the feature is disabled

The Quick theme tab only mounts when the server has the QUICK_THEME feature.
The E2E CI server does not enable it, so clicking the tab timed out. Gate the
test on the feature, mirroring the OID4VCI skip helper.

Signed-off-by: Aloys Jehwin <aloysjehwin@gmail.com>

---------

Signed-off-by: Aloys Jehwin <aloysjehwin@gmail.com>
2026-09-30 09:19:14 +02:00
Aloys Jehwin
87295b9ead Delete a realm by its name, not its display name, from Realm settings (#53227)
The Realm settings header received the resolved display name as
`realmName` and used it both as the page title and for the delete call,
so deleting a realm whose display name differs from its name sent
DELETE /admin/realms/{displayName} and failed with a 404.

Pass the display name separately for the title and keep the realm name
for the delete call.

Closes #51498


Claude-Session: https://claude.ai/code/session_01CFRv5kvesfnKYgHmNw9Vpf

Signed-off-by: Aloys Jehwin <aloysjehwin@gmail.com>
2026-09-29 15:47:08 +00:00
Tomas Kyjovsky
043590b649 Add an IdP config option to control IdP admin role escalation.
Signed-off-by: Tomas Kyjovsky <tkyjovsk@ibm.com>
2026-09-29 11:52:15 -03:00
mposolda
f1ba837d1a Deprecate client switch 'Use refresh tokens for client credentials grant'
closes #53170

Signed-off-by: mposolda <mposolda@gmail.com>
2026-09-29 14:30:55 +02:00
Stan Silvert
e2806c1182 Wait for IdP mapper save to leave the create page in E2E helper (#53262)
clickSaveMapper() checked for a /mappers(/:id) URL, which the add-mapper
page (/mappers/create) already matches. The helper then clicked Cancel
before react-hook-form had sent the create request, so the mapper was
never saved and the row assertion failed intermittently.

Fixes #53252


Assisted-by: Claude Opus 5.5

Signed-off-by: Stan Silvert <ssilvert@redhat.com>
2026-09-29 11:43:43 +02:00
Takashi Norimatsu
41bcb6cb87 Resource URL configuration for clients, including Admin UI support (#51339)
Closes #47123

Signed-off-by: Takashi Norimatsu <takashi.norimatsu.ws@hitachi.com>
2026-09-29 07:46:44 +02:00
Stan Silvert
69160c39a4 Use prefix search in the admin console user picker (#53222)
* Use prefix search in the admin console user picker

The shared UserSelect component searched with username=, which the LDAP
provider always turns into a contains filter with a leading wildcard
(cn=*term*). Directory servers cannot use an attribute index for that
filter, so on large LDAP/Active Directory realms the Evaluate tabs, user
policy and permission pickers took minutes or timed out, while the same
term on the Users page returned immediately.

Searching with search= gives the same prefix match the Users page uses,
for both LDAP and the database provider. Because that search also
matches email and first/last name, options now show those as a
description, and the help text explains the search syntax.

Fixes #53220

Signed-off-by: Stan Silvert <ssilvert@redhat.com>
Assisted-by: Claude Opus 5.5

* Test searching the user picker by email and last name

The existing picker tests select users by exact username, which the
picker's parallel exact-username lookup satisfies even if the paged
search query regresses. Search for a user whose username shares no
prefix with its email or name, so the test only passes when the picker
uses the search= prefix match.

Fixes #53220

Signed-off-by: Stan Silvert <ssilvert@redhat.com>
Assisted-by: Claude Opus 5.5

---------

Signed-off-by: Stan Silvert <ssilvert@redhat.com>
2026-09-28 16:55:23 +02:00
Oleksii Udovychenko
9f8eb2d238 Disable user federation enabled toggle for users without manage-realm
The enabled/disabled toggle in the user federation provider header was
always interactive, even for users with only view-realm access, while
the rest of the provider form is already gated behind manage-realm via
FormAccess. Gate the toggle with the same manage-realm check so it is
read-only for users who cannot manage the realm.

Closes #51269

Signed-off-by: Oleksii Udovychenko <1110375+oleksii-udovychenko@users.noreply.github.com>
2026-09-28 10:19:36 -03:00
Stefan Guilhen
6c5763ec9b Prevent LDAP bind credentials from being sent to a changed server (#51748)
* Prevent LDAP bind credentials from being sent to a changed server

- this change adds validation on both the save and test paths to reject requests where the URL or Bind DN changed while the credential is still the placeholder
- the admin UI now also clears the credential field when either value changes, prompting re-entry

Closes #47295
Closes #51146

Signed-off-by: Stefan Guilhen <sguilhen@redhat.com>

* Ensure URL change is rejected when bind credential is omitted (placeholder sent)

Signed-off-by: Stefan Guilhen <sguilhen@redhat.com>

* Ensure authType change to NONE can't be used to bypass URL change validation

Signed-off-by: Stefan Guilhen <sguilhen@redhat.com>

---------

Signed-off-by: Stefan Guilhen <sguilhen@redhat.com>
2026-09-28 14:54:24 +02:00