mirror of
https://github.com/sasjs/server.git
synced 2026-01-15 09:50:06 +00:00
chore: add filter based on principal type
This commit is contained in:
@@ -38,7 +38,7 @@ const BootstrapTableCell = styled(TableCell)({
|
|||||||
textAlign: 'left'
|
textAlign: 'left'
|
||||||
})
|
})
|
||||||
|
|
||||||
enum PrincipalType {
|
export enum PrincipalType {
|
||||||
User = 'User',
|
User = 'User',
|
||||||
Group = 'Group'
|
Group = 'Group'
|
||||||
}
|
}
|
||||||
@@ -58,6 +58,9 @@ const Permission = () => {
|
|||||||
const [filterModalOpen, setFilterModalOpen] = useState(false)
|
const [filterModalOpen, setFilterModalOpen] = useState(false)
|
||||||
const [uriFilter, setUriFilter] = useState<string[]>([])
|
const [uriFilter, setUriFilter] = useState<string[]>([])
|
||||||
const [principalFilter, setPrincipalFilter] = useState<string[]>([])
|
const [principalFilter, setPrincipalFilter] = useState<string[]>([])
|
||||||
|
const [principalTypeFilter, setPrincipalTypeFilter] = useState<
|
||||||
|
PrincipalType[]
|
||||||
|
>([])
|
||||||
const [settingFilter, setSettingFilter] = useState<string[]>([])
|
const [settingFilter, setSettingFilter] = useState<string[]>([])
|
||||||
const [permissions, setPermissions] = useState<PermissionResponse[]>([])
|
const [permissions, setPermissions] = useState<PermissionResponse[]>([])
|
||||||
const [filteredPermissions, setFilteredPermissions] = useState<
|
const [filteredPermissions, setFilteredPermissions] = useState<
|
||||||
@@ -93,17 +96,33 @@ const Permission = () => {
|
|||||||
uriFilter.length > 0
|
uriFilter.length > 0
|
||||||
? permissions.filter((permission) => uriFilter.includes(permission.uri))
|
? permissions.filter((permission) => uriFilter.includes(permission.uri))
|
||||||
: permissions
|
: permissions
|
||||||
|
|
||||||
const principalFilteredPermissions =
|
const principalFilteredPermissions =
|
||||||
principalFilter.length > 0
|
principalFilter.length > 0
|
||||||
? permissions.filter((permission) => {
|
? permissions.filter((permission) => {
|
||||||
if (permission.user) {
|
if (permission.user) {
|
||||||
return principalFilter.includes(permission.user.displayName)
|
return principalFilter.includes(permission.user.username)
|
||||||
} else if (permission.group) {
|
}
|
||||||
|
if (permission.group) {
|
||||||
return principalFilter.includes(permission.group.name)
|
return principalFilter.includes(permission.group.name)
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
})
|
})
|
||||||
: permissions
|
: permissions
|
||||||
|
|
||||||
|
const principalTypeFilteredPermissions =
|
||||||
|
principalTypeFilter.length > 0
|
||||||
|
? permissions.filter((permission) => {
|
||||||
|
if (permission.user) {
|
||||||
|
return principalTypeFilter.includes(PrincipalType.User)
|
||||||
|
}
|
||||||
|
if (permission.group) {
|
||||||
|
return principalTypeFilter.includes(PrincipalType.Group)
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
: permissions
|
||||||
|
|
||||||
const settingFilteredPermissions =
|
const settingFilteredPermissions =
|
||||||
settingFilter.length > 0
|
settingFilter.length > 0
|
||||||
? permissions.filter((permission) =>
|
? permissions.filter((permission) =>
|
||||||
@@ -117,6 +136,12 @@ const Permission = () => {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
filteredArray = filteredArray.filter((permission) =>
|
||||||
|
principalTypeFilteredPermissions.some(
|
||||||
|
(item) => item.permissionId === permission.permissionId
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
filteredArray = filteredArray.filter((permission) =>
|
filteredArray = filteredArray.filter((permission) =>
|
||||||
settingFilteredPermissions.some(
|
settingFilteredPermissions.some(
|
||||||
(item) => item.permissionId === permission.permissionId
|
(item) => item.permissionId === permission.permissionId
|
||||||
@@ -261,6 +286,8 @@ const Permission = () => {
|
|||||||
setUriFilter={setUriFilter}
|
setUriFilter={setUriFilter}
|
||||||
principalFilter={principalFilter}
|
principalFilter={principalFilter}
|
||||||
setPrincipalFilter={setPrincipalFilter}
|
setPrincipalFilter={setPrincipalFilter}
|
||||||
|
principalTypeFilter={principalTypeFilter}
|
||||||
|
setPrincipalTypeFilter={setPrincipalTypeFilter}
|
||||||
settingFilter={settingFilter}
|
settingFilter={settingFilter}
|
||||||
setSettingFilter={setSettingFilter}
|
setSettingFilter={setSettingFilter}
|
||||||
applyFilter={applyFilter}
|
applyFilter={applyFilter}
|
||||||
@@ -355,7 +382,7 @@ const PermissionTable = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
const displayPrincipal = (permission: PermissionResponse) => {
|
const displayPrincipal = (permission: PermissionResponse) => {
|
||||||
if (permission.user) return permission.user?.displayName
|
if (permission.user) return permission.user?.username
|
||||||
if (permission.group) return permission.group?.name
|
if (permission.group) return permission.group?.name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ import Autocomplete from '@mui/material/Autocomplete'
|
|||||||
|
|
||||||
import { PermissionResponse } from '../../utils/types'
|
import { PermissionResponse } from '../../utils/types'
|
||||||
import { BootstrapDialogTitle } from '../../components/dialogTitle'
|
import { BootstrapDialogTitle } from '../../components/dialogTitle'
|
||||||
|
import { PrincipalType } from './permission'
|
||||||
|
|
||||||
const BootstrapDialog = styled(Dialog)(({ theme }) => ({
|
const BootstrapDialog = styled(Dialog)(({ theme }) => ({
|
||||||
'& .MuiDialogContent-root': {
|
'& .MuiDialogContent-root': {
|
||||||
padding: theme.spacing(2)
|
padding: theme.spacing(2)
|
||||||
@@ -29,6 +31,8 @@ type FilterModalProps = {
|
|||||||
setUriFilter: Dispatch<SetStateAction<string[]>>
|
setUriFilter: Dispatch<SetStateAction<string[]>>
|
||||||
principalFilter: string[]
|
principalFilter: string[]
|
||||||
setPrincipalFilter: Dispatch<SetStateAction<string[]>>
|
setPrincipalFilter: Dispatch<SetStateAction<string[]>>
|
||||||
|
principalTypeFilter: PrincipalType[]
|
||||||
|
setPrincipalTypeFilter: Dispatch<SetStateAction<PrincipalType[]>>
|
||||||
settingFilter: string[]
|
settingFilter: string[]
|
||||||
setSettingFilter: Dispatch<SetStateAction<string[]>>
|
setSettingFilter: Dispatch<SetStateAction<string[]>>
|
||||||
applyFilter: () => void
|
applyFilter: () => void
|
||||||
@@ -43,6 +47,8 @@ const PermissionFilterModal = ({
|
|||||||
setUriFilter,
|
setUriFilter,
|
||||||
principalFilter,
|
principalFilter,
|
||||||
setPrincipalFilter,
|
setPrincipalFilter,
|
||||||
|
principalTypeFilter,
|
||||||
|
setPrincipalTypeFilter,
|
||||||
settingFilter,
|
settingFilter,
|
||||||
setSettingFilter,
|
setSettingFilter,
|
||||||
applyFilter,
|
applyFilter,
|
||||||
@@ -54,7 +60,7 @@ const PermissionFilterModal = ({
|
|||||||
|
|
||||||
// fetch all the principals from permissions array
|
// fetch all the principals from permissions array
|
||||||
let principals = permissions.map((permission) => {
|
let principals = permissions.map((permission) => {
|
||||||
if (permission.user) return permission.user.displayName
|
if (permission.user) return permission.user.username
|
||||||
if (permission.group) return permission.group.name
|
if (permission.group) return permission.group.name
|
||||||
return ''
|
return ''
|
||||||
})
|
})
|
||||||
@@ -103,6 +109,20 @@ const PermissionFilterModal = ({
|
|||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
<Grid item xs={12}>
|
||||||
|
<Autocomplete
|
||||||
|
multiple
|
||||||
|
options={Object.values(PrincipalType)}
|
||||||
|
filterSelectedOptions
|
||||||
|
value={principalTypeFilter}
|
||||||
|
onChange={(event: any, newValue: PrincipalType[]) => {
|
||||||
|
setPrincipalTypeFilter(newValue)
|
||||||
|
}}
|
||||||
|
renderInput={(params) => (
|
||||||
|
<TextField {...params} label="Principal Type" />
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</Grid>
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
<Autocomplete
|
<Autocomplete
|
||||||
multiple
|
multiple
|
||||||
|
|||||||
Reference in New Issue
Block a user