From a36be67c8b4292c30417acfcd1ee8c72671756fd Mon Sep 17 00:00:00 2001 From: Tiago Ribeiro Date: Tue, 3 Dec 2024 11:00:20 +0000 Subject: [PATCH] Forgot a permission on the role page --- src/pages/assignments/index.tsx | 67 +++++++++++------------- src/pages/entities/[id]/roles/[role].tsx | 1 + 2 files changed, 32 insertions(+), 36 deletions(-) diff --git a/src/pages/assignments/index.tsx b/src/pages/assignments/index.tsx index 1d53a267..50f0a14a 100644 --- a/src/pages/assignments/index.tsx +++ b/src/pages/assignments/index.tsx @@ -3,14 +3,14 @@ import Separator from "@/components/Low/Separator"; import AssignmentCard from "@/dashboards/AssignmentCard"; import AssignmentView from "@/dashboards/AssignmentView"; import { useAllowedEntities } from "@/hooks/useEntityPermissions"; -import {useListSearch} from "@/hooks/useListSearch"; +import { useListSearch } from "@/hooks/useListSearch"; import usePagination from "@/hooks/usePagination"; import { EntityWithRoles } from "@/interfaces/entity"; -import {Assignment} from "@/interfaces/results"; -import {CorporateUser, Group, User} from "@/interfaces/user"; -import {sessionOptions} from "@/lib/session"; -import {getUserCompanyName} from "@/resources/user"; -import {findBy, mapBy, redirect, serialize} from "@/utils"; +import { Assignment } from "@/interfaces/results"; +import { CorporateUser, Group, User } from "@/interfaces/user"; +import { sessionOptions } from "@/lib/session"; +import { getUserCompanyName } from "@/resources/user"; +import { findBy, mapBy, redirect, serialize } from "@/utils"; import { requestUser } from "@/utils/api"; import { activeAssignmentFilter, @@ -19,20 +19,20 @@ import { pastAssignmentFilter, startHasExpiredAssignmentFilter, } from "@/utils/assignments"; -import {getAssignments, getEntitiesAssignments} from "@/utils/assignments.be"; -import {getEntitiesWithRoles} from "@/utils/entities.be"; -import {getGroups, getGroupsByEntities} from "@/utils/groups.be"; -import {checkAccess, findAllowedEntities} from "@/utils/permissions"; -import {getEntitiesUsers, getUsers} from "@/utils/users.be"; -import {withIronSessionSsr} from "iron-session/next"; -import {groupBy} from "lodash"; +import { getAssignments, getEntitiesAssignments } from "@/utils/assignments.be"; +import { getEntitiesWithRoles } from "@/utils/entities.be"; +import { getGroups, getGroupsByEntities } from "@/utils/groups.be"; +import { checkAccess, findAllowedEntities } from "@/utils/permissions"; +import { getEntitiesUsers, getUsers } from "@/utils/users.be"; +import { withIronSessionSsr } from "iron-session/next"; +import { groupBy } from "lodash"; import Head from "next/head"; import Link from "next/link"; -import {useRouter} from "next/router"; -import {useMemo, useState} from "react"; -import {BsChevronLeft, BsPlus} from "react-icons/bs"; +import { useRouter } from "next/router"; +import { useMemo, useState } from "react"; +import { BsChevronLeft, BsPlus } from "react-icons/bs"; -export const getServerSideProps = withIronSessionSsr(async ({req, res}) => { +export const getServerSideProps = withIronSessionSsr(async ({ req, res }) => { const user = await requestUser(req, res) if (!user) return redirect("/login") @@ -50,24 +50,19 @@ export const getServerSideProps = withIronSessionSsr(async ({req, res}) => { const assignments = await (checkAccess(user, ["developer", "admin"]) ? getAssignments() : getEntitiesAssignments(mapBy(allowedEntities, 'id'))); - const groups = - await (checkAccess(user, ["developer", "admin"]) ? getGroups() : getGroupsByEntities(mapBy(allowedEntities, 'id'))); - - return {props: serialize({user, users, entities: allowedEntities, assignments, groups})}; + return { props: serialize({ user, users, entities: allowedEntities, assignments }) }; }, sessionOptions); const SEARCH_FIELDS = [["name"]]; interface Props { assignments: Assignment[]; - corporateAssignments?: ({corporate?: CorporateUser} & Assignment)[]; entities: EntityWithRoles[] - groups: Group[]; user: User; users: User[]; } -export default function AssignmentsPage({assignments, corporateAssignments, entities, user, users, groups}: Props) { +export default function AssignmentsPage({ assignments, entities, user, users }: Props) { const entitiesAllowCreate = useAllowedEntities(user, entities, 'create_assignment') const entitiesAllowEdit = useAllowedEntities(user, entities, 'edit_assignment') const entitiesAllowArchive = useAllowedEntities(user, entities, 'archive_assignment') @@ -80,17 +75,17 @@ export default function AssignmentsPage({assignments, corporateAssignments, enti const router = useRouter(); - const {rows: activeRows, renderSearch: renderActive} = useListSearch(SEARCH_FIELDS, activeAssignments); - const {rows: plannedRows, renderSearch: renderPlanned} = useListSearch(SEARCH_FIELDS, plannedAssignments); - const {rows: pastRows, renderSearch: renderPast} = useListSearch(SEARCH_FIELDS, pastAssignments); - const {rows: expiredRows, renderSearch: renderExpired} = useListSearch(SEARCH_FIELDS, startExpiredAssignments); - const {rows: archivedRows, renderSearch: renderArchived} = useListSearch(SEARCH_FIELDS, archivedAssignments); + const { rows: activeRows, renderSearch: renderActive } = useListSearch(SEARCH_FIELDS, activeAssignments); + const { rows: plannedRows, renderSearch: renderPlanned } = useListSearch(SEARCH_FIELDS, plannedAssignments); + const { rows: pastRows, renderSearch: renderPast } = useListSearch(SEARCH_FIELDS, pastAssignments); + const { rows: expiredRows, renderSearch: renderExpired } = useListSearch(SEARCH_FIELDS, startExpiredAssignments); + const { rows: archivedRows, renderSearch: renderArchived } = useListSearch(SEARCH_FIELDS, archivedAssignments); - const {items: activeItems, renderMinimal: paginationActive} = usePagination(activeRows, 16); - const {items: plannedItems, renderMinimal: paginationPlanned} = usePagination(plannedRows, 16); - const {items: pastItems, renderMinimal: paginationPast} = usePagination(pastRows, 16); - const {items: expiredItems, renderMinimal: paginationExpired} = usePagination(expiredRows, 16); - const {items: archivedItems, renderMinimal: paginationArchived} = usePagination(archivedRows, 16); + const { items: activeItems, renderMinimal: paginationActive } = usePagination(activeRows, 16); + const { items: plannedItems, renderMinimal: paginationPlanned } = usePagination(plannedRows, 16); + const { items: pastItems, renderMinimal: paginationPast } = usePagination(pastRows, 16); + const { items: expiredItems, renderMinimal: paginationExpired } = usePagination(expiredRows, 16); + const { items: archivedItems, renderMinimal: paginationArchived } = usePagination(archivedRows, 16); return ( <> @@ -156,8 +151,8 @@ export default function AssignmentsPage({assignments, corporateAssignments, enti entityObj={findBy(entities, 'id', a.entity)} onClick={ mapBy(entitiesAllowEdit, 'id').includes(a.entity || "") - ? () => router.push(`/assignments/creator/${a.id}`) - : () => router.push(`/assignments/${a.id}`) + ? () => router.push(`/assignments/creator/${a.id}`) + : () => router.push(`/assignments/${a.id}`) } key={a.id} /> diff --git a/src/pages/entities/[id]/roles/[role].tsx b/src/pages/entities/[id]/roles/[role].tsx index 64f656bb..561e00d4 100644 --- a/src/pages/entities/[id]/roles/[role].tsx +++ b/src/pages/entities/[id]/roles/[role].tsx @@ -99,6 +99,7 @@ const ASSIGNMENT_MANAGEMENT: PermissionLayout[] = [ { label: "View Assignments", key: "view_assignments" }, { label: "Create Assignments", key: "create_assignment" }, { label: "Start Assignments", key: "start_assignment" }, + { label: "Edit Assignments", key: "edit_assignment" }, { label: "Delete Assignments", key: "delete_assignment" }, { label: "Archive Assignments", key: "archive_assignment" }, ]