Continued creating the permission system

This commit is contained in:
Tiago Ribeiro
2024-10-11 10:47:35 +01:00
parent 55204e2ce1
commit a53ee79c0a
12 changed files with 196 additions and 121 deletions

View File

@@ -80,6 +80,14 @@ const ENTITY_MANAGEMENT: PermissionLayout[] = [
{label: "Delete Entity Role", key: "delete_entity_role"},
]
const ASSIGNMENT_MANAGEMENT: PermissionLayout[] = [
{label: "View Assignments", key: "view_assignments"},
{label: "Create Assignments", key: "create_assignment"},
{label: "Start Assignments", key: "start_assignment"},
{label: "Delete Assignments", key: "delete_assignment"},
{label: "Archive Assignments", key: "archive_assignment"},
]
export const getServerSideProps = withIronSessionSsr(async ({req, res, params}) => {
const user = await requestUser(req, res)
if (!user) return redirect("/login")
@@ -318,6 +326,26 @@ export default function Role({user, entity, role, userCount}: Props) {
)) }
</div>
</div>
<div className="flex flex-col gap-4">
<div className="w-full flex items-center justify-between">
<b>Assignment Management</b>
<Checkbox
isChecked={mapBy(ASSIGNMENT_MANAGEMENT, 'key').every(k => permissions.includes(k))}
onChange={() => mapBy(ASSIGNMENT_MANAGEMENT, 'key').forEach(togglePermissions)}
>
Select all
</Checkbox>
</div>
<Separator />
<div className="grid grid-cols-2 gap-4">
{ASSIGNMENT_MANAGEMENT.map(({label, key}) => (
<Checkbox disabled={!canEditPermissions} key={key} isChecked={permissions.includes(key)} onChange={() => togglePermissions(key)}>
{ label }
</Checkbox>
)) }
</div>
</div>
</section>
</section>
</Layout>