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( {hasOnePermission(
webSocketContext.User.Permissions, 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.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 />} />} ) && <Route path="/admin-area/roles" element={<AdminAreaRoles />} />}
{hasPermission( {hasPermission(

View File

@ -85,9 +85,10 @@ export default function SideMenu({ userSession, setUserSession }) {
if ( if (
hasOnePermission( hasOnePermission(
webSocketContext.User.Permissions, 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.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,
Constants.PERMISSIONS.ADMIN_AREA.LOGS Constants.PERMISSIONS.ADMIN_AREA.LOGS
) )
) { ) {
@ -101,9 +102,10 @@ export default function SideMenu({ userSession, setUserSession }) {
if ( if (
hasOnePermission( hasOnePermission(
webSocketContext.User.Permissions, 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.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({ adminArea.children.push({

View File

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

View File

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