diff --git a/src/components/EditSections/EditUserRoles/EditUserRoles.js b/src/components/EditSections/EditUserRoles/EditUserRoles.js
index 328709883..b3dc34284 100644
--- a/src/components/EditSections/EditUserRoles/EditUserRoles.js
+++ b/src/components/EditSections/EditUserRoles/EditUserRoles.js
@@ -36,7 +36,7 @@ function EditUserRoles({ accordionId, form:{ change }, user, setAssignedRoleIds,
} else {
refetch();
}
- }, [affiliations, stripes.okapi.tenant, tenantId]);
+ }, [affiliations, stripes.okapi.tenant, setTenantId, tenantId, refetch]);
const changeUserRoles = (roleIds) => {
change(`assignedRoleIds[${tenantId}]`, roleIds);
@@ -50,12 +50,12 @@ function EditUserRoles({ accordionId, form:{ change }, user, setAssignedRoleIds,
const listItemsData = useMemo(() => {
if (isEmpty(assignedRoleIds[tenantId]) || isAllRolesDataLoading) return [];
- return assignedRoleIds[tenantId].map(i => {
- const foundUserRole = allRolesMapStructure.get(i.roleId);
+ return assignedRoleIds[tenantId].map(roleId => {
+ const foundUserRole = allRolesMapStructure.get(roleId);
return { name: foundUserRole?.name, id: foundUserRole?.id };
});
- }, [assignedRoleIds, isAllRolesDataLoading, allRolesMapStructure]);
+ }, [assignedRoleIds, isAllRolesDataLoading, allRolesMapStructure, tenantId]);
const unassignAllMessage = ;
const renderRoleComponent = (fields) => (_, index) => {
- const tenantValue = fields.value[tenantId];
+ const tenantValue = fields.value;
if (isEmpty(tenantValue)) return null;
const roleId = tenantValue[index];
@@ -106,7 +106,7 @@ function EditUserRoles({ accordionId, form:{ change }, user, setAssignedRoleIds,
return (
@@ -173,8 +173,11 @@ EditUserRoles.propTypes = {
match: PropTypes.shape({ params: { id: PropTypes.string } }),
accordionId: PropTypes.string,
form: PropTypes.object.isRequired,
+ user: PropTypes.object.isRequired,
assignedRoleIds: PropTypes.object.isRequired,
setAssignedRoleIds: PropTypes.func.isRequired,
+ tenantId: PropTypes.string.isRequired,
+ setTenantId: PropTypes.func.isRequired
};
export default withRouter(EditUserRoles);
diff --git a/src/components/EditSections/EditUserRoles/components/UserRolesList/UserRolesList.js b/src/components/EditSections/EditUserRoles/components/UserRolesList/UserRolesList.js
index 1efd1192b..f0155efbe 100644
--- a/src/components/EditSections/EditUserRoles/components/UserRolesList/UserRolesList.js
+++ b/src/components/EditSections/EditUserRoles/components/UserRolesList/UserRolesList.js
@@ -82,6 +82,7 @@ UserRolesList.propTypes = {
).isRequired,
toggleRole: PropTypes.func.isRequired,
toggleAllRoles: PropTypes.func.isRequired,
+ tenantId: PropTypes.string.isRequired
};
export default UserRolesList;
diff --git a/src/components/EditSections/EditUserRoles/components/UserRolesModal/UserRolesModal.js b/src/components/EditSections/EditUserRoles/components/UserRolesModal/UserRolesModal.js
index 48a6d57b9..d64ebef2c 100644
--- a/src/components/EditSections/EditUserRoles/components/UserRolesModal/UserRolesModal.js
+++ b/src/components/EditSections/EditUserRoles/components/UserRolesModal/UserRolesModal.js
@@ -47,18 +47,17 @@ export default function UserRolesModal({ isOpen,
const toggleRole = (id) => {
if (assignedRoleIds[tenantId]?.includes(id)) {
- setAssignedRoleIds({...assignedRoleIds, [tenantId]: assignedRoleIds[tenantId].filter(role => role !== id)});
+ setAssignedRoleIds({ ...assignedRoleIds, [tenantId]: assignedRoleIds[tenantId].filter(role => role !== id) });
} else {
- setAssignedRoleIds({...assignedRoleIds, [tenantId]: assignedRoleIds[tenantId].concat(id)});
+ setAssignedRoleIds({ ...assignedRoleIds, [tenantId]: assignedRoleIds[tenantId].concat(id) });
}
};
const toggleAllRoles = (checked) => {
if (checked) {
- setAssignedRoleIds({...assignedRoleIds, [tenantId]: allRolesData?.roles.map(role => role.id)});
- }
- else {
- setAssignedRoleIds({...assignedRoleIds, [tenantId]: []});
+ setAssignedRoleIds({ ...assignedRoleIds, [tenantId]: allRolesData?.roles.map(role => role.id) });
+ } else {
+ setAssignedRoleIds({ ...assignedRoleIds, [tenantId]: [] });
}
};
@@ -188,4 +187,5 @@ UserRolesModal.propTypes = {
onClose: PropTypes.func.isRequired,
initialRoleIds: PropTypes.object,
changeUserRoles: PropTypes.func.isRequired,
+ tenantId: PropTypes.string.isRequired,
};
diff --git a/src/components/Wrappers/withUserRoles.js b/src/components/Wrappers/withUserRoles.js
index 9d09ad48b..81c74e231 100644
--- a/src/components/Wrappers/withUserRoles.js
+++ b/src/components/Wrappers/withUserRoles.js
@@ -1,5 +1,5 @@
import React, { useCallback, useEffect, useState } from 'react';
-//import { groupBy, keyBy, keys, merge, union, values } from 'lodash';
+// import { groupBy, keyBy, keys, merge, union, values } from 'lodash';
import { useStripes, useOkapiKy, useCallout } from '@folio/stripes/core';
import isEqual from 'lodash/isEqual';
@@ -43,8 +43,8 @@ const withUserRoles = (WrappedComponent) => (props) => {
}).sort((a, b) => a.name.localeCompare(b.name)).map(r => r.id);
setTenantsLoaded(tenantsLoaded.concat(tenantId));
- setAssignedRoleIds({...assignedRoleIds, [tenantId]: assignedRoles});
- setInitialAssignedRoleIds({...assignedRoleIds, [tenantId]: assignedRoles});
+ setAssignedRoleIds({ ...assignedRoleIds, [tenantId]: assignedRoles });
+ setInitialAssignedRoleIds({ ...assignedRoleIds, [tenantId]: assignedRoles });
}, [allRolesMapStructure]);
useEffect(() => {
@@ -64,15 +64,17 @@ const withUserRoles = (WrappedComponent) => (props) => {
[userId, isAllRolesDataLoading, setAssignedRoleIdsOnLoad, tenantId]);
const updateUserRoles = (roleIds) => {
- Object.keys(roleIds).forEach(async (tenantIdKey) => {
- await api.put(
+ Object.keys(roleIds).forEach((tenantIdKey) => {
+ // Using ky so we can override tenant header
+ ky.put(
`roles/users/${userId}`, { json: {
userId,
roleIds: roleIds[tenantIdKey],
- }, headers: { 'X-Okapi-Tenant': tenantIdKey } },
+ },
+ headers: { 'X-Okapi-Tenant': tenantIdKey } },
).json()
// eslint-disable-next-line no-console
- .catch(sendErrorCallout);
+ .catch(sendErrorCallout);
});
};
diff --git a/src/views/UserEdit/UserEdit.js b/src/views/UserEdit/UserEdit.js
index 9187fa888..a6818a9ab 100644
--- a/src/views/UserEdit/UserEdit.js
+++ b/src/views/UserEdit/UserEdit.js
@@ -10,7 +10,7 @@ import {
find,
omit,
get,
- compact,
+ compact
} from 'lodash';
import { LoadingView } from '@folio/stripes/components';
@@ -54,6 +54,8 @@ class UserEdit extends React.Component {
*/
assignedRoleIds: PropTypes.object,
setAssignedRoleIds: PropTypes.func,
+ tenantId: PropTypes.string,
+ setTenantId: PropTypes.func,
isCreateKeycloakUserConfirmationOpen: PropTypes.bool,
initialAssignedRoleIds: PropTypes.arrayOf(PropTypes.string),
checkAndHandleKeycloakAuthUser: PropTypes.func,
diff --git a/src/views/UserEdit/UserForm.js b/src/views/UserEdit/UserForm.js
index 2c191747d..46762a39e 100644
--- a/src/views/UserEdit/UserForm.js
+++ b/src/views/UserEdit/UserForm.js
@@ -26,6 +26,7 @@ import {
import { EditCustomFieldsRecord } from '@folio/stripes/smart-components';
import stripesFinalForm from '@folio/stripes/final-form';
+import { set } from 'lodash';
import { USER_TYPES } from '../../constants';
import {
EditUserInfo,
@@ -110,7 +111,9 @@ class UserForm extends React.Component {
onCancelKeycloakConfirmation: PropTypes.func,
confirmCreateKeycloakUser: PropTypes.func,
setAssignedRoleIds: PropTypes.func,
- assignedRoleIds: PropTypes.object
+ assignedRoleIds: PropTypes.object,
+ setTenantId: PropTypes.func,
+ tenantId: PropTypes.string
};
static defaultProps = {