The Authorization Resources table was incorrectly duplicating the last
element of the current page as the first element of the next page.
This occurred because the fetching logic requests 'max + 1' items to
detect if a subsequent page exists. However, the UI was rendering the
entire array instead of limiting the display to the 'max' value.
Fixed by applying a .slice(0, max) before mapping the resources to
table rows. Added a Playwright E2E regression test to ensure unique
resource distribution across pages and prevent future regressions.
Closes#46088
---------
Signed-off-by: André Rocha <andre.queiroz.rocha@tecnico.ulisboa.pt>
Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
Co-authored-by: Alexander Schwartz <alexander.schwartz@ibm.com>
* refactor(admin-ui): replace use-react-router-breadcrumbs with React Router native useMatches
Replace the third-party `use-react-router-breadcrumbs` package with
React Router v6's built-in `useMatches()` hook for breadcrumb rendering.
Since the Admin UI already uses `createHashRouter` (data router API),
`useMatches()` is available and provides access to route `handle` data
at each matched route level.
Changes:
- Move `breadcrumb` property from route objects into `handle` across
all 89 route definitions, making it accessible via `useMatches()`
- Update `AppRouteObjectHandle` type to include the optional
`breadcrumb` property
- Remove `breadcrumb` from `AppRouteObject` interface (no longer a
top-level route property)
- Rewrite `PageBreadCrumbs` component to use `useMatches()` instead
of `useBreadcrumbs()` from the third-party library
- Remove `use-react-router-breadcrumbs` dependency from package.json
- Update pnpm-lock.yaml
Closes#19309
Signed-off-by: Pierluigi Lenoci <pierluigi.lenoci@gmail.com>
Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
Co-authored-by: Alexander Schwartz <alexander.schwartz@ibm.com>
The console.log statement in the workflow delete test was left from debugging and should not be present in test code.
Closes#47958
Signed-off-by: chon3806 <93464148+chon3806@users.noreply.github.com>
Closes#47951
Register the Vietnamese locale across all theme types (login, account, admin, email) and add initial message bundles seeded from English sources. Vietnamese translations will follow via Weblate.
Signed-off-by: thangnm11 <thang.991992@gmail.com>
Co-authored-by: ThangNM <thangnm@hotmail.com>
Remove all explicit `: any` annotations from catch clauses in the
Admin UI. Since TypeScript's `strict` mode (with
`useUnknownInCatchVariables`) already types catch variables as
`unknown`, the explicit `: any` annotations were unnecessarily
bypassing type safety.
For catch blocks that only pass the error to `addError()` (which
accepts `unknown`), the fix is simply removing the `: any` annotation.
For two catch blocks that performed unsafe property access on the
error (`error.response?.data?.errorMessage`), the fix replaces:
- `CreateFlow.tsx`: use `addError()` instead of manual message
extraction (consistent with the rest of the codebase)
- `ClientScopesSection.tsx`: use `getErrorMessage()` from
`@keycloak/keycloak-ui-shared` for type-safe error formatting
Closes#17771
Signed-off-by: Pierluigi Lenoci <pierluigi.lenoci@gmail.com>
Closes#47274
Signed-off-by: Asish Kumar <officialasishkumar@gmail.com>
Signed-off-by: Marek Posolda <mposolda@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Marek Posolda <mposolda@gmail.com>
* Updated translation for Turkish
Language: tr
Updated translation for Turkish
Language: tr
Updated translation for Turkish
Language: tr
Co-authored-by: Arif EROL <arif.erol16@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: spctr <spctr@users.noreply.github.com>
Signed-off-by: Arif EROL <arif.erol16@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: spctr <spctr@users.noreply.github.com>
* Translated using Weblate (German)
Currently translated at 100.0% (1 of 1 strings)
Translated using Weblate (German)
Currently translated at 100.0% (1 of 1 strings)
Added translation using Weblate (German)
Translated using Weblate (German)
Currently translated at 100.0% (1 of 1 strings)
Added translation using Weblate (German)
Translated using Weblate (German)
Currently translated at 100.0% (1 of 1 strings)
Added translation using Weblate (German)
Translated using Weblate (German)
Currently translated at 100.0% (1 of 1 strings)
Updated translation for German
Language: de
Updated translation for German
Language: de
Added translation using Weblate (German)
Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Robin <39960884+robson90@users.noreply.github.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Robin <39960884+robson90@users.noreply.github.com>
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-e-mail-theme/de/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-login-theme/de/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-v2-login-theme/de/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-welcome-theme/de/
Translation: Keycloak/Keycloak E-mail theme
Translation: Keycloak/Keycloak Login theme
Translation: Keycloak/Keycloak Welcome theme
Translation: Keycloak/Keycloak v2 Login theme
* Updated translation for Czech
Language: 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: 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: Peter Schiffer <peter@pschiffer.eu>
* Translated using Weblate (Indonesian)
Currently translated at 100.0% (1 of 1 strings)
Added translation using Weblate (Indonesian)
Translated using Weblate (Indonesian)
Currently translated at 100.0% (1 of 1 strings)
Added translation using Weblate (Indonesian)
Updated translation for Indonesian
Language: id
Translated using Weblate (Indonesian)
Currently translated at 100.0% (1 of 1 strings)
Translated using Weblate (Indonesian)
Currently translated at 100.0% (1 of 1 strings)
Updated translation for Indonesian
Language: id
Added translation using Weblate (Indonesian)
Added translation using Weblate (Indonesian)
Co-authored-by: Andika Triwidada <andika@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Andika Triwidada <andika@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-e-mail-theme/id/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-login-theme/id/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-v2-login-theme/id/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-welcome-theme/id/
Translation: Keycloak/Keycloak E-mail theme
Translation: Keycloak/Keycloak Login theme
Translation: Keycloak/Keycloak Welcome theme
Translation: Keycloak/Keycloak v2 Login theme
* Updated translation for Dutch
Language: nl
Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
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
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Sylvain Pichon <service@spichon.fr>
* Updated translation for Swedish
Language: sv
Translated using Weblate (Swedish)
Currently translated at 100.0% (1 of 1 strings)
Updated translation for Swedish
Language: sv
Translated using Weblate (Swedish)
Currently translated at 100.0% (1 of 1 strings)
Added translation using Weblate (Swedish)
Translated using Weblate (Swedish)
Currently translated at 100.0% (1 of 1 strings)
Added translation using Weblate (Swedish)
Translated using Weblate (Swedish)
Currently translated at 100.0% (1 of 1 strings)
Added translation using Weblate (Swedish)
Translated using Weblate (Swedish)
Currently translated at 100.0% (1 of 1 strings)
Added translation using Weblate (Swedish)
Updated translation for Swedish
Language: sv
Updated translation for Swedish
Language: sv
Updated translation for Swedish
Language: sv
Updated translation for Swedish
Language: sv
Co-authored-by: Daniel Nylander <daniel@danielnylander.se>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Signed-off-by: Daniel Nylander <daniel@danielnylander.se>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-e-mail-theme/sv/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-login-theme/sv/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-v2-login-theme/sv/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-welcome-theme/sv/
Translation: Keycloak/Keycloak E-mail theme
Translation: Keycloak/Keycloak Login theme
Translation: Keycloak/Keycloak Welcome theme
Translation: Keycloak/Keycloak v2 Login theme
---------
Signed-off-by: Arif EROL <arif.erol16@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: spctr <spctr@users.noreply.github.com>
Signed-off-by: Robin <39960884+robson90@users.noreply.github.com>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Peter Schiffer <peter@pschiffer.eu>
Signed-off-by: Andika Triwidada <andika@gmail.com>
Signed-off-by: Sylvain Pichon <service@spichon.fr>
Signed-off-by: Daniel Nylander <daniel@danielnylander.se>
Signed-off-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Co-authored-by: Arif EROL <arif.erol16@gmail.com>
Co-authored-by: spctr <spctr@users.noreply.github.com>
Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Robin <39960884+robson90@users.noreply.github.com>
Co-authored-by: Peter Schiffer <peter@pschiffer.eu>
Co-authored-by: Andika Triwidada <andika@gmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Daniel Nylander <daniel@danielnylander.se>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Closes#47038
Signed-off-by: Benjamin DeWeese <bdeweesevans@gmail.com>
Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
Co-authored-by: Alexander Schwartz <alexander.schwartz@ibm.com>
When the last item on a paginated table is deleted, the UI
incorrectly displayed 'No resources found' instead of navigating
back to the previous page. This commit resolves the local state
issue and adds a Playwright E2E regression test to ensure the
table correctly refetches and displays the remaining resources.
Refactored E2E test:
- Replaced while(true) loop with a deterministic for loop;
- Implemented exact string matching and test id locators;
- Added resource cleanup to prevent polluting subsequent tests;
- Added deleteResource in AdminClient.ts to assist in the cleanup.
Closes#46089
Signed-off-by: João Viegas <joao.manuel.loja.viegas@tecnico.ulisboa.pt>
* Updated translation for German
Language: de
Updated translation for German
Language: 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: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
* Updated translation for Russian
Language: ru
Updated translation for Russian
Language: ru
Co-authored-by: Anton Petrov <petrov9810@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Anton Petrov <petrov9810@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
* Updated translation for Spanish
Language: es
Updated translation for Spanish
Language: es
Updated translation for Spanish
Language: es
Co-authored-by: Ariel Anthieni <aanthieni@kan.com.ar>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Ariel Anthieni <aanthieni@kan.com.ar>
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
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: 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: Sylvain Pichon <service@spichon.fr>
* Updated translation for Swedish
Language: sv
Updated translation for Swedish
Language: sv
Co-authored-by: Daniel Nylander <daniel@danielnylander.se>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Daniel Nylander <daniel@danielnylander.se>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
---------
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Anton Petrov <petrov9810@gmail.com>
Signed-off-by: Ariel Anthieni <aanthieni@kan.com.ar>
Signed-off-by: Sylvain Pichon <service@spichon.fr>
Signed-off-by: Daniel Nylander <daniel@danielnylander.se>
Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Anton Petrov <petrov9810@gmail.com>
Co-authored-by: Ariel Anthieni <aanthieni@kan.com.ar>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Daniel Nylander <daniel@danielnylander.se>
Closes#46164
Signed-off-by: Peter Skopek <peter.skopek@ibm.com>
Update model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/changes/remote/updater/loginfailures/LoginFailuresUpdater.java
Co-authored-by: Pedro Ruivo <pruivo@users.noreply.github.com>
Signed-off-by: Peter Skopek <peter.skopek@ibm.com>
Add recovery codes to the list of brute force checked authenticators.
Closes#46164
Signed-off-by: Peter Skopek <peter.skopek@ibm.com>