1
0
mirror of https://github.com/sasjs/server.git synced 2026-01-03 21:10:05 +00:00

feat: add multiple permission for same combination of type and principal at once

This commit is contained in:
2022-08-03 23:26:31 +05:00
parent 78bea7c154
commit 754704bca8
4 changed files with 171 additions and 53 deletions

View File

@@ -27,6 +27,7 @@ import { styled } from '@mui/material/styles'
import Modal from '../../components/modal'
import PermissionFilterModal from './permissionFilterModal'
import AddPermissionModal from './addPermissionModal'
import PermissionResponseModal from './addPermissionResponseModal'
import UpdatePermissionModal from './updatePermissionModal'
import DeleteConfirmationModal from '../../components/deleteConfirmationModal'
import BootstrapSnackbar, { AlertSeverityType } from '../../components/snackbar'
@@ -59,6 +60,13 @@ const Permission = () => {
AlertSeverityType.Success
)
const [addPermissionModalOpen, setAddPermissionModalOpen] = useState(false)
const [openPermissionResponseModal, setOpenPermissionResponseModal] =
useState(false)
const [addedPermissions, setAddedPermission] = useState<PermissionResponse[]>(
[]
)
const [errorResponses, setErrorResponses] = useState<any[]>([])
const [updatePermissionModalOpen, setUpdatePermissionModalOpen] =
useState(false)
const [deleteConfirmationModalOpen, setDeleteConfirmationModalOpen] =
@@ -181,29 +189,31 @@ const Permission = () => {
setFilterApplied(false)
}
const addPermission = (addPermissionPayload: RegisterPermissionPayload) => {
const addPermission = (permissions: RegisterPermissionPayload[]) => {
setAddPermissionModalOpen(false)
setAddedPermission([])
setErrorResponses([])
setIsLoading(true)
axios
.post('/SASjsApi/permission', addPermissionPayload)
.then((res: any) => {
fetchPermissions()
setSnackbarMessage('Permission added!')
setSnackbarSeverity(AlertSeverityType.Success)
setOpenSnackbar(true)
})
.catch((err) => {
setModalTitle('Abort')
setModalPayload(
typeof err.response.data === 'object'
? JSON.stringify(err.response.data)
: err.response.data
)
setOpenModal(true)
})
.finally(() => {
setIsLoading(false)
})
const permissionResponses: PermissionResponse[] = []
const errors: any = []
permissions.forEach(async (permission) => {
await axios
.post('/SASjsApi/permission', permission)
.then((res) => {
permissionResponses.push(res.data)
})
.catch((error) => {
errors.push({ error, permission })
})
})
fetchPermissions()
setIsLoading(false)
setOpenPermissionResponseModal(true)
setAddedPermission(permissionResponses)
setErrorResponses(errors)
}
const handleUpdatePermissionClick = (permission: PermissionResponse) => {
@@ -340,6 +350,12 @@ const Permission = () => {
handleOpen={setAddPermissionModalOpen}
addPermission={addPermission}
/>
<PermissionResponseModal
open={openPermissionResponseModal}
setOpen={setOpenPermissionResponseModal}
permissionResponses={addedPermissions}
errorResponses={errorResponses}
/>
<UpdatePermissionModal
open={updatePermissionModalOpen}
handleOpen={setUpdatePermissionModalOpen}