Plug sidebar permissions

Signed-off-by: Émile Ré <nemile.re@gmail.com>
This commit is contained in:
Émile Ré
2025-12-24 12:08:24 +01:00
committed by Bryan Frimin
parent 7b119b565f
commit 80762de99b
5 changed files with 722 additions and 46 deletions

View File

@@ -19,6 +19,7 @@ export const membershipLayoutQuery = graphql`
} }
} }
viewer @required(action: THROW) { viewer @required(action: THROW) {
...SidebarFragment @arguments(organizationId: $organizationId)
...MembershipsDropdown_viewerFragment ...MembershipsDropdown_viewerFragment
pendingInvitations @required(action: THROW) { pendingInvitations @required(action: THROW) {
totalCount @required(action: THROW) totalCount @required(action: THROW)
@@ -67,7 +68,7 @@ export function MembershipLayout(props: {
</Suspense> </Suspense>
</> </>
} }
sidebar={<Sidebar />} sidebar={<Sidebar fKey={viewer} />}
> >
<CoreRelayProvider> <CoreRelayProvider>
<Outlet /> <Outlet />

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<5ad02f9e0c07f5e9900005150f93d6fe>> * @generated SignedSource<<90e5e1f754a2b18caa9b6f4f208ec5a8>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -21,7 +21,7 @@ export type MembershipLayoutQuery$data = {
readonly pendingInvitations: { readonly pendingInvitations: {
readonly totalCount: number; readonly totalCount: number;
}; };
readonly " $fragmentSpreads": FragmentRefs<"MembershipsDropdown_viewerFragment">; readonly " $fragmentSpreads": FragmentRefs<"MembershipsDropdown_viewerFragment" | "SidebarFragment">;
}; };
}; };
export type MembershipLayoutQuery = { export type MembershipLayoutQuery = {
@@ -37,21 +37,22 @@ var v0 = [
"name": "organizationId" "name": "organizationId"
} }
], ],
v1 = [ v1 = {
{ "kind": "Variable",
"kind": "Variable", "name": "id",
"name": "id", "variableName": "organizationId"
"variableName": "organizationId" },
} v2 = [
(v1/*: any*/)
], ],
v2 = { v3 = {
"alias": null, "alias": null,
"args": null, "args": null,
"kind": "ScalarField", "kind": "ScalarField",
"name": "totalCount", "name": "totalCount",
"storageKey": null "storageKey": null
}, },
v3 = { v4 = {
"alias": null, "alias": null,
"args": null, "args": null,
"kind": "ScalarField", "kind": "ScalarField",
@@ -69,7 +70,7 @@ return {
"kind": "RequiredField", "kind": "RequiredField",
"field": { "field": {
"alias": "organization", "alias": "organization",
"args": (v1/*: any*/), "args": (v2/*: any*/),
"concreteType": null, "concreteType": null,
"kind": "LinkedField", "kind": "LinkedField",
"name": "node", "name": "node",
@@ -107,6 +108,17 @@ return {
"name": "viewer", "name": "viewer",
"plural": false, "plural": false,
"selections": [ "selections": [
{
"args": [
{
"kind": "Variable",
"name": "organizationId",
"variableName": "organizationId"
}
],
"kind": "FragmentSpread",
"name": "SidebarFragment"
},
{ {
"args": null, "args": null,
"kind": "FragmentSpread", "kind": "FragmentSpread",
@@ -124,7 +136,7 @@ return {
"selections": [ "selections": [
{ {
"kind": "RequiredField", "kind": "RequiredField",
"field": (v2/*: any*/), "field": (v3/*: any*/),
"action": "THROW" "action": "THROW"
} }
], ],
@@ -149,7 +161,7 @@ return {
"selections": [ "selections": [
{ {
"alias": "organization", "alias": "organization",
"args": (v1/*: any*/), "args": (v2/*: any*/),
"concreteType": null, "concreteType": null,
"kind": "LinkedField", "kind": "LinkedField",
"name": "node", "name": "node",
@@ -195,7 +207,7 @@ return {
"name": "email", "name": "email",
"storageKey": null "storageKey": null
}, },
(v3/*: any*/) (v4/*: any*/)
], ],
"storageKey": null "storageKey": null
}, },
@@ -214,11 +226,11 @@ return {
"name": "fullName", "name": "fullName",
"storageKey": null "storageKey": null
}, },
(v3/*: any*/) (v4/*: any*/)
], ],
"storageKey": null "storageKey": null
}, },
(v3/*: any*/) (v4/*: any*/)
], ],
"storageKey": null "storageKey": null
} }
@@ -226,7 +238,7 @@ return {
"type": "Organization", "type": "Organization",
"abstractKey": null "abstractKey": null
}, },
(v3/*: any*/) (v4/*: any*/)
], ],
"storageKey": null "storageKey": null
}, },
@@ -238,6 +250,272 @@ return {
"name": "viewer", "name": "viewer",
"plural": false, "plural": false,
"selections": [ "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, "alias": null,
"args": null, "args": null,
@@ -246,27 +524,27 @@ return {
"name": "pendingInvitations", "name": "pendingInvitations",
"plural": false, "plural": false,
"selections": [ "selections": [
(v2/*: any*/) (v3/*: any*/)
], ],
"storageKey": null "storageKey": null
}, },
(v3/*: any*/) (v4/*: any*/)
], ],
"storageKey": null "storageKey": null
} }
] ]
}, },
"params": { "params": {
"cacheID": "1fcebe9376b82798d829d98e2bdabaf3", "cacheID": "1fb1002661548737fdb22694a23bca35",
"id": null, "id": null,
"metadata": {}, "metadata": {},
"name": "MembershipLayoutQuery", "name": "MembershipLayoutQuery",
"operationKind": "query", "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; export default node;

View File

@@ -1,5 +1,3 @@
import { use } from "react";
import { PermissionsContext } from "/providers/PermissionsContext";
import { import {
IconBank, IconBank,
IconBook, IconBook,
@@ -24,144 +22,210 @@ import {
} from "@probo/ui"; } from "@probo/ui";
import { useTranslate } from "@probo/i18n"; import { useTranslate } from "@probo/i18n";
import { useOrganizationId } from "/hooks/useOrganizationId"; 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 { __ } = useTranslate();
const organizationId = useOrganizationId(); const organizationId = useOrganizationId();
const { isAuthorized } = use(PermissionsContext); const permissions = useFragment<SidebarFragment$key>(fragment, fKey);
const prefix = `/organizations/${organizationId}`; const prefix = `/organizations/${organizationId}`;
return ( return (
<ul className="space-y-[2px]"> <ul className="space-y-[2px]">
{isAuthorized("Organization", "listMeetings") && ( {permissions.canListMeetings && (
<SidebarItem <SidebarItem
label={__("Meetings")} label={__("Meetings")}
icon={IconCalendar1} icon={IconCalendar1}
to={`${prefix}/meetings`} to={`${prefix}/meetings`}
/> />
)} )}
{isAuthorized("Organization", "listTasks") && ( {permissions.canListTasks && (
<SidebarItem <SidebarItem
label={__("Tasks")} label={__("Tasks")}
icon={IconInboxEmpty} icon={IconInboxEmpty}
to={`${prefix}/tasks`} to={`${prefix}/tasks`}
/> />
)} )}
{isAuthorized("Organization", "listMeasures") && ( {permissions.canListMeasures && (
<SidebarItem <SidebarItem
label={__("Measures")} label={__("Measures")}
icon={IconTodo} icon={IconTodo}
to={`${prefix}/measures`} to={`${prefix}/measures`}
/> />
)} )}
{isAuthorized("Organization", "listRisks") && ( {permissions.canListRisks && (
<SidebarItem <SidebarItem
label={__("Risks")} label={__("Risks")}
icon={IconFire3} icon={IconFire3}
to={`${prefix}/risks`} to={`${prefix}/risks`}
/> />
)} )}
{isAuthorized("Organization", "listFrameworks") && ( {permissions.canListFrameworks && (
<SidebarItem <SidebarItem
label={__("Frameworks")} label={__("Frameworks")}
icon={IconBank} icon={IconBank}
to={`${prefix}/frameworks`} to={`${prefix}/frameworks`}
/> />
)} )}
{isAuthorized("Organization", "listPeople") && ( {permissions.canListPeople && (
<SidebarItem <SidebarItem
label={__("People")} label={__("People")}
icon={IconGroup1} icon={IconGroup1}
to={`${prefix}/people`} to={`${prefix}/people`}
/> />
)} )}
{isAuthorized("Organization", "listVendors") && ( {permissions.canListVendors && (
<SidebarItem <SidebarItem
label={__("Vendors")} label={__("Vendors")}
icon={IconStore} icon={IconStore}
to={`${prefix}/vendors`} to={`${prefix}/vendors`}
/> />
)} )}
{isAuthorized("Organization", "listDocuments") && ( {permissions.canListDocuments && (
<SidebarItem <SidebarItem
label={__("Documents")} label={__("Documents")}
icon={IconPageTextLine} icon={IconPageTextLine}
to={`${prefix}/documents`} to={`${prefix}/documents`}
/> />
)} )}
{isAuthorized("Organization", "listAssets") && ( {permissions.canListAssets && (
<SidebarItem <SidebarItem
label={__("Assets")} label={__("Assets")}
icon={IconBox} icon={IconBox}
to={`${prefix}/assets`} to={`${prefix}/assets`}
/> />
)} )}
{isAuthorized("Organization", "listData") && ( {permissions.canListData && (
<SidebarItem <SidebarItem
label={__("Data")} label={__("Data")}
icon={IconListStack} icon={IconListStack}
to={`${prefix}/data`} to={`${prefix}/data`}
/> />
)} )}
{isAuthorized("Organization", "listAudits") && ( {permissions.canListAudits && (
<SidebarItem <SidebarItem
label={__("Audits")} label={__("Audits")}
icon={IconMedal} icon={IconMedal}
to={`${prefix}/audits`} to={`${prefix}/audits`}
/> />
)} )}
{isAuthorized("Organization", "listNonconformities") && ( {permissions.canListNonconformities && (
<SidebarItem <SidebarItem
label={__("Nonconformities")} label={__("Nonconformities")}
icon={IconCrossLargeX} icon={IconCrossLargeX}
to={`${prefix}/nonconformities`} to={`${prefix}/nonconformities`}
/> />
)} )}
{isAuthorized("Organization", "listObligations") && ( {permissions.canListObligations && (
<SidebarItem <SidebarItem
label={__("Obligations")} label={__("Obligations")}
icon={IconBook} icon={IconBook}
to={`${prefix}/obligations`} to={`${prefix}/obligations`}
/> />
)} )}
{isAuthorized("Organization", "listContinualImprovements") && ( {permissions.canListContinualImprovements && (
<SidebarItem <SidebarItem
label={__("Continual Improvements")} label={__("Continual Improvements")}
icon={IconRotateCw} icon={IconRotateCw}
to={`${prefix}/continual-improvements`} to={`${prefix}/continual-improvements`}
/> />
)} )}
{isAuthorized("Organization", "listProcessingActivities") && ( {permissions.canListProcessingActivities && (
<SidebarItem <SidebarItem
label={__("Processing Activities")} label={__("Processing Activities")}
icon={IconCircleProgress} icon={IconCircleProgress}
to={`${prefix}/processing-activities`} to={`${prefix}/processing-activities`}
/> />
)} )}
{isAuthorized("Organization", "listStatesOfApplicability") && ( {permissions.canListStatesOfApplicability && (
<SidebarItem <SidebarItem
label={__("States of Applicability")} label={__("States of Applicability")}
icon={IconPageCheck} icon={IconPageCheck}
to={`${prefix}/states-of-applicability`} to={`${prefix}/states-of-applicability`}
/> />
)} )}
{isAuthorized("Organization", "listSnapshots") && ( {permissions.canListSnapshots && (
<SidebarItem <SidebarItem
label={__("Snapshots")} label={__("Snapshots")}
icon={IconClock} icon={IconClock}
to={`${prefix}/snapshots`} to={`${prefix}/snapshots`}
/> />
)} )}
{isAuthorized("Organization", "getTrustCenter") && ( {permissions.canGetTrustCenter && (
<SidebarItem <SidebarItem
label={__("Trust Center")} label={__("Trust Center")}
icon={IconShield} icon={IconShield}
to={`${prefix}/trust-center`} to={`${prefix}/trust-center`}
/> />
)} )}
{isAuthorized("Organization", "listMembers") && ( {permissions.canUpdateOrganization && (
<SidebarItem <SidebarItem
label={__("Settings")} label={__("Settings")}
icon={IconSettingsGear2} icon={IconSettingsGear2}

View File

@@ -0,0 +1,332 @@
/**
* @generated SignedSource<<d7cb6d45a4e2a8960d1984e0e1f74b0a>>
* @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;

View File

@@ -49,6 +49,7 @@ const (
// Membership actions // Membership actions
ActionIAMMembershipGet = "iam:membership:get" ActionIAMMembershipGet = "iam:membership:get"
ActionIAMMembershipLit = "iam:membership:list"
ActionIAMMembershipUpdate = "iam:membership:update" ActionIAMMembershipUpdate = "iam:membership:update"
// Personal API Key actions // Personal API Key actions