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( {hasPermission(
webSocketContext.User.Permissions, webSocketContext.User.Permissions,
Constants.PERMISSIONS.ALL_USERS.ACTION.CHANGE_ROLE Constants.PERMISSIONS.ALL_USERS.ACTION.CHANGE_ROLE
) && ( ) &&
<Popconfirm (webSocketContext.AllRoles.find(
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(
(role) => role.Id === webSocketContext.User.RoleId (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( return null;
(role) => role.Id === record._roleId })}
).SortingOrder </Select>
)} }
>
<Link
to="#"
onClick={() => {
setSelectedRoleId(
webSocketContext.AllUsers.find(
(user) => user.Id === record.key
).RoleId
);
}}
>
Change role
</Link>
</Popconfirm>
)}
{hasPermission( {hasPermission(
webSocketContext.User.Permissions, webSocketContext.User.Permissions,
Constants.PERMISSIONS.ALL_USERS.ACTION.DELETE_USER Constants.PERMISSIONS.ALL_USERS.ACTION.DELETE_USER
) && ) &&
webSocketContext.AllRoles.find( (webSocketContext.AllRoles.find(
(role) => role.Id === webSocketContext.User.RoleId (role) => role.Id === webSocketContext.User.RoleId
).SortingOrder < ).SortingOrder <
webSocketContext.AllRoles.find( webSocketContext.AllRoles.find(
(role) => role.Id === record._roleId (role) => role.Id === record._roleId
).SortingOrder && ( ).SortingOrder ||
webSocketContext.AllRoles.find(
(role) => role.Id === webSocketContext.User.RoleId
).Master) && (
<Popconfirm <Popconfirm
placement="top" placement="top"
okText="Delete user" okText="Delete user"