permission handling

main
alex 2023-06-24 20:22:41 +02:00
parent 92bc08e511
commit 7300a0e107
4 changed files with 94 additions and 67 deletions

View File

@ -52,9 +52,10 @@ export default function AppRoutes() {
{hasOnePermission(
webSocketContext.User.Permissions,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.ADD_ROLE,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.CREATE_NEW_ROLE,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.UPDATE_ROLE,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.DELETE_ROLE
Constants.PERMISSIONS.ADMIN_AREA.ROLES.DELETE_ROLE,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.MOVE_ROLE_UP_DOWN
) && <Route path="/admin-area/roles" element={<AdminAreaRoles />} />}
{hasPermission(

View File

@ -85,9 +85,10 @@ export default function SideMenu({ userSession, setUserSession }) {
if (
hasOnePermission(
webSocketContext.User.Permissions,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.ADD_ROLE,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.CREATE_NEW_ROLE,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.UPDATE_ROLE,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.DELETE_ROLE,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.MOVE_ROLE_UP_DOWN,
Constants.PERMISSIONS.ADMIN_AREA.LOGS
)
) {
@ -101,9 +102,10 @@ export default function SideMenu({ userSession, setUserSession }) {
if (
hasOnePermission(
webSocketContext.User.Permissions,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.ADD_ROLE,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.CREATE_NEW_ROLE,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.UPDATE_ROLE,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.DELETE_ROLE
Constants.PERMISSIONS.ADMIN_AREA.ROLES.DELETE_ROLE,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.MOVE_ROLE_UP_DOWN
)
) {
adminArea.children.push({

View File

@ -15,6 +15,7 @@ import {
MyAvatar,
SentMessagesCommands,
WebSocketContext,
hasPermission,
} from "../../../utils";
import {
ArrowDownOutlined,
@ -120,23 +121,28 @@ export default function AdminAreaRoles() {
/>
))}
<div
style={{
display: "flex",
justifyContent: "center",
}}
>
<Popconfirm
placement="top"
okText="Create"
title="Are you sure you want to create a new role?"
onConfirm={() => onCreateNewRoleClick()}
{hasPermission(
webSocketContext.User.Permissions,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.CREATE_NEW_ROLE
) && (
<div
style={{
display: "flex",
justifyContent: "center",
}}
>
<Button shape="round" icon={<PlusOutlined />} size="large">
Create new role
</Button>
</Popconfirm>
</div>
<Popconfirm
placement="top"
okText="Create"
title="Are you sure you want to create a new role?"
onConfirm={() => onCreateNewRoleClick()}
>
<Button shape="round" icon={<PlusOutlined />} size="large">
Create new role
</Button>
</Popconfirm>
</div>
)}
</Space>
);
}
@ -361,54 +367,71 @@ function Role({ treeData, role, webSocketContext, notificationApi }) {
key: "2",
extra: editMode ? (
<Space key="spaceedit" style={{ paddingLeft: 10 }} size="small">
{role.Master || getUsersInRole().length > 0 ? (
<DeleteOutlined
style={{
color: "rgba(0, 0, 0, 0.25)",
cursor: "not-allowed",
}}
/>
) : (
<Popconfirm
title="Delete role"
description="Are you sure to delete this role?"
icon={<QuestionCircleOutlined style={{ color: "red" }} />}
onConfirm={() => onDeleteClick()}
>
<Tooltip title="Delete">
<DeleteOutlined />
</Tooltip>
</Popconfirm>
)}
{hasPermission(
webSocketContext.User.Permissions,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.DELETE_ROLE
) ? (
role.Master || getUsersInRole().length > 0 ? (
<DeleteOutlined
style={{
color: "rgba(0, 0, 0, 0.25)",
cursor: "not-allowed",
}}
/>
) : (
<Popconfirm
title="Delete role"
description="Are you sure to delete this role?"
icon={<QuestionCircleOutlined style={{ color: "red" }} />}
onConfirm={() => onDeleteClick()}
>
<Tooltip title="Delete">
<DeleteOutlined />
</Tooltip>
</Popconfirm>
)
) : null}
{role.SortingOrder === 0 ? (
<ArrowUpOutlined
style={{
color: "rgba(0, 0, 0, 0.25)",
cursor: "not-allowed",
}}
/>
) : (
<Tooltip title="Move role up">
<ArrowUpOutlined onClick={() => onMoveUpClick()} />
{hasPermission(
webSocketContext.User.Permissions,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.MOVE_ROLE_UP_DOWN
) ? (
<>
{role.SortingOrder === 0 ? (
<ArrowUpOutlined
style={{
color: "rgba(0, 0, 0, 0.25)",
cursor: "not-allowed",
}}
/>
) : (
<Tooltip title="Move role up">
<ArrowUpOutlined onClick={() => onMoveUpClick()} />
</Tooltip>
)}
{role.SortingOrder === getMaxRoleSortingOrder() ? (
<ArrowDownOutlined
style={{
color: "rgba(0, 0, 0, 0.25)",
cursor: "not-allowed",
}}
/>
) : (
<Tooltip title="Move role down">
<ArrowDownOutlined onClick={() => onMoveDownClick()} />
</Tooltip>
)}
</>
) : null}
{hasPermission(
webSocketContext.User.Permissions,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.UPDATE_ROLE
) && (
<Tooltip title="Save">
<SaveOutlined onClick={() => onSaveClick()} />
</Tooltip>
)}
{role.SortingOrder === getMaxRoleSortingOrder() ? (
<ArrowDownOutlined
style={{
color: "rgba(0, 0, 0, 0.25)",
cursor: "not-allowed",
}}
/>
) : (
<Tooltip title="Move role down">
<ArrowDownOutlined onClick={() => onMoveDownClick()} />
</Tooltip>
)}
<Tooltip title="Save">
<SaveOutlined onClick={() => onSaveClick()} />
</Tooltip>
<Tooltip title="Close">
<CloseOutlined onClick={() => onCloseClick()} />
</Tooltip>

View File

@ -59,9 +59,10 @@ export const Constants = {
},
ADMIN_AREA: {
ROLES: {
ADD_ROLE: "admin_area.roles.add_role",
CREATE_NEW_ROLE: "admin_area.roles.create_new_role",
UPDATE_ROLE: "admin_area.roles.update_role",
DELETE_ROLE: "admin_area.roles.delete_role",
MOVE_ROLE_UP_DOWN: "admin_area.roles.move_role_up_down",
},
LOGS: "admin_area.logs",
},