Skip to content

Commit 24ad0c2

Browse files
pa-lembilalabbad
andauthored
Update permissions in other views (#4630)
* remove permission from branch selector * check permission for object details and items * update types * update mock data * fix loading state for items * update test for role-management (will be improved) * skip anonymous test for now * use admin auth for artifacts * fix artifacts details view with object permission * fix filter test * add kind for filter in use object items for permission * fix auth for object list * fix auth * skip anonymous profile test * skip profiles * use auth in hierarchical view test * fix search e2e * fix token.spec.ts * fix profile * permission for profile * add flag for artifact * remove log * fix unauth test * update permissions structure to not provide a message if it's allowed + relationship example * add permissions for graphql queries * add message from api on 403 * update message * update message * fix properties * update permissions for groups and ipam * add error check in details view * add permission in ipam * add error in ipam * add permissions in relationships view * remove permission from branch selector * check permission for object details and items * update types * update mock data * fix loading state for items * update test for role-management (will be improved) * skip anonymous test for now * use admin auth for artifacts * fix artifacts details view with object permission * fix filter test * add kind for filter in use object items for permission * fix auth for object list * fix auth * skip anonymous profile test * skip profiles * use auth in hierarchical view test * fix search e2e * fix token.spec.ts * fix profile * permission for profile * add flag for artifact * remove log * fix unauth test * update permissions structure to not provide a message if it's allowed + relationship example * add message from api on 403 * update message * update message * start update messages and use new logic with current branch * update types + renaming * better message * disable generic selector item when not allowed to create * moved to permission folder * enabled skipped tests * update types * remove old file * replace imports * fix mock data * use new getPermissions query * get permissions for proposed change create * update permissions for conflict * update permissions for edit proposed changes * update permissions for proposed changes * remove permission from branch selector * check permission for object details and items * update types * update mock data * fix loading state for items * update test for role-management (will be improved) * skip anonymous test for now * use admin auth for artifacts * fix artifacts details view with object permission * fix filter test * add kind for filter in use object items for permission * fix auth for object list * fix auth * skip anonymous profile test * skip profiles * use auth in hierarchical view test * fix search e2e * fix token.spec.ts * fix profile * permission for profile * add flag for artifact * remove log * fix unauth test * update permissions structure to not provide a message if it's allowed + relationship example * add message from api on 403 * update message * update message * start update messages and use new logic with current branch * update types + renaming * better message * disable generic selector item when not allowed to create * moved to permission folder * enabled skipped tests * fix mock data * fix number pool * fix profiles spec * fix error causing * clean up old permissions * fix permissions call for array * update mock data * update mock data * updadte logic for branches * update permissions for authenticated * update permissions for threads and comments * fix tutorial * start update table for permissions * cleaning * update permissions for role management * update permissions * update router for artifacts and graphql * lint * remove logs * improve test and fix generate artifacts * update mock data * revert use auth role for forms * fix permission for prefixes list * fix prefix list permission * fix ipam title crashing when error * fix thread permission * wait for view to be loaded * update loading message + quick fix for role access (backend issue) * update mock data --------- Co-authored-by: bilalabbad <[email protected]>
1 parent 162d60f commit 24ad0c2

File tree

69 files changed

+776
-295
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+776
-295
lines changed

frontend/app/src/components/conversations/thread.tsx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ import graphqlClient from "@/graphql/graphqlClientApollo";
99
import { createObject } from "@/graphql/mutations/objects/createObject";
1010
import { updateObjectWithId } from "@/graphql/mutations/objects/updateObjectWithId";
1111
import { useAuth } from "@/hooks/useAuth";
12+
import useQuery from "@/hooks/useQuery";
13+
import { getObjectPermissionsQuery } from "@/screens/permission/queries/getObjectPermissions";
14+
import { getPermission } from "@/screens/permission/utils";
1215
import { currentBranchAtom } from "@/state/atoms/branches.atom";
1316
import { datetimeAtom } from "@/state/atoms/time.atom";
1417
import { classNames } from "@/utils/common";
@@ -48,6 +51,13 @@ export const Thread = (props: tThread) => {
4851
const [confirmModal, setConfirmModal] = useState(false);
4952
const [markAsResolved, setMarkAsResolved] = useState(false);
5053

54+
const { loading, data } = useQuery(
55+
gql(getObjectPermissionsQuery(PROPOSED_CHANGES_THREAD_COMMENT_OBJECT))
56+
);
57+
58+
const permission =
59+
data && getPermission(data?.[PROPOSED_CHANGES_THREAD_COMMENT_OBJECT]?.permissions?.edges);
60+
5161
const handleSubmit = async ({ comment }: { comment: string }) => {
5262
try {
5363
setIsLoading(true);
@@ -201,7 +211,10 @@ export const Thread = (props: tThread) => {
201211
<div className="flex justify-between">
202212
{MarkAsResolved}
203213

204-
<Button onClick={() => setDisplayAddComment(true)} disabled={!auth?.permissions?.write}>
214+
<Button
215+
onClick={() => setDisplayAddComment(true)}
216+
disabled={loading || !permission?.create?.isAllowed}
217+
>
205218
Reply
206219
</Button>
207220
</div>

frontend/app/src/components/display/properties-popover.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ButtonWithTooltip } from "@/components/buttons/button-primitive";
2-
import { usePermission } from "@/hooks/usePermission";
32
import ObjectItemMetaEdit from "@/screens/object-item-meta-edit/object-item-meta-edit";
3+
import { Permission } from "@/screens/permission/types";
44
import { metaEditFieldDetailsState } from "@/state/atoms/showMetaEdit.atom copy";
55
import { Icon } from "@iconify-icon/react";
66
import { useAtom } from "jotai/index";
@@ -16,6 +16,7 @@ interface PropertiesEditTriggerProps {
1616
data: any;
1717
schema: any;
1818
hideHeader?: boolean;
19+
permission: Permission;
1920
}
2021

2122
const PropertiesPopover = ({
@@ -26,8 +27,8 @@ const PropertiesPopover = ({
2627
data,
2728
schema,
2829
hideHeader,
30+
permission,
2931
}: PropertiesEditTriggerProps) => {
30-
const permission = usePermission();
3132
const [showMetaEditModal, setShowMetaEditModal] = useState(false);
3233
const [metaEditFieldDetails, setMetaEditFieldDetails] = useAtom(metaEditFieldDetailsState);
3334

@@ -56,9 +57,9 @@ const PropertiesPopover = ({
5657
});
5758
setShowMetaEditModal(true);
5859
}}
59-
disabled={!permission.write.allow}
60-
tooltipEnabled={!permission.write.allow}
61-
tooltipContent={permission.write.message ?? undefined}
60+
disabled={!permission.update.isAllowed}
61+
tooltipEnabled={!permission.update.isAllowed}
62+
tooltipContent={permission.update.message ?? undefined}
6263
data-testid="properties-edit-button"
6364
>
6465
<Icon icon="mdi:pencil" className="text-custom-blue-500" />

frontend/app/src/components/form/object-edit-slide-over-trigger.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
11
import { ButtonProps, ButtonWithTooltip } from "@/components/buttons/button-primitive";
22
import SlideOver, { SlideOverTitle } from "@/components/display/slide-over";
3-
import { usePermission } from "@/hooks/usePermission";
43
import ObjectItemEditComponent from "@/screens/object-item-edit/object-item-edit-paginated";
4+
import { Permission } from "@/screens/permission/types";
55
import { IModelSchema } from "@/state/atoms/schema.atom";
6+
67
import { Icon } from "@iconify-icon/react";
78
import { useState } from "react";
89

910
interface ObjectEditSlideOverTriggerProps extends ButtonProps {
1011
data: any;
1112
schema: IModelSchema;
1213
onUpdateComplete?: () => void;
14+
permission: Permission;
1315
}
1416

1517
const ObjectEditSlideOverTrigger = ({
1618
data,
1719
schema,
1820
onUpdateComplete,
21+
permission,
1922
...props
2023
}: ObjectEditSlideOverTriggerProps) => {
21-
const permission = usePermission();
2224
const [isEditDrawerOpen, setIsEditDrawerOpen] = useState(false);
2325

2426
return (
@@ -28,9 +30,9 @@ const ObjectEditSlideOverTrigger = ({
2830
variant="outline"
2931
size="icon"
3032
onClick={() => setIsEditDrawerOpen(true)}
31-
disabled={!permission.write.allow}
32-
tooltipEnabled={!permission.write.allow}
33-
tooltipContent={permission.write.message ?? undefined}
33+
disabled={!permission.create.isAllowed}
34+
tooltipEnabled={!permission.create.isAllowed}
35+
tooltipContent={permission.create.message ?? undefined}
3436
data-testid="edit-button"
3537
{...props}
3638
>

frontend/app/src/components/table/table.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { classNames } from "@/utils/common";
55
import { Icon } from "@iconify-icon/react";
66
import { Link } from "react-router-dom";
77

8+
import { Permission } from "@/screens/permission/types";
89
import { ReactNode, isValidElement } from "react";
910
import {
1011
DropdownMenu,
@@ -35,9 +36,10 @@ type TableProps = {
3536
onDelete?: (row: tRow) => void;
3637
onUpdate?: (row: tRow) => void;
3738
className?: string;
39+
permission?: Permission;
3840
};
3941

40-
export const Table = ({ columns, rows, onDelete, onUpdate, className }: TableProps) => {
42+
export const Table = ({ columns, rows, onDelete, onUpdate, className, permission }: TableProps) => {
4143
const auth = useAuth();
4244

4345
return (
@@ -110,7 +112,7 @@ export const Table = ({ columns, rows, onDelete, onUpdate, className }: TablePro
110112
{onUpdate && (
111113
<DropdownMenuItem
112114
onClick={() => onUpdate(row)}
113-
disabled={!auth?.permissions?.write}
115+
disabled={!permission?.update?.isAllowed}
114116
data-testid="update-row-button"
115117
>
116118
<Icon icon="mdi:pencil" className="text-custom-blue-500" />
@@ -121,7 +123,7 @@ export const Table = ({ columns, rows, onDelete, onUpdate, className }: TablePro
121123
{onDelete && (
122124
<DropdownMenuItem
123125
onClick={() => onDelete(row)}
124-
disabled={!auth?.permissions?.write}
126+
disabled={!permission?.delete?.isAllowed}
125127
data-testid="delete-row-button"
126128
>
127129
<Icon icon="mdi:trash-outline" className="text-red-500" />

frontend/app/src/graphql/queries/groups/getGroups.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,17 @@ query GET_GROUPS {
2525
}
2626
}
2727
}
28+
permissions {
29+
edges {
30+
node {
31+
kind
32+
view
33+
create
34+
update
35+
delete
36+
}
37+
}
38+
}
2839
}
2940
}
3041
`);

frontend/app/src/graphql/queries/ipam/ip-address.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,17 @@ export const GET_IP_ADDRESSES = gql`
5252
}
5353
}
5454
}
55+
permissions {
56+
edges {
57+
node {
58+
kind
59+
view
60+
create
61+
update
62+
delete
63+
}
64+
}
65+
}
5566
}
5667
}
5768
`;

frontend/app/src/graphql/queries/ipam/prefixes.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,17 @@ export const GET_PREFIXES = gql`
8888
}
8989
}
9090
}
91+
permissions {
92+
edges {
93+
node {
94+
kind
95+
view
96+
create
97+
update
98+
delete
99+
}
100+
}
101+
}
91102
}
92103
}
93104
`;
@@ -156,6 +167,17 @@ export const GET_PREFIX = gql`
156167
}
157168
}
158169
}
170+
permissions {
171+
edges {
172+
node {
173+
kind
174+
view
175+
create
176+
update
177+
delete
178+
}
179+
}
180+
}
159181
}
160182
}
161183
`;

frontend/app/src/graphql/queries/proposed-changes/getProposedChanges.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,17 @@ export const GET_PROPOSED_CHANGES = gql`
6969
}
7070
__typename
7171
}
72+
permissions {
73+
edges {
74+
node {
75+
kind
76+
view
77+
create
78+
update
79+
delete
80+
}
81+
}
82+
}
7283
__typename
7384
}
7485
CoreProposedChangeVisible: CoreProposedChange(state__values: $statesVisible) {

frontend/app/src/graphql/queries/proposed-changes/getProposedChangesObjectThreads.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,17 @@ query getProposedChangesThreadsFor{{kind}} {
1616
}
1717
}
1818
}
19+
permissions {
20+
edges {
21+
node {
22+
kind
23+
view
24+
create
25+
update
26+
delete
27+
}
28+
}
29+
}
1930
}
2031
}
2132
`);

frontend/app/src/graphql/queries/role-management/getAccounts.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,17 @@ export const GET_ROLE_MANAGEMENT_ACCOUNTS = gql`
3232
}
3333
}
3434
}
35+
permissions {
36+
edges {
37+
node {
38+
kind
39+
view
40+
create
41+
update
42+
delete
43+
}
44+
}
45+
}
3546
}
3647
}
3748
`;

0 commit comments

Comments
 (0)