diff --git a/CHANGELOG.md b/CHANGELOG.md index 02e0ea9b9..784efe753 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,9 +34,9 @@ * 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 `users-keycloak` interface is present. Refs STCOR-835. * Wait longer before declaring a rotation request to be stale. Refs STCOR-895. - ## [10.1.1](https://github.com/folio-org/stripes-core/tree/v10.1.1) (2024-03-25) [Full Changelog](https://github.com/folio-org/stripes-core/compare/v10.1.0...v10.1.1) diff --git a/src/queries/getUserTenantsPermissions.js b/src/queries/getUserTenantsPermissions.js index 6afe466a9..0fbaf201c 100644 --- a/src/queries/getUserTenantsPermissions.js +++ b/src/queries/getUserTenantsPermissions.js @@ -8,7 +8,6 @@ */ const getUserTenantsPermissions = async (stripes, tenants = []) => { const { - user: { user: { id } }, okapi: { url, token, @@ -16,8 +15,11 @@ const getUserTenantsPermissions = async (stripes, tenants = []) => { } = stripes; const userTenantIds = tenants.map(tenant => tenant.id || tenant); + const permPath = stripes.hasInterface('users-keycloak') ? 'users-keycloak' : 'bl-users'; + const permUrl = `${url}/${permPath}/_self?expandPermissions=true`; + 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', @@ -28,7 +30,7 @@ const getUserTenantsPermissions = async (stripes, tenants = []) => { const json = await result.json(); - return { tenantId, ...json }; + return { tenantId, permissionNames: json?.permissions?.permissions, ...json }; }); const userTenantsPermissions = await Promise.allSettled(promises); diff --git a/src/queries/getUserTenantsPermissions.test.js b/src/queries/getUserTenantsPermissions.test.js index d9ae848be..bd53ee4ea 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'] };