user can only change roles and delete users with roles below his role

main
alex 2023-06-25 16:15:29 +02:00
parent ce692dc5a0
commit 8b6f59b0f0
1 changed files with 71 additions and 57 deletions

View File

@ -73,74 +73,88 @@ export default function AllUsers() {
{hasPermission(
webSocketContext.User.Permissions,
Constants.PERMISSIONS.ALL_USERS.ACTION.CHANGE_ROLE
) && (
<Popconfirm
title="Change role to"
okText="Change"
onConfirm={() => onRoleChangeConfirm(record.key)}
okButtonProps={{
disabled:
selectedRoleId ===
webSocketContext.AllUsers.find(
(user) => user.Id === record.key
).RoleId,
}}
description={
<Select
style={{ width: 250 }}
getPopupContainer={(node) => node.parentNode}
defaultValue={
webSocketContext.AllUsers.find(
(user) => user.Id === record.key
).RoleId
}
value={selectedRoleId}
onChange={(e) => setSelectedRoleId(e)}
>
{webSocketContext.AllRoles.map((role) => (
<Select.Option key={role.Id}>
{role.DisplayName}
</Select.Option>
))}
</Select>
}
>
<Link
to="#"
onClick={() => {
setSelectedRoleId(
webSocketContext.AllUsers.find(
(user) => user.Id === record.key
).RoleId
);
}}
>
Change role
</Link>
</Popconfirm>
)}
{console.log(
webSocketContext.User.RoleId,
webSocketContext.AllRoles.find(
) &&
(webSocketContext.AllRoles.find(
(role) => role.Id === webSocketContext.User.RoleId
).SortingOrder,
).SortingOrder <
webSocketContext.AllRoles.find(
(role) => role.Id === record._roleId
).SortingOrder ||
webSocketContext.AllRoles.find(
(role) => role.Id === webSocketContext.User.RoleId
).Master) && (
<Popconfirm
title="Change role to"
okText="Change"
onConfirm={() => onRoleChangeConfirm(record.key)}
okButtonProps={{
disabled:
selectedRoleId ===
webSocketContext.AllUsers.find(
(user) => user.Id === record.key
).RoleId,
}}
description={
<Select
style={{ width: 250 }}
getPopupContainer={(node) => node.parentNode}
defaultValue={
webSocketContext.AllUsers.find(
(user) => user.Id === record.key
).RoleId
}
value={selectedRoleId}
onChange={(e) => setSelectedRoleId(e)}
>
{webSocketContext.AllRoles.map((role) => {
if (
webSocketContext.AllRoles.find(
(role) => role.Id === webSocketContext.User.RoleId
).Master ||
webSocketContext.AllRoles.find(
(role) => role.Id === webSocketContext.User.RoleId
).SortingOrder < role.SortingOrder
) {
return (
<Select.Option key={role.Id}>
{role.DisplayName}
</Select.Option>
);
}
webSocketContext.AllRoles.find(
(role) => role.Id === record._roleId
).SortingOrder
)}
return null;
})}
</Select>
}
>
<Link
to="#"
onClick={() => {
setSelectedRoleId(
webSocketContext.AllUsers.find(
(user) => user.Id === record.key
).RoleId
);
}}
>
Change role
</Link>
</Popconfirm>
)}
{hasPermission(
webSocketContext.User.Permissions,
Constants.PERMISSIONS.ALL_USERS.ACTION.DELETE_USER
) &&
webSocketContext.AllRoles.find(
(webSocketContext.AllRoles.find(
(role) => role.Id === webSocketContext.User.RoleId
).SortingOrder <
webSocketContext.AllRoles.find(
(role) => role.Id === record._roleId
).SortingOrder && (
).SortingOrder ||
webSocketContext.AllRoles.find(
(role) => role.Id === webSocketContext.User.RoleId
).Master) && (
<Popconfirm
placement="top"
okText="Delete user"