diff --git a/apps/console/src/pages/iam/memberships/MembershipLayout.tsx b/apps/console/src/pages/iam/memberships/MembershipLayout.tsx
index 22de039a2..27e15d615 100644
--- a/apps/console/src/pages/iam/memberships/MembershipLayout.tsx
+++ b/apps/console/src/pages/iam/memberships/MembershipLayout.tsx
@@ -19,6 +19,7 @@ export const membershipLayoutQuery = graphql`
}
}
viewer @required(action: THROW) {
+ ...SidebarFragment @arguments(organizationId: $organizationId)
...MembershipsDropdown_viewerFragment
pendingInvitations @required(action: THROW) {
totalCount @required(action: THROW)
@@ -67,7 +68,7 @@ export function MembershipLayout(props: {
>
}
- sidebar={}
+ sidebar={}
>
diff --git a/apps/console/src/pages/iam/memberships/__generated__/MembershipLayoutQuery.graphql.ts b/apps/console/src/pages/iam/memberships/__generated__/MembershipLayoutQuery.graphql.ts
index 2f4229d0b..2cf2fcdc4 100644
--- a/apps/console/src/pages/iam/memberships/__generated__/MembershipLayoutQuery.graphql.ts
+++ b/apps/console/src/pages/iam/memberships/__generated__/MembershipLayoutQuery.graphql.ts
@@ -1,5 +1,5 @@
/**
- * @generated SignedSource<<5ad02f9e0c07f5e9900005150f93d6fe>>
+ * @generated SignedSource<<90e5e1f754a2b18caa9b6f4f208ec5a8>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -21,7 +21,7 @@ export type MembershipLayoutQuery$data = {
readonly pendingInvitations: {
readonly totalCount: number;
};
- readonly " $fragmentSpreads": FragmentRefs<"MembershipsDropdown_viewerFragment">;
+ readonly " $fragmentSpreads": FragmentRefs<"MembershipsDropdown_viewerFragment" | "SidebarFragment">;
};
};
export type MembershipLayoutQuery = {
@@ -37,21 +37,22 @@ var v0 = [
"name": "organizationId"
}
],
-v1 = [
- {
- "kind": "Variable",
- "name": "id",
- "variableName": "organizationId"
- }
+v1 = {
+ "kind": "Variable",
+ "name": "id",
+ "variableName": "organizationId"
+},
+v2 = [
+ (v1/*: any*/)
],
-v2 = {
+v3 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "totalCount",
"storageKey": null
},
-v3 = {
+v4 = {
"alias": null,
"args": null,
"kind": "ScalarField",
@@ -69,7 +70,7 @@ return {
"kind": "RequiredField",
"field": {
"alias": "organization",
- "args": (v1/*: any*/),
+ "args": (v2/*: any*/),
"concreteType": null,
"kind": "LinkedField",
"name": "node",
@@ -107,6 +108,17 @@ return {
"name": "viewer",
"plural": false,
"selections": [
+ {
+ "args": [
+ {
+ "kind": "Variable",
+ "name": "organizationId",
+ "variableName": "organizationId"
+ }
+ ],
+ "kind": "FragmentSpread",
+ "name": "SidebarFragment"
+ },
{
"args": null,
"kind": "FragmentSpread",
@@ -124,7 +136,7 @@ return {
"selections": [
{
"kind": "RequiredField",
- "field": (v2/*: any*/),
+ "field": (v3/*: any*/),
"action": "THROW"
}
],
@@ -149,7 +161,7 @@ return {
"selections": [
{
"alias": "organization",
- "args": (v1/*: any*/),
+ "args": (v2/*: any*/),
"concreteType": null,
"kind": "LinkedField",
"name": "node",
@@ -195,7 +207,7 @@ return {
"name": "email",
"storageKey": null
},
- (v3/*: any*/)
+ (v4/*: any*/)
],
"storageKey": null
},
@@ -214,11 +226,11 @@ return {
"name": "fullName",
"storageKey": null
},
- (v3/*: any*/)
+ (v4/*: any*/)
],
"storageKey": null
},
- (v3/*: any*/)
+ (v4/*: any*/)
],
"storageKey": null
}
@@ -226,7 +238,7 @@ return {
"type": "Organization",
"abstractKey": null
},
- (v3/*: any*/)
+ (v4/*: any*/)
],
"storageKey": null
},
@@ -238,6 +250,272 @@ return {
"name": "viewer",
"plural": false,
"selections": [
+ {
+ "alias": "canListMeetings",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:meeting:list"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListTasks",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:task:list"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListMeasures",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:measures:list"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListRisks",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:risk:list"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListFrameworks",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:frameworks:list"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListPeople",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:people:list"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListVendors",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:vendor:list"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListDocuments",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:document:list"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListAssets",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:asset:list"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListData",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:datum:list"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListAudits",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:audit:list"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListNonconformities",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:nonconformity:list"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListObligations",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:obligation:list"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListContinualImprovements",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:continual-improvement:list"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListProcessingActivities",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:processing-activity:list"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListStatesOfApplicability",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:state-of-applicability:list"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListSnapshots",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:snapshot:list"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canGetTrustCenter",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:trust-center:get"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canUpdateOrganization",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "iam:organization:update"
+ },
+ (v1/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
{
"alias": null,
"args": null,
@@ -246,27 +524,27 @@ return {
"name": "pendingInvitations",
"plural": false,
"selections": [
- (v2/*: any*/)
+ (v3/*: any*/)
],
"storageKey": null
},
- (v3/*: any*/)
+ (v4/*: any*/)
],
"storageKey": null
}
]
},
"params": {
- "cacheID": "1fcebe9376b82798d829d98e2bdabaf3",
+ "cacheID": "1fb1002661548737fdb22694a23bca35",
"id": null,
"metadata": {},
"name": "MembershipLayoutQuery",
"operationKind": "query",
- "text": "query MembershipLayoutQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n ... on Organization {\n ...MembershipsDropdown_organizationFragment\n ...SessionDropdownFragment\n }\n id\n }\n viewer {\n ...MembershipsDropdown_viewerFragment\n pendingInvitations {\n totalCount\n }\n id\n }\n}\n\nfragment MembershipsDropdown_organizationFragment on Organization {\n name\n}\n\nfragment MembershipsDropdown_viewerFragment on Identity {\n pendingInvitations {\n totalCount\n }\n}\n\nfragment SessionDropdownFragment on Organization {\n viewerMembership {\n identity {\n email\n id\n }\n profile {\n fullName\n id\n }\n id\n }\n}\n"
+ "text": "query MembershipLayoutQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n ... on Organization {\n ...MembershipsDropdown_organizationFragment\n ...SessionDropdownFragment\n }\n id\n }\n viewer {\n ...SidebarFragment_4xMPKw\n ...MembershipsDropdown_viewerFragment\n pendingInvitations {\n totalCount\n }\n id\n }\n}\n\nfragment MembershipsDropdown_organizationFragment on Organization {\n name\n}\n\nfragment MembershipsDropdown_viewerFragment on Identity {\n pendingInvitations {\n totalCount\n }\n}\n\nfragment SessionDropdownFragment on Organization {\n viewerMembership {\n identity {\n email\n id\n }\n profile {\n fullName\n id\n }\n id\n }\n}\n\nfragment SidebarFragment_4xMPKw on Identity {\n canListMeetings: permission(action: \"core:meeting:list\", id: $organizationId)\n canListTasks: permission(action: \"core:task:list\", id: $organizationId)\n canListMeasures: permission(action: \"core:measures:list\", id: $organizationId)\n canListRisks: permission(action: \"core:risk:list\", id: $organizationId)\n canListFrameworks: permission(action: \"core:frameworks:list\", id: $organizationId)\n canListPeople: permission(action: \"core:people:list\", id: $organizationId)\n canListVendors: permission(action: \"core:vendor:list\", id: $organizationId)\n canListDocuments: permission(action: \"core:document:list\", id: $organizationId)\n canListAssets: permission(action: \"core:asset:list\", id: $organizationId)\n canListData: permission(action: \"core:datum:list\", id: $organizationId)\n canListAudits: permission(action: \"core:audit:list\", id: $organizationId)\n canListNonconformities: permission(action: \"core:nonconformity:list\", id: $organizationId)\n canListObligations: permission(action: \"core:obligation:list\", id: $organizationId)\n canListContinualImprovements: permission(action: \"core:continual-improvement:list\", id: $organizationId)\n canListProcessingActivities: permission(action: \"core:processing-activity:list\", id: $organizationId)\n canListStatesOfApplicability: permission(action: \"core:state-of-applicability:list\", id: $organizationId)\n canListSnapshots: permission(action: \"core:snapshot:list\", id: $organizationId)\n canGetTrustCenter: permission(action: \"core:trust-center:get\", id: $organizationId)\n canUpdateOrganization: permission(action: \"iam:organization:update\", id: $organizationId)\n}\n"
}
};
})();
-(node as any).hash = "c703bc4dce3307a22e42b5fa528537b2";
+(node as any).hash = "bea3f973a014e38e291ecd177da5c5f5";
export default node;
diff --git a/apps/console/src/pages/iam/memberships/_components/Sidebar.tsx b/apps/console/src/pages/iam/memberships/_components/Sidebar.tsx
index d8e48eb67..965c14b2f 100644
--- a/apps/console/src/pages/iam/memberships/_components/Sidebar.tsx
+++ b/apps/console/src/pages/iam/memberships/_components/Sidebar.tsx
@@ -1,5 +1,3 @@
-import { use } from "react";
-import { PermissionsContext } from "/providers/PermissionsContext";
import {
IconBank,
IconBook,
@@ -24,144 +22,210 @@ import {
} from "@probo/ui";
import { useTranslate } from "@probo/i18n";
import { useOrganizationId } from "/hooks/useOrganizationId";
+import { graphql } from "relay-runtime";
+import { useFragment } from "react-relay";
+import type { SidebarFragment$key } from "./__generated__/SidebarFragment.graphql";
+
+const fragment = graphql`
+ fragment SidebarFragment on Identity
+ @argumentDefinitions(organizationId: { type: "ID!" }) {
+ canListMeetings: permission(
+ action: "core:meeting:list"
+ id: $organizationId
+ )
+ canListTasks: permission(action: "core:task:list", id: $organizationId)
+ canListMeasures: permission(
+ action: "core:measures:list"
+ id: $organizationId
+ )
+ canListRisks: permission(action: "core:risk:list", id: $organizationId)
+ canListFrameworks: permission(
+ action: "core:frameworks:list"
+ id: $organizationId
+ )
+ canListPeople: permission(action: "core:people:list", id: $organizationId)
+ canListVendors: permission(action: "core:vendor:list", id: $organizationId)
+ canListDocuments: permission(
+ action: "core:document:list"
+ id: $organizationId
+ )
+ canListAssets: permission(action: "core:asset:list", id: $organizationId)
+ canListData: permission(action: "core:datum:list", id: $organizationId)
+ canListAudits: permission(action: "core:audit:list", id: $organizationId)
+ canListNonconformities: permission(
+ action: "core:nonconformity:list"
+ id: $organizationId
+ )
+ canListObligations: permission(
+ action: "core:obligation:list"
+ id: $organizationId
+ )
+ canListContinualImprovements: permission(
+ action: "core:continual-improvement:list"
+ id: $organizationId
+ )
+ canListProcessingActivities: permission(
+ action: "core:processing-activity:list"
+ id: $organizationId
+ )
+ canListStatesOfApplicability: permission(
+ action: "core:state-of-applicability:list"
+ id: $organizationId
+ )
+ canListSnapshots: permission(
+ action: "core:snapshot:list"
+ id: $organizationId
+ )
+ canGetTrustCenter: permission(
+ action: "core:trust-center:get"
+ id: $organizationId
+ )
+ canUpdateOrganization: permission(
+ action: "iam:organization:update"
+ id: $organizationId
+ )
+ }
+`;
+
+export function Sidebar(props: { fKey: SidebarFragment$key }) {
+ const { fKey } = props;
-export function Sidebar() {
const { __ } = useTranslate();
const organizationId = useOrganizationId();
- const { isAuthorized } = use(PermissionsContext);
+ const permissions = useFragment(fragment, fKey);
const prefix = `/organizations/${organizationId}`;
return (
- {isAuthorized("Organization", "listMeetings") && (
+ {permissions.canListMeetings && (
)}
- {isAuthorized("Organization", "listTasks") && (
+ {permissions.canListTasks && (
)}
- {isAuthorized("Organization", "listMeasures") && (
+ {permissions.canListMeasures && (
)}
- {isAuthorized("Organization", "listRisks") && (
+ {permissions.canListRisks && (
)}
- {isAuthorized("Organization", "listFrameworks") && (
+ {permissions.canListFrameworks && (
)}
- {isAuthorized("Organization", "listPeople") && (
+ {permissions.canListPeople && (
)}
- {isAuthorized("Organization", "listVendors") && (
+ {permissions.canListVendors && (
)}
- {isAuthorized("Organization", "listDocuments") && (
+ {permissions.canListDocuments && (
)}
- {isAuthorized("Organization", "listAssets") && (
+ {permissions.canListAssets && (
)}
- {isAuthorized("Organization", "listData") && (
+ {permissions.canListData && (
)}
- {isAuthorized("Organization", "listAudits") && (
+ {permissions.canListAudits && (
)}
- {isAuthorized("Organization", "listNonconformities") && (
+ {permissions.canListNonconformities && (
)}
- {isAuthorized("Organization", "listObligations") && (
+ {permissions.canListObligations && (
)}
- {isAuthorized("Organization", "listContinualImprovements") && (
+ {permissions.canListContinualImprovements && (
)}
- {isAuthorized("Organization", "listProcessingActivities") && (
+ {permissions.canListProcessingActivities && (
)}
- {isAuthorized("Organization", "listStatesOfApplicability") && (
+ {permissions.canListStatesOfApplicability && (
)}
- {isAuthorized("Organization", "listSnapshots") && (
+ {permissions.canListSnapshots && (
)}
- {isAuthorized("Organization", "getTrustCenter") && (
+ {permissions.canGetTrustCenter && (
)}
- {isAuthorized("Organization", "listMembers") && (
+ {permissions.canUpdateOrganization && (
>
+ * @lightSyntaxTransform
+ * @nogrep
+ */
+
+/* tslint:disable */
+/* eslint-disable */
+// @ts-nocheck
+
+import { ReaderFragment } from 'relay-runtime';
+import { FragmentRefs } from "relay-runtime";
+export type SidebarFragment$data = {
+ readonly canGetTrustCenter: boolean;
+ readonly canListAssets: boolean;
+ readonly canListAudits: boolean;
+ readonly canListContinualImprovements: boolean;
+ readonly canListData: boolean;
+ readonly canListDocuments: boolean;
+ readonly canListFrameworks: boolean;
+ readonly canListMeasures: boolean;
+ readonly canListMeetings: boolean;
+ readonly canListNonconformities: boolean;
+ readonly canListObligations: boolean;
+ readonly canListPeople: boolean;
+ readonly canListProcessingActivities: boolean;
+ readonly canListRisks: boolean;
+ readonly canListSnapshots: boolean;
+ readonly canListStatesOfApplicability: boolean;
+ readonly canListTasks: boolean;
+ readonly canListVendors: boolean;
+ readonly canUpdateOrganization: boolean;
+ readonly " $fragmentType": "SidebarFragment";
+};
+export type SidebarFragment$key = {
+ readonly " $data"?: SidebarFragment$data;
+ readonly " $fragmentSpreads": FragmentRefs<"SidebarFragment">;
+};
+
+const node: ReaderFragment = (function(){
+var v0 = {
+ "kind": "Variable",
+ "name": "id",
+ "variableName": "organizationId"
+};
+return {
+ "argumentDefinitions": [
+ {
+ "defaultValue": null,
+ "kind": "LocalArgument",
+ "name": "organizationId"
+ }
+ ],
+ "kind": "Fragment",
+ "metadata": null,
+ "name": "SidebarFragment",
+ "selections": [
+ {
+ "alias": "canListMeetings",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:meeting:list"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListTasks",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:task:list"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListMeasures",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:measures:list"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListRisks",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:risk:list"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListFrameworks",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:frameworks:list"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListPeople",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:people:list"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListVendors",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:vendor:list"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListDocuments",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:document:list"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListAssets",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:asset:list"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListData",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:datum:list"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListAudits",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:audit:list"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListNonconformities",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:nonconformity:list"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListObligations",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:obligation:list"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListContinualImprovements",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:continual-improvement:list"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListProcessingActivities",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:processing-activity:list"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListStatesOfApplicability",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:state-of-applicability:list"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canListSnapshots",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:snapshot:list"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canGetTrustCenter",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "core:trust-center:get"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ },
+ {
+ "alias": "canUpdateOrganization",
+ "args": [
+ {
+ "kind": "Literal",
+ "name": "action",
+ "value": "iam:organization:update"
+ },
+ (v0/*: any*/)
+ ],
+ "kind": "ScalarField",
+ "name": "permission",
+ "storageKey": null
+ }
+ ],
+ "type": "Identity",
+ "abstractKey": null
+};
+})();
+
+(node as any).hash = "a116eb6c3f1c2808f90316b34ef43979";
+
+export default node;
diff --git a/pkg/iam/iam_actions.go b/pkg/iam/iam_actions.go
index 276b4200a..560f18bd8 100644
--- a/pkg/iam/iam_actions.go
+++ b/pkg/iam/iam_actions.go
@@ -49,6 +49,7 @@ const (
// Membership actions
ActionIAMMembershipGet = "iam:membership:get"
+ ActionIAMMembershipLit = "iam:membership:list"
ActionIAMMembershipUpdate = "iam:membership:update"
// Personal API Key actions