diff --git a/CHANGELOG.md b/CHANGELOG.md index 21b65b78..5c99ce43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ * useUserTenantPermissions hook - provide `isFetched` property. Refs STCOR-890. * Reword error message "Error: server is forbidden, unreachable or down. VPN issue?". Refs STCOR-893. * Move session timeout banner to the bottom of the page. Refs STCOR-883. +* Conditionally use `/users-keycloak/_self` endpoint when `roles` interface is present. Refs STCOR-835. ## [10.1.1](https://github.com/folio-org/stripes-core/tree/v10.1.1) (2024-03-25) diff --git a/src/queries/getUserTenantsPermissions.js b/src/queries/getUserTenantsPermissions.js index 6afe466a..7e2ac2f2 100644 --- a/src/queries/getUserTenantsPermissions.js +++ b/src/queries/getUserTenantsPermissions.js @@ -16,8 +16,12 @@ const getUserTenantsPermissions = async (stripes, tenants = []) => { } = stripes; const userTenantIds = tenants.map(tenant => tenant.id || tenant); + const permUrl = stripes.hasInterface('roles') ? + `${url}/users-keycloak/_self?expandPermissions=true&fullPermissions=true` : + `${url}/perms/users/${id}/permissions?full=true&indexField=userId`; + const promises = userTenantIds.map(async (tenantId) => { - const result = await fetch(`${url}/perms/users/${id}/permissions?full=true&indexField=userId`, { + const result = await fetch(permUrl, { headers: { 'X-Okapi-Tenant': tenantId, 'Content-Type': 'application/json', diff --git a/src/queries/getUserTenantsPermissions.test.js b/src/queries/getUserTenantsPermissions.test.js index d9ae848b..bd53ee4e 100644 --- a/src/queries/getUserTenantsPermissions.test.js +++ b/src/queries/getUserTenantsPermissions.test.js @@ -18,6 +18,7 @@ describe('getUserTenantsPermissions', () => { url: 'http://okapiUrl', token: 'elevensies', }, + hasInterface: jest.fn(), }; mockFetch.mockResolvedValueOnce('non-okapi-success'); @@ -38,6 +39,7 @@ describe('getUserTenantsPermissions', () => { okapi: { url: 'http://okapiUrl', }, + hasInterface: jest.fn(), }; mockFetch.mockResolvedValueOnce('non-okapi-success'); @@ -54,6 +56,7 @@ describe('getUserTenantsPermissions', () => { okapi: { url: 'http://okapiUrl', }, + hasInterface: jest.fn(), }; const t1 = { p: ['t1-p1', 't1-p2'] };