diff --git a/web/src/containers/Settings/addPermissionModal.tsx b/web/src/containers/Settings/addPermissionModal.tsx index e2f44d2..f1d7ffa 100644 --- a/web/src/containers/Settings/addPermissionModal.tsx +++ b/web/src/containers/Settings/addPermissionModal.tsx @@ -32,7 +32,13 @@ const BootstrapDialog = styled(Dialog)(({ theme }) => ({ type AddPermissionModalProps = { open: boolean handleOpen: Dispatch> - addPermission: (permissions: RegisterPermissionPayload[]) => void + addPermission: ( + permissions: RegisterPermissionPayload[], + permissionType: string, + principalType: string, + principal: string, + permissionSetting: string + ) => void } const AddPermissionModal = ({ @@ -110,7 +116,18 @@ const AddPermissionModal = ({ permissions.push(addPermissionPayload) }) - addPermission(permissions) + const principal = + principalType.toLowerCase() === 'user' + ? userPrincipal?.username + : groupPrincipal?.name + + addPermission( + permissions, + permissionType, + principalType, + principal!, + permissionSetting + ) } const addButtonDisabled = diff --git a/web/src/containers/Settings/addPermissionResponseModal.tsx b/web/src/containers/Settings/addPermissionResponseModal.tsx index 5bb6696..4096ebc 100644 --- a/web/src/containers/Settings/addPermissionResponseModal.tsx +++ b/web/src/containers/Settings/addPermissionResponseModal.tsx @@ -1,22 +1,16 @@ -import React, { useMemo } from 'react' +import React from 'react' -import { - Paper, - Typography, - DialogContent, - TableContainer, - Table, - TableHead, - TableBody, - TableRow, - TableCell -} from '@mui/material' +import { Typography, DialogContent } from '@mui/material' import { BootstrapDialog } from '../../components/modal' import { BootstrapDialogTitle } from '../../components/dialogTitle' import { PermissionResponse } from '../../utils/types' export interface PermissionResponsePayload { + permissionType: string + principalType: string + principal: string + permissionSetting: string existingPermissions: PermissionResponse[] newAddedPermissions: PermissionResponse[] updatedPermissions: PermissionResponse[] @@ -30,77 +24,11 @@ type Props = { } const PermissionResponseModal = ({ open, setOpen, payload }: Props) => { - const rows = useMemo(() => { - const paths: any = [] - - const existingPermissionsLength = payload.existingPermissions.length - const newAddedPermissionsLength = payload.newAddedPermissions.length - const updatedPermissionsLength = payload.updatedPermissions.length - if ( - existingPermissionsLength >= newAddedPermissionsLength && - existingPermissionsLength >= updatedPermissionsLength - ) { - payload.existingPermissions.forEach((permission, index) => { - const obj = { - existing: permission.path, - newAdded: - index < newAddedPermissionsLength - ? payload.newAddedPermissions[index].path - : '-', - updated: - index < updatedPermissionsLength - ? payload.updatedPermissions[index].path - : '-' - } - paths.push(obj) - }) - return paths - } - - if ( - newAddedPermissionsLength >= existingPermissionsLength && - newAddedPermissionsLength >= updatedPermissionsLength - ) { - payload.newAddedPermissions.forEach((permission, index) => { - const obj = { - newAdded: permission.path, - existing: - index < existingPermissionsLength - ? payload.existingPermissions[index].path - : '-', - updated: - index < updatedPermissionsLength - ? payload.updatedPermissions[index].path - : '-' - } - paths.push(obj) - }) - return paths - } - - if ( - updatedPermissionsLength >= existingPermissionsLength && - updatedPermissionsLength >= newAddedPermissionsLength - ) { - payload.updatedPermissions.forEach((permission, index) => { - const obj = { - updated: permission.path, - existing: - index < existingPermissionsLength - ? payload.existingPermissions[index].path - : '-', - newAdded: - index < newAddedPermissionsLength - ? payload.newAddedPermissions[index].path - : '-' - } - paths.push(obj) - }) - return paths - } - - return paths - }, [payload]) + const newAddedPermissionsLength = payload.newAddedPermissions.length + const updatedPermissionsLength = payload.updatedPermissions.length + const existingPermissionsLength = payload.existingPermissions.length + const appliedPermissionsLength = + newAddedPermissionsLength + updatedPermissionsLength return (
@@ -112,28 +40,62 @@ const PermissionResponseModal = ({ open, setOpen, payload }: Props) => { Permission Response - - - - - New - Updated - Unchanged - - - - {rows.map((obj: any, index: number) => { - return ( - - {obj.newAdded} - {obj.updated} - {obj.existing} - - ) - })} - -
-
+ + {`${appliedPermissionsLength} "${payload.permissionSetting}", "${ + payload.permissionType + }", "${payload.principalType}", "${payload.principal}" ${ + appliedPermissionsLength > 1 ? 'Rules' : 'Rule' + }`}{' '} + Applied: + + + {newAddedPermissionsLength > 0 && ( + <> + + {`${newAddedPermissionsLength} ${ + newAddedPermissionsLength > 1 ? 'Rules' : 'Rule' + }`}{' '} + Added: + +
    + {payload.newAddedPermissions.map((permission, index) => ( +
  • {permission.path}
  • + ))} +
+ + )} + + {updatedPermissionsLength > 0 && ( + <> + + {` ${updatedPermissionsLength} ${ + updatedPermissionsLength > 1 ? 'Rules' : 'Rule' + }`}{' '} + Updated: + +
    + {payload.updatedPermissions.map((permission, index) => ( +
  • {permission.path}
  • + ))} +
+ + )} + + {existingPermissionsLength > 0 && ( + <> + + {`${existingPermissionsLength} ${ + existingPermissionsLength > 1 ? 'Rules' : 'Rule' + }`}{' '} + Unchanged: + +
    + {payload.existingPermissions.map((permission, index) => ( +
  • {permission.path}
  • + ))} +
+ + )} {payload.errorPaths.length > 0 && ( <> diff --git a/web/src/containers/Settings/permission.tsx b/web/src/containers/Settings/permission.tsx index 086f13e..c3dbd55 100644 --- a/web/src/containers/Settings/permission.tsx +++ b/web/src/containers/Settings/permission.tsx @@ -71,6 +71,10 @@ const Permission = () => { useState(false) const [permissionResponsePayload, setPermissionResponsePayload] = useState({ + permissionType: '', + principalType: '', + principal: '', + permissionSetting: '', existingPermissions: [], newAddedPermissions: [], updatedPermissions: [], @@ -200,7 +204,11 @@ const Permission = () => { } const addPermission = async ( - permissionsToAdd: RegisterPermissionPayload[] + permissionsToAdd: RegisterPermissionPayload[], + permissionType: string, + principalType: string, + principal: string, + permissionSetting: string ) => { setAddPermissionModalOpen(false) setIsLoading(true) @@ -256,6 +264,10 @@ const Permission = () => { fetchPermissions() setIsLoading(false) setPermissionResponsePayload({ + permissionType, + principalType, + principal, + permissionSetting, existingPermissions, updatedPermissions, newAddedPermissions,