Rework people list and trust center access list + edit dialog

Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
Émile Ré
2026-03-05 14:32:28 +04:00
parent 4279f92d96
commit 0d1bcd21aa
17 changed files with 707 additions and 578 deletions

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<7c575bd72e0d697cf92b9dd57038995c>> * @generated SignedSource<<b9fc06fe9a0b5d316298bb77804e29b1>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -31,12 +31,8 @@ export type CompliancePageAccessEditDialogUpdateMutation$data = {
readonly trustCenterAccess: { readonly trustCenterAccess: {
readonly activeCount: number; readonly activeCount: number;
readonly createdAt: string; readonly createdAt: string;
readonly email: string;
readonly hasAcceptedNonDisclosureAgreement: boolean;
readonly id: string; readonly id: string;
readonly name: string;
readonly pendingRequestCount: number; readonly pendingRequestCount: number;
readonly state: TrustCenterAccessState;
readonly updatedAt: string; readonly updatedAt: string;
}; };
}; };
@@ -84,34 +80,6 @@ v1 = [
"name": "id", "name": "id",
"storageKey": null "storageKey": null
}, },
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "email",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "state",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "hasAcceptedNonDisclosureAgreement",
"storageKey": null
},
{ {
"alias": null, "alias": null,
"args": null, "args": null,
@@ -165,16 +133,16 @@ return {
"selections": (v1/*: any*/) "selections": (v1/*: any*/)
}, },
"params": { "params": {
"cacheID": "e8401f17211bce414eee9048b939235a", "cacheID": "39cf57753ab2bd46878a9200ef892894",
"id": null, "id": null,
"metadata": {}, "metadata": {},
"name": "CompliancePageAccessEditDialogUpdateMutation", "name": "CompliancePageAccessEditDialogUpdateMutation",
"operationKind": "mutation", "operationKind": "mutation",
"text": "mutation CompliancePageAccessEditDialogUpdateMutation(\n $input: UpdateTrustCenterAccessInput!\n) {\n updateTrustCenterAccess(input: $input) {\n trustCenterAccess {\n id\n email\n name\n state\n hasAcceptedNonDisclosureAgreement\n createdAt\n updatedAt\n pendingRequestCount\n activeCount\n }\n }\n}\n" "text": "mutation CompliancePageAccessEditDialogUpdateMutation(\n $input: UpdateTrustCenterAccessInput!\n) {\n updateTrustCenterAccess(input: $input) {\n trustCenterAccess {\n id\n createdAt\n updatedAt\n pendingRequestCount\n activeCount\n }\n }\n}\n"
} }
}; };
})(); })();
(node as any).hash = "e511d9060cc29db26cd6ff281fe2722b"; (node as any).hash = "896760c6c5c2d6adfca8ffcd7c7e22c7";
export default node; export default node;

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<97bc9b075b82bb1543c80843430ced5d>> * @generated SignedSource<<382df5177a666b0cc6c3feef198c8354>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -10,20 +10,22 @@
import { ReaderFragment } from 'relay-runtime'; import { ReaderFragment } from 'relay-runtime';
export type ElectronicSignatureStatus = "ACCEPTED" | "COMPLETED" | "FAILED" | "PENDING" | "PROCESSING"; export type ElectronicSignatureStatus = "ACCEPTED" | "COMPLETED" | "FAILED" | "PENDING" | "PROCESSING";
export type TrustCenterAccessState = "ACTIVE" | "INACTIVE"; export type ProfileState = "ACTIVE" | "INACTIVE";
import { FragmentRefs } from "relay-runtime"; import { FragmentRefs } from "relay-runtime";
export type CompliancePageAccessListItemFragment$data = { export type CompliancePageAccessListItemFragment$data = {
readonly activeCount: number; readonly activeCount: number;
readonly canUpdate: boolean; readonly canUpdate: boolean;
readonly createdAt: string; readonly createdAt: string;
readonly email: string;
readonly id: string; readonly id: string;
readonly name: string;
readonly ndaSignature: { readonly ndaSignature: {
readonly status: ElectronicSignatureStatus; readonly status: ElectronicSignatureStatus;
} | null | undefined; } | null | undefined;
readonly pendingRequestCount: number; readonly pendingRequestCount: number;
readonly state: TrustCenterAccessState; readonly profile: {
readonly emailAddress: string;
readonly fullName: string;
readonly state: ProfileState;
};
readonly " $fragmentType": "CompliancePageAccessListItemFragment"; readonly " $fragmentType": "CompliancePageAccessListItemFragment";
}; };
export type CompliancePageAccessListItemFragment$key = { export type CompliancePageAccessListItemFragment$key = {
@@ -44,20 +46,6 @@ const node: ReaderFragment = {
"name": "id", "name": "id",
"storageKey": null "storageKey": null
}, },
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "email",
"storageKey": null
},
{ {
"alias": null, "alias": null,
"args": null, "args": null,
@@ -68,8 +56,33 @@ const node: ReaderFragment = {
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"kind": "ScalarField", "concreteType": "Profile",
"name": "state", "kind": "LinkedField",
"name": "profile",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "fullName",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "emailAddress",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "state",
"storageKey": null
}
],
"storageKey": null "storageKey": null
}, },
{ {
@@ -122,6 +135,6 @@ const node: ReaderFragment = {
"abstractKey": null "abstractKey": null
}; };
(node as any).hash = "9047d3d3f232d43c6f951c74b0395b58"; (node as any).hash = "a08d6999781177cb0896f372c570fca8";
export default node; export default node;

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<ca74f6c0f80146a4ed4e90bcee385300>> * @generated SignedSource<<2f95db3fc1f72db6d38bed52fb1e89bd>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -9,6 +9,7 @@
// @ts-nocheck // @ts-nocheck
import { ConcreteRequest } from 'relay-runtime'; import { ConcreteRequest } from 'relay-runtime';
export type ProfileState = "ACTIVE" | "INACTIVE";
export type TrustCenterAccessState = "ACTIVE" | "INACTIVE"; export type TrustCenterAccessState = "ACTIVE" | "INACTIVE";
export type TrustCenterDocumentAccessStatus = "GRANTED" | "REJECTED" | "REQUESTED" | "REVOKED"; export type TrustCenterDocumentAccessStatus = "GRANTED" | "REJECTED" | "REQUESTED" | "REVOKED";
export type UpdateTrustCenterAccessInput = { export type UpdateTrustCenterAccessInput = {
@@ -31,12 +32,13 @@ export type CompliancePageAccessListItemUpdateMutation$data = {
readonly trustCenterAccess: { readonly trustCenterAccess: {
readonly activeCount: number; readonly activeCount: number;
readonly createdAt: string; readonly createdAt: string;
readonly email: string;
readonly hasAcceptedNonDisclosureAgreement: boolean;
readonly id: string; readonly id: string;
readonly name: string;
readonly pendingRequestCount: number; readonly pendingRequestCount: number;
readonly state: TrustCenterAccessState; readonly profile: {
readonly emailAddress: string;
readonly fullName: string;
readonly state: ProfileState;
};
readonly updatedAt: string; readonly updatedAt: string;
}; };
}; };
@@ -56,104 +58,116 @@ var v0 = [
], ],
v1 = [ v1 = [
{ {
"alias": null, "kind": "Variable",
"args": [ "name": "input",
{ "variableName": "input"
"kind": "Variable",
"name": "input",
"variableName": "input"
}
],
"concreteType": "UpdateTrustCenterAccessPayload",
"kind": "LinkedField",
"name": "updateTrustCenterAccess",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "TrustCenterAccess",
"kind": "LinkedField",
"name": "trustCenterAccess",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "email",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "state",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "hasAcceptedNonDisclosureAgreement",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "createdAt",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "updatedAt",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "pendingRequestCount",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "activeCount",
"storageKey": null
}
],
"storageKey": null
}
],
"storageKey": null
} }
]; ],
v2 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
},
v3 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "createdAt",
"storageKey": null
},
v4 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "updatedAt",
"storageKey": null
},
v5 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "pendingRequestCount",
"storageKey": null
},
v6 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "activeCount",
"storageKey": null
},
v7 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "fullName",
"storageKey": null
},
v8 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "emailAddress",
"storageKey": null
},
v9 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "state",
"storageKey": null
};
return { return {
"fragment": { "fragment": {
"argumentDefinitions": (v0/*: any*/), "argumentDefinitions": (v0/*: any*/),
"kind": "Fragment", "kind": "Fragment",
"metadata": null, "metadata": null,
"name": "CompliancePageAccessListItemUpdateMutation", "name": "CompliancePageAccessListItemUpdateMutation",
"selections": (v1/*: any*/), "selections": [
{
"alias": null,
"args": (v1/*: any*/),
"concreteType": "UpdateTrustCenterAccessPayload",
"kind": "LinkedField",
"name": "updateTrustCenterAccess",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "TrustCenterAccess",
"kind": "LinkedField",
"name": "trustCenterAccess",
"plural": false,
"selections": [
(v2/*: any*/),
(v3/*: any*/),
(v4/*: any*/),
(v5/*: any*/),
(v6/*: any*/),
{
"alias": null,
"args": null,
"concreteType": "Profile",
"kind": "LinkedField",
"name": "profile",
"plural": false,
"selections": [
(v7/*: any*/),
(v8/*: any*/),
(v9/*: any*/)
],
"storageKey": null
}
],
"storageKey": null
}
],
"storageKey": null
}
],
"type": "Mutation", "type": "Mutation",
"abstractKey": null "abstractKey": null
}, },
@@ -162,19 +176,62 @@ return {
"argumentDefinitions": (v0/*: any*/), "argumentDefinitions": (v0/*: any*/),
"kind": "Operation", "kind": "Operation",
"name": "CompliancePageAccessListItemUpdateMutation", "name": "CompliancePageAccessListItemUpdateMutation",
"selections": (v1/*: any*/) "selections": [
{
"alias": null,
"args": (v1/*: any*/),
"concreteType": "UpdateTrustCenterAccessPayload",
"kind": "LinkedField",
"name": "updateTrustCenterAccess",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "TrustCenterAccess",
"kind": "LinkedField",
"name": "trustCenterAccess",
"plural": false,
"selections": [
(v2/*: any*/),
(v3/*: any*/),
(v4/*: any*/),
(v5/*: any*/),
(v6/*: any*/),
{
"alias": null,
"args": null,
"concreteType": "Profile",
"kind": "LinkedField",
"name": "profile",
"plural": false,
"selections": [
(v7/*: any*/),
(v8/*: any*/),
(v9/*: any*/),
(v2/*: any*/)
],
"storageKey": null
}
],
"storageKey": null
}
],
"storageKey": null
}
]
}, },
"params": { "params": {
"cacheID": "a943d051a8be76541af43131995defbe", "cacheID": "f8d08c05c3a5c935c68ca7ef509cf376",
"id": null, "id": null,
"metadata": {}, "metadata": {},
"name": "CompliancePageAccessListItemUpdateMutation", "name": "CompliancePageAccessListItemUpdateMutation",
"operationKind": "mutation", "operationKind": "mutation",
"text": "mutation CompliancePageAccessListItemUpdateMutation(\n $input: UpdateTrustCenterAccessInput!\n) {\n updateTrustCenterAccess(input: $input) {\n trustCenterAccess {\n id\n email\n name\n state\n hasAcceptedNonDisclosureAgreement\n createdAt\n updatedAt\n pendingRequestCount\n activeCount\n }\n }\n}\n" "text": "mutation CompliancePageAccessListItemUpdateMutation(\n $input: UpdateTrustCenterAccessInput!\n) {\n updateTrustCenterAccess(input: $input) {\n trustCenterAccess {\n id\n createdAt\n updatedAt\n pendingRequestCount\n activeCount\n profile {\n fullName\n emailAddress\n state\n id\n }\n }\n }\n}\n"
} }
}; };
})(); })();
(node as any).hash = "82b5fb2e5d6ff48f7cf660007b4366ed"; (node as any).hash = "2912ca422f9edc3806a7e1ca6cb21028";
export default node; export default node;

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<42b8a91e3553bb30392c749d440cc0c0>> * @generated SignedSource<<e4c451eec4363f38b74a938be21a9939>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -231,20 +231,6 @@ return {
"plural": false, "plural": false,
"selections": [ "selections": [
(v8/*: any*/), (v8/*: any*/),
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "email",
"storageKey": null
},
{ {
"alias": null, "alias": null,
"args": null, "args": null,
@@ -255,8 +241,34 @@ return {
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"kind": "ScalarField", "concreteType": "Profile",
"name": "state", "kind": "LinkedField",
"name": "profile",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "fullName",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "emailAddress",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "state",
"storageKey": null
},
(v8/*: any*/)
],
"storageKey": null "storageKey": null
}, },
{ {
@@ -348,12 +360,12 @@ return {
] ]
}, },
"params": { "params": {
"cacheID": "e4ac357eef4246850b334e1f8f1faab2", "cacheID": "59b4c338efea592e4e15305f84158cce",
"id": null, "id": null,
"metadata": {}, "metadata": {},
"name": "CompliancePageAccessListQuery", "name": "CompliancePageAccessListQuery",
"operationKind": "query", "operationKind": "query",
"text": "query CompliancePageAccessListQuery(\n $after: CursorKey = null\n $first: Int = 10\n $order: TrustCenterAccessOrder = {field: CREATED_AT, direction: DESC}\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ...CompliancePageAccessListFragment_gOVF5\n id\n }\n}\n\nfragment CompliancePageAccessListFragment_gOVF5 on TrustCenter {\n accesses(first: $first, after: $after, orderBy: $order) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n edges {\n cursor\n node {\n id\n ...CompliancePageAccessListItemFragment\n __typename\n }\n }\n }\n id\n}\n\nfragment CompliancePageAccessListItemFragment on TrustCenterAccess {\n id\n name\n email\n createdAt\n state\n activeCount\n pendingRequestCount\n ndaSignature {\n status\n id\n }\n canUpdate: permission(action: \"core:trust-center-access:update\")\n}\n" "text": "query CompliancePageAccessListQuery(\n $after: CursorKey = null\n $first: Int = 10\n $order: TrustCenterAccessOrder = {field: CREATED_AT, direction: DESC}\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ...CompliancePageAccessListFragment_gOVF5\n id\n }\n}\n\nfragment CompliancePageAccessListFragment_gOVF5 on TrustCenter {\n accesses(first: $first, after: $after, orderBy: $order) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n edges {\n cursor\n node {\n id\n ...CompliancePageAccessListItemFragment\n __typename\n }\n }\n }\n id\n}\n\nfragment CompliancePageAccessListItemFragment on TrustCenterAccess {\n id\n createdAt\n profile {\n fullName\n emailAddress\n state\n id\n }\n activeCount\n pendingRequestCount\n ndaSignature {\n status\n id\n }\n canUpdate: permission(action: \"core:trust-center-access:update\")\n}\n"
} }
}; };
})(); })();

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<d2b21f03826cd218a7115b28f58ca0ae>> * @generated SignedSource<<d32c91bec3630db95573556172f06d35>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -240,20 +240,6 @@ return {
"plural": false, "plural": false,
"selections": [ "selections": [
(v3/*: any*/), (v3/*: any*/),
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "email",
"storageKey": null
},
{ {
"alias": null, "alias": null,
"args": null, "args": null,
@@ -264,8 +250,34 @@ return {
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"kind": "ScalarField", "concreteType": "Profile",
"name": "state", "kind": "LinkedField",
"name": "profile",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "fullName",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "emailAddress",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "state",
"storageKey": null
},
(v3/*: any*/)
],
"storageKey": null "storageKey": null
}, },
{ {
@@ -361,12 +373,12 @@ return {
] ]
}, },
"params": { "params": {
"cacheID": "ad9508484592b38254e9cc66941b926e", "cacheID": "c556c1f73c80950e432e5298b7aa1162",
"id": null, "id": null,
"metadata": {}, "metadata": {},
"name": "CompliancePageAccessPageQuery", "name": "CompliancePageAccessPageQuery",
"operationKind": "query", "operationKind": "query",
"text": "query CompliancePageAccessPageQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n ... on Organization {\n compliancePage: trustCenter {\n id\n canCreateAccess: permission(action: \"core:trust-center-access:create\")\n ...CompliancePageAccessListFragment\n }\n }\n id\n }\n}\n\nfragment CompliancePageAccessListFragment on TrustCenter {\n accesses(first: 10, orderBy: {field: CREATED_AT, direction: DESC}) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n edges {\n cursor\n node {\n id\n ...CompliancePageAccessListItemFragment\n __typename\n }\n }\n }\n id\n}\n\nfragment CompliancePageAccessListItemFragment on TrustCenterAccess {\n id\n name\n email\n createdAt\n state\n activeCount\n pendingRequestCount\n ndaSignature {\n status\n id\n }\n canUpdate: permission(action: \"core:trust-center-access:update\")\n}\n" "text": "query CompliancePageAccessPageQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n ... on Organization {\n compliancePage: trustCenter {\n id\n canCreateAccess: permission(action: \"core:trust-center-access:create\")\n ...CompliancePageAccessListFragment\n }\n }\n id\n }\n}\n\nfragment CompliancePageAccessListFragment on TrustCenter {\n accesses(first: 10, orderBy: {field: CREATED_AT, direction: DESC}) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n edges {\n cursor\n node {\n id\n ...CompliancePageAccessListItemFragment\n __typename\n }\n }\n }\n id\n}\n\nfragment CompliancePageAccessListItemFragment on TrustCenterAccess {\n id\n createdAt\n profile {\n fullName\n emailAddress\n state\n id\n }\n activeCount\n pendingRequestCount\n ndaSignature {\n status\n id\n }\n canUpdate: permission(action: \"core:trust-center-access:update\")\n}\n"
} }
}; };
})(); })();

View File

@@ -1,5 +1,5 @@
/** /**
* @generated SignedSource<<9b82b09c2b56467a1dfa0fcdf809bc34>> * @generated SignedSource<<eab35c7d6cd3334dc38eae117619b5ec>>
* @lightSyntaxTransform * @lightSyntaxTransform
* @nogrep * @nogrep
*/ */
@@ -156,20 +156,6 @@ return {
"plural": false, "plural": false,
"selections": [ "selections": [
(v4/*: any*/), (v4/*: any*/),
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "email",
"storageKey": null
},
{ {
"alias": null, "alias": null,
"args": null, "args": null,
@@ -180,8 +166,34 @@ return {
{ {
"alias": null, "alias": null,
"args": null, "args": null,
"kind": "ScalarField", "concreteType": "Profile",
"name": "state", "kind": "LinkedField",
"name": "profile",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "fullName",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "emailAddress",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "state",
"storageKey": null
},
(v4/*: any*/)
],
"storageKey": null "storageKey": null
}, },
{ {
@@ -258,12 +270,12 @@ return {
] ]
}, },
"params": { "params": {
"cacheID": "685bbdb5f629501f61631592530f46a7", "cacheID": "da08cb11a0a3e5668078201ca7c634ef",
"id": null, "id": null,
"metadata": {}, "metadata": {},
"name": "NewCompliancePageAccessDialogMutation", "name": "NewCompliancePageAccessDialogMutation",
"operationKind": "mutation", "operationKind": "mutation",
"text": "mutation NewCompliancePageAccessDialogMutation(\n $input: CreateTrustCenterAccessInput!\n) {\n createTrustCenterAccess(input: $input) {\n trustCenterAccessEdge {\n cursor\n node {\n id\n ...CompliancePageAccessListItemFragment\n }\n }\n }\n}\n\nfragment CompliancePageAccessListItemFragment on TrustCenterAccess {\n id\n name\n email\n createdAt\n state\n activeCount\n pendingRequestCount\n ndaSignature {\n status\n id\n }\n canUpdate: permission(action: \"core:trust-center-access:update\")\n}\n" "text": "mutation NewCompliancePageAccessDialogMutation(\n $input: CreateTrustCenterAccessInput!\n) {\n createTrustCenterAccess(input: $input) {\n trustCenterAccessEdge {\n cursor\n node {\n id\n ...CompliancePageAccessListItemFragment\n }\n }\n }\n}\n\nfragment CompliancePageAccessListItemFragment on TrustCenterAccess {\n id\n createdAt\n profile {\n fullName\n emailAddress\n state\n id\n }\n activeCount\n pendingRequestCount\n ndaSignature {\n status\n id\n }\n canUpdate: permission(action: \"core:trust-center-access:update\")\n}\n"
} }
}; };
})(); })();

View File

@@ -9,7 +9,6 @@ import {
Dialog, Dialog,
DialogContent, DialogContent,
DialogFooter, DialogFooter,
Field,
Spinner, Spinner,
} from "@probo/ui"; } from "@probo/ui";
import { Suspense, useCallback, useEffect, useState } from "react"; import { Suspense, useCallback, useEffect, useState } from "react";
@@ -19,12 +18,10 @@ import {
useQueryLoader, useQueryLoader,
} from "react-relay"; } from "react-relay";
import { graphql } from "relay-runtime"; import { graphql } from "relay-runtime";
import { z } from "zod";
import type { CompliancePageAccessEditDialogQuery as CompliancePageAccessEditDialogQueryType } from "#/__generated__/core/CompliancePageAccessEditDialogQuery.graphql"; import type { CompliancePageAccessEditDialogQuery as CompliancePageAccessEditDialogQueryType } from "#/__generated__/core/CompliancePageAccessEditDialogQuery.graphql";
import type { CompliancePageAccessEditDialogUpdateMutation } from "#/__generated__/core/CompliancePageAccessEditDialogUpdateMutation.graphql"; import type { CompliancePageAccessEditDialogUpdateMutation } from "#/__generated__/core/CompliancePageAccessEditDialogUpdateMutation.graphql";
import type { CompliancePageAccessListItemFragment$data } from "#/__generated__/core/CompliancePageAccessListItemFragment.graphql"; import type { CompliancePageAccessListItemFragment$data } from "#/__generated__/core/CompliancePageAccessListItemFragment.graphql";
import { useFormWithSchema } from "#/hooks/useFormWithSchema";
import { useMutationWithToasts } from "#/hooks/useMutationWithToasts"; import { useMutationWithToasts } from "#/hooks/useMutationWithToasts";
import { CompliancePageDocumentAccessList } from "#/pages/organizations/compliance-page/access/_components/CompliancePageDocumentAccessList"; import { CompliancePageDocumentAccessList } from "#/pages/organizations/compliance-page/access/_components/CompliancePageDocumentAccessList";
import { ElectronicSignatureSection } from "#/pages/organizations/compliance-page/access/_components/ElectronicSignatureSection"; import { ElectronicSignatureSection } from "#/pages/organizations/compliance-page/access/_components/ElectronicSignatureSection";
@@ -80,10 +77,6 @@ const updateAccessMutation = graphql`
updateTrustCenterAccess(input: $input) { updateTrustCenterAccess(input: $input) {
trustCenterAccess { trustCenterAccess {
id id
email
name
state
hasAcceptedNonDisclosureAgreement
createdAt createdAt
updatedAt updatedAt
pendingRequestCount pendingRequestCount
@@ -118,7 +111,7 @@ export function CompliancePageAccessEditDialog(props: {
}, [access.id, loadQuery]); }, [access.id, loadQuery]);
return ( return (
<Dialog defaultOpen={true} title={__("Edit Access")} onClose={onClose}> <Dialog defaultOpen={true} title={__(`Edit Access for ${access.profile.emailAddress}`)} onClose={onClose}>
{queryRef && ( {queryRef && (
<Suspense> <Suspense>
<CompliancePageAccessEditForm <CompliancePageAccessEditForm
@@ -196,17 +189,6 @@ function CompliancePageAccessEditForm(props: {
); );
}, [initialStatusByID]); }, [initialStatusByID]);
const editSchema = z.object({
name: z
.string()
.min(1, __("Name is required"))
.min(2, __("Name must be at least 2 characters long")),
active: z.boolean(),
});
const editForm = useFormWithSchema(editSchema, {
defaultValues: { name: access.name, active: access.state === "ACTIVE" },
});
const [updateTrustCenterAccess, isUpdating] = useMutationWithToasts<CompliancePageAccessEditDialogUpdateMutation>( const [updateTrustCenterAccess, isUpdating] = useMutationWithToasts<CompliancePageAccessEditDialogUpdateMutation>(
updateAccessMutation, updateAccessMutation,
{ {
@@ -215,7 +197,7 @@ function CompliancePageAccessEditForm(props: {
}, },
); );
const handleSubmit = editForm.handleSubmit(async (data) => { const handleSubmit = async () => {
const documents: { id: string; status: TrustCenterDocumentAccessStatus }[] const documents: { id: string; status: TrustCenterDocumentAccessStatus }[]
= []; = [];
const reports: { id: string; status: TrustCenterDocumentAccessStatus }[] const reports: { id: string; status: TrustCenterDocumentAccessStatus }[]
@@ -248,8 +230,6 @@ function CompliancePageAccessEditForm(props: {
variables: { variables: {
input: { input: {
id: access.id, id: access.id,
name: data.name.trim(),
state: data.active ? "ACTIVE" : "INACTIVE",
documents, documents,
reports, reports,
trustCenterFiles, trustCenterFiles,
@@ -257,26 +237,11 @@ function CompliancePageAccessEditForm(props: {
}, },
onSuccess: onSubmit, onSuccess: onSubmit,
}); });
}); };
return ( return (
<form onSubmit={e => void handleSubmit(e)}> <>
<DialogContent padded className="space-y-6"> <DialogContent padded className="space-y-6">
<div>
<p className="text-txt-secondary text-sm mb-4">
{__("Update access settings and document permissions")}
</p>
<Field
label={__("Full Name")}
required
error={editForm.formState.errors.name?.message}
{...editForm.register("name")}
placeholder={__("John Doe")}
/>
</div>
{data.node.ndaSignature && ( {data.node.ndaSignature && (
<ElectronicSignatureSection fragmentRef={data.node.ndaSignature} /> <ElectronicSignatureSection fragmentRef={data.node.ndaSignature} />
)} )}
@@ -291,11 +256,11 @@ function CompliancePageAccessEditForm(props: {
</DialogContent> </DialogContent>
<DialogFooter> <DialogFooter>
<Button type="submit" disabled={isUpdating}> <Button type="button" disabled={isUpdating} onClick={() => void handleSubmit()}>
{isUpdating && <Spinner />} {isUpdating && <Spinner />}
{__("Update Access")} {__("Update Access")}
</Button> </Button>
</DialogFooter> </DialogFooter>
</form> </>
); );
} }

View File

@@ -15,10 +15,12 @@ import { NdaSignatureBadge } from "./NdaSignatureBadge";
const fragment = graphql` const fragment = graphql`
fragment CompliancePageAccessListItemFragment on TrustCenterAccess { fragment CompliancePageAccessListItemFragment on TrustCenterAccess {
id id
name
email
createdAt createdAt
state profile {
fullName
emailAddress
state
}
activeCount activeCount
pendingRequestCount pendingRequestCount
ndaSignature { ndaSignature {
@@ -35,14 +37,15 @@ const toggleAccessStateMutation = graphql`
updateTrustCenterAccess(input: $input) { updateTrustCenterAccess(input: $input) {
trustCenterAccess { trustCenterAccess {
id id
email
name
state
hasAcceptedNonDisclosureAgreement
createdAt createdAt
updatedAt updatedAt
pendingRequestCount pendingRequestCount
activeCount activeCount
profile {
fullName
emailAddress
state
}
} }
} }
} }
@@ -59,7 +62,7 @@ export function CompliancePageAccessListItem(props: {
const access = useFragment<CompliancePageAccessListItemFragment$key>(fragment, fragmentRef); const access = useFragment<CompliancePageAccessListItemFragment$key>(fragment, fragmentRef);
const isActive = access.state === "ACTIVE"; const isActive = access.profile.state === "ACTIVE";
const [toggleAccessState, isToggling] = useMutationWithToasts<CompliancePageAccessListItemUpdateMutation>( const [toggleAccessState, isToggling] = useMutationWithToasts<CompliancePageAccessListItemUpdateMutation>(
toggleAccessStateMutation, toggleAccessStateMutation,
@@ -78,12 +81,11 @@ export function CompliancePageAccessListItem(props: {
variables: { variables: {
input: { input: {
id: access.id, id: access.id,
name: access.name,
state: isActive ? "INACTIVE" : "ACTIVE", state: isActive ? "INACTIVE" : "ACTIVE",
}, },
}, },
}); });
}, [toggleAccessState, access.id, access.name, isActive]); }, [toggleAccessState, access.id, isActive]);
return ( return (
<> <>
@@ -92,8 +94,8 @@ export function CompliancePageAccessListItem(props: {
onClick={() => access.canUpdate && isActive && setDialogOpen(true)} onClick={() => access.canUpdate && isActive && setDialogOpen(true)}
className={`cursor-pointer hover:bg-bg-secondary transition-colors${!isActive ? " opacity-50" : ""}`} className={`cursor-pointer hover:bg-bg-secondary transition-colors${!isActive ? " opacity-50" : ""}`}
> >
<Td className="font-medium">{access.name}</Td> <Td className="font-medium">{access.profile.fullName}</Td>
<Td>{access.email}</Td> <Td>{access.profile.emailAddress}</Td>
<Td>{formatDate(access.createdAt)}</Td> <Td>{formatDate(access.createdAt)}</Td>
<Td className="text-center">{access.activeCount}</Td> <Td className="text-center">{access.activeCount}</Td>
<Td className="text-center"> <Td className="text-center">

View File

@@ -23,11 +23,13 @@ import (
type ( type (
MembershipProfileFilter struct { MembershipProfileFilter struct {
excludeContractEnded *bool withMembership *bool
currentDate time.Time withTrustCenterAccess *bool
email *mail.Addr excludeContractEnded *bool
state *ProfileState currentDate time.Time
source *ProfileSource email *mail.Addr
state *ProfileState
source *ProfileSource
} }
) )
@@ -38,6 +40,16 @@ func NewMembershipProfileFilter(excludeContractEnded *bool) *MembershipProfileFi
} }
} }
func (f *MembershipProfileFilter) WithMembership() *MembershipProfileFilter {
f.withMembership = new(true)
return f
}
func (f *MembershipProfileFilter) WithTrustCenterAccess() *MembershipProfileFilter {
f.withTrustCenterAccess = new(true)
return f
}
func (f *MembershipProfileFilter) WithEmail(email *mail.Addr) *MembershipProfileFilter { func (f *MembershipProfileFilter) WithEmail(email *mail.Addr) *MembershipProfileFilter {
f.email = email f.email = email
return f return f
@@ -67,17 +79,37 @@ func (f *MembershipProfileFilter) Source() *ProfileSource {
func (f *MembershipProfileFilter) SQLArguments() pgx.StrictNamedArgs { func (f *MembershipProfileFilter) SQLArguments() pgx.StrictNamedArgs {
return pgx.StrictNamedArgs{ return pgx.StrictNamedArgs{
"filter_email": f.email, "filter_email": f.email,
"exclude_contract_ended": f.excludeContractEnded, "with_membership": f.withMembership,
"current_date": f.currentDate, "with_trust_center_access": f.withTrustCenterAccess,
"filter_state": f.state, "exclude_contract_ended": f.excludeContractEnded,
"filter_source": f.source, "current_date": f.currentDate,
"filter_state": f.state,
"filter_source": f.source,
} }
} }
func (f *MembershipProfileFilter) SQLFragment() string { func (f *MembershipProfileFilter) SQLFragment() string {
return ` return `
( (
CASE
WHEN @with_trust_center_access::boolean IS NOT NULL AND @with_trust_center_access::boolean = TRUE THEN
EXISTS (SELECT 1 FROM trust_center_accesses WHERE identity_id = p.identity_id AND organization_id = p.organization_id)
WHEN @with_trust_center_access::boolean IS NOT NULL AND @with_trust_center_access::boolean = FALSE THEN
NOT EXISTS (SELECT 1 FROM trust_center_accesses WHERE identity_id = p.identity_id AND organization_id = p.organization_id)
ELSE TRUE
END
)
AND (
CASE
WHEN @with_membership::boolean IS NOT NULL AND @with_membership::boolean = TRUE THEN
EXISTS (SELECT 1 FROM iam_memberships WHERE identity_id = p.identity_id AND organization_id = p.organization_id)
WHEN @with_membership::boolean IS NOT NULL AND @with_membership::boolean = FALSE THEN
NOT EXISTS (SELECT 1 FROM iam_memberships WHERE identity_id = p.identity_id AND organization_id = p.organization_id)
ELSE TRUE
END
)
AND (
CASE CASE
WHEN @filter_email::citext IS NOT NULL THEN WHEN @filter_email::citext IS NOT NULL THEN
i.email_address = @filter_email::citext i.email_address = @filter_email::citext

View File

@@ -288,15 +288,12 @@ func (s TrustCenterAccessService) Update(
ctx context.Context, ctx context.Context,
req *UpdateTrustCenterAccessRequest, req *UpdateTrustCenterAccessRequest,
) (*coredata.TrustCenterAccess, error) { ) (*coredata.TrustCenterAccess, error) {
if err := req.Validate(); err != nil { if err := req.Validate(); err != nil {
return nil, err return nil, err
} }
now := time.Now()
var ( var (
access *coredata.TrustCenterAccess access *coredata.TrustCenterAccess
profile *coredata.MembershipProfile
trustCenterAcessActivated bool trustCenterAcessActivated bool
shouldUpdateSlackMessage bool shouldUpdateSlackMessage bool
) )
@@ -310,24 +307,6 @@ func (s TrustCenterAccessService) Update(
return fmt.Errorf("cannot load trust center access: %w", err) return fmt.Errorf("cannot load trust center access: %w", err)
} }
access.UpdatedAt = now
if err := access.Update(ctx, tx, s.svc.scope); err != nil {
return fmt.Errorf("cannot update trust center access: %w", err)
}
// FIXME: need to change UX
profile = &coredata.MembershipProfile{}
if err := profile.LoadByIdentityIDAndOrganizationID(ctx, tx, s.svc.scope, access.OrganizationID, access.IdentityID); err != nil {
if !errors.Is(err, coredata.ErrResourceNotFound) {
return fmt.Errorf("cannot load profile: %w", err)
}
if err := profile.Insert(ctx, tx); err != nil {
return fmt.Errorf("cannot insert profile: %w", err)
}
}
var tcdas coredata.TrustCenterDocumentAccesses var tcdas coredata.TrustCenterDocumentAccesses
if len(req.DocumentAccesses) > 0 { if len(req.DocumentAccesses) > 0 {
@@ -392,7 +371,7 @@ func (s TrustCenterAccessService) Update(
} }
if shouldUpdateSlackMessage { if shouldUpdateSlackMessage {
if err := s.svc.SlackMessages.QueueSlackNotification(ctx, profile.IdentityID, access.TrustCenterID); err != nil { if err := s.svc.SlackMessages.QueueSlackNotification(ctx, access.IdentityID, access.TrustCenterID); err != nil {
if !errors.Is(err, slack.ErrNoSlackConnector) { if !errors.Is(err, slack.ErrNoSlackConnector) {
return nil, fmt.Errorf("cannot queue slack notification: %w", err) return nil, fmt.Errorf("cannot queue slack notification: %w", err)
} }

View File

@@ -1185,6 +1185,7 @@ func (r *organizationResolver) Profiles(ctx context.Context, obj *types.Organiza
} }
filter := coredata.NewMembershipProfileFilter(nil) filter := coredata.NewMembershipProfileFilter(nil)
filter = filter.WithMembership()
if gqlutils.OnlyTotalCountSelected(ctx) { if gqlutils.OnlyTotalCountSelected(ctx) {
return &types.ProfileConnection{ return &types.ProfileConnection{

View File

@@ -1911,6 +1911,7 @@ type Profile implements Node {
id: ID! id: ID!
fullName: String! fullName: String!
emailAddress: EmailAddr! emailAddress: EmailAddr!
state: ProfileState!
additionalEmailAddresses: [EmailAddr!]! additionalEmailAddresses: [EmailAddr!]!
kind: ProfileKind kind: ProfileKind
position: String position: String
@@ -1922,6 +1923,13 @@ type Profile implements Node {
permission(action: String!): Boolean! @goField(forceResolver: true) permission(action: String!): Boolean! @goField(forceResolver: true)
} }
enum ProfileState
@goModel(model: "go.probo.inc/probo/pkg/coredata.ProfileState") {
ACTIVE @goEnum(value: "go.probo.inc/probo/pkg/coredata.ProfileStateActive")
INACTIVE
@goEnum(value: "go.probo.inc/probo/pkg/coredata.ProfileStateInactive")
}
type Vendor implements Node { type Vendor implements Node {
id: ID! id: ID!
snapshotId: ID snapshotId: ID
@@ -2766,16 +2774,15 @@ type TrustCenterEdge {
type TrustCenterAccess implements Node { type TrustCenterAccess implements Node {
id: ID! id: ID!
email: EmailAddr!
name: String!
state: TrustCenterAccessState!
hasAcceptedNonDisclosureAgreement: Boolean!
ndaSignature: ElectronicSignature @goField(forceResolver: true) ndaSignature: ElectronicSignature @goField(forceResolver: true)
createdAt: Datetime! createdAt: Datetime!
updatedAt: Datetime! updatedAt: Datetime!
lastTokenExpiresAt: Datetime
pendingRequestCount: Int! @goField(forceResolver: true) pendingRequestCount: Int! @goField(forceResolver: true)
activeCount: Int! @goField(forceResolver: true) activeCount: Int! @goField(forceResolver: true)
organizationId: ID!
identityID: ID!
profile: Profile! @goField(forceResolver: true)
availableDocumentAccesses( availableDocumentAccesses(
first: Int first: Int

View File

@@ -1288,6 +1288,7 @@ type ComplexityRoot struct {
Kind func(childComplexity int) int Kind func(childComplexity int) int
Permission func(childComplexity int, action string) int Permission func(childComplexity int, action string) int
Position func(childComplexity int) int Position func(childComplexity int) int
State func(childComplexity int) int
UpdatedAt func(childComplexity int) int UpdatedAt func(childComplexity int) int
} }
@@ -1554,19 +1555,17 @@ type ComplexityRoot struct {
} }
TrustCenterAccess struct { TrustCenterAccess struct {
ActiveCount func(childComplexity int) int ActiveCount func(childComplexity int) int
AvailableDocumentAccesses func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.OrderBy[coredata.TrustCenterDocumentAccessOrderField]) int AvailableDocumentAccesses func(childComplexity int, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.OrderBy[coredata.TrustCenterDocumentAccessOrderField]) int
CreatedAt func(childComplexity int) int CreatedAt func(childComplexity int) int
Email func(childComplexity int) int ID func(childComplexity int) int
HasAcceptedNonDisclosureAgreement func(childComplexity int) int IdentityID func(childComplexity int) int
ID func(childComplexity int) int NdaSignature func(childComplexity int) int
LastTokenExpiresAt func(childComplexity int) int OrganizationID func(childComplexity int) int
Name func(childComplexity int) int PendingRequestCount func(childComplexity int) int
NdaSignature func(childComplexity int) int Permission func(childComplexity int, action string) int
PendingRequestCount func(childComplexity int) int Profile func(childComplexity int) int
Permission func(childComplexity int, action string) int UpdatedAt func(childComplexity int) int
State func(childComplexity int) int
UpdatedAt func(childComplexity int) int
} }
TrustCenterAccessConnection struct { TrustCenterAccessConnection struct {
@@ -2498,6 +2497,8 @@ type TrustCenterAccessResolver interface {
PendingRequestCount(ctx context.Context, obj *types.TrustCenterAccess) (int, error) PendingRequestCount(ctx context.Context, obj *types.TrustCenterAccess) (int, error)
ActiveCount(ctx context.Context, obj *types.TrustCenterAccess) (int, error) ActiveCount(ctx context.Context, obj *types.TrustCenterAccess) (int, error)
Profile(ctx context.Context, obj *types.TrustCenterAccess) (*types.Profile, error)
AvailableDocumentAccesses(ctx context.Context, obj *types.TrustCenterAccess, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.OrderBy[coredata.TrustCenterDocumentAccessOrderField]) (*types.TrustCenterDocumentAccessConnection, error) AvailableDocumentAccesses(ctx context.Context, obj *types.TrustCenterAccess, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.OrderBy[coredata.TrustCenterDocumentAccessOrderField]) (*types.TrustCenterDocumentAccessConnection, error)
Permission(ctx context.Context, obj *types.TrustCenterAccess, action string) (bool, error) Permission(ctx context.Context, obj *types.TrustCenterAccess, action string) (bool, error)
} }
@@ -7878,6 +7879,12 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
} }
return e.ComplexityRoot.Profile.Position(childComplexity), true return e.ComplexityRoot.Profile.Position(childComplexity), true
case "Profile.state":
if e.ComplexityRoot.Profile.State == nil {
break
}
return e.ComplexityRoot.Profile.State(childComplexity), true
case "Profile.updatedAt": case "Profile.updatedAt":
if e.ComplexityRoot.Profile.UpdatedAt == nil { if e.ComplexityRoot.Profile.UpdatedAt == nil {
break break
@@ -9019,42 +9026,30 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
} }
return e.ComplexityRoot.TrustCenterAccess.CreatedAt(childComplexity), true return e.ComplexityRoot.TrustCenterAccess.CreatedAt(childComplexity), true
case "TrustCenterAccess.email":
if e.ComplexityRoot.TrustCenterAccess.Email == nil {
break
}
return e.ComplexityRoot.TrustCenterAccess.Email(childComplexity), true
case "TrustCenterAccess.hasAcceptedNonDisclosureAgreement":
if e.ComplexityRoot.TrustCenterAccess.HasAcceptedNonDisclosureAgreement == nil {
break
}
return e.ComplexityRoot.TrustCenterAccess.HasAcceptedNonDisclosureAgreement(childComplexity), true
case "TrustCenterAccess.id": case "TrustCenterAccess.id":
if e.ComplexityRoot.TrustCenterAccess.ID == nil { if e.ComplexityRoot.TrustCenterAccess.ID == nil {
break break
} }
return e.ComplexityRoot.TrustCenterAccess.ID(childComplexity), true return e.ComplexityRoot.TrustCenterAccess.ID(childComplexity), true
case "TrustCenterAccess.lastTokenExpiresAt": case "TrustCenterAccess.identityID":
if e.ComplexityRoot.TrustCenterAccess.LastTokenExpiresAt == nil { if e.ComplexityRoot.TrustCenterAccess.IdentityID == nil {
break break
} }
return e.ComplexityRoot.TrustCenterAccess.LastTokenExpiresAt(childComplexity), true return e.ComplexityRoot.TrustCenterAccess.IdentityID(childComplexity), true
case "TrustCenterAccess.name":
if e.ComplexityRoot.TrustCenterAccess.Name == nil {
break
}
return e.ComplexityRoot.TrustCenterAccess.Name(childComplexity), true
case "TrustCenterAccess.ndaSignature": case "TrustCenterAccess.ndaSignature":
if e.ComplexityRoot.TrustCenterAccess.NdaSignature == nil { if e.ComplexityRoot.TrustCenterAccess.NdaSignature == nil {
break break
} }
return e.ComplexityRoot.TrustCenterAccess.NdaSignature(childComplexity), true return e.ComplexityRoot.TrustCenterAccess.NdaSignature(childComplexity), true
case "TrustCenterAccess.organizationId":
if e.ComplexityRoot.TrustCenterAccess.OrganizationID == nil {
break
}
return e.ComplexityRoot.TrustCenterAccess.OrganizationID(childComplexity), true
case "TrustCenterAccess.pendingRequestCount": case "TrustCenterAccess.pendingRequestCount":
if e.ComplexityRoot.TrustCenterAccess.PendingRequestCount == nil { if e.ComplexityRoot.TrustCenterAccess.PendingRequestCount == nil {
break break
@@ -9072,12 +9067,12 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
} }
return e.ComplexityRoot.TrustCenterAccess.Permission(childComplexity, args["action"].(string)), true return e.ComplexityRoot.TrustCenterAccess.Permission(childComplexity, args["action"].(string)), true
case "TrustCenterAccess.state": case "TrustCenterAccess.profile":
if e.ComplexityRoot.TrustCenterAccess.State == nil { if e.ComplexityRoot.TrustCenterAccess.Profile == nil {
break break
} }
return e.ComplexityRoot.TrustCenterAccess.State(childComplexity), true return e.ComplexityRoot.TrustCenterAccess.Profile(childComplexity), true
case "TrustCenterAccess.updatedAt": case "TrustCenterAccess.updatedAt":
if e.ComplexityRoot.TrustCenterAccess.UpdatedAt == nil { if e.ComplexityRoot.TrustCenterAccess.UpdatedAt == nil {
break break
@@ -12754,6 +12749,7 @@ type Profile implements Node {
id: ID! id: ID!
fullName: String! fullName: String!
emailAddress: EmailAddr! emailAddress: EmailAddr!
state: ProfileState!
additionalEmailAddresses: [EmailAddr!]! additionalEmailAddresses: [EmailAddr!]!
kind: ProfileKind kind: ProfileKind
position: String position: String
@@ -12765,6 +12761,13 @@ type Profile implements Node {
permission(action: String!): Boolean! @goField(forceResolver: true) permission(action: String!): Boolean! @goField(forceResolver: true)
} }
enum ProfileState
@goModel(model: "go.probo.inc/probo/pkg/coredata.ProfileState") {
ACTIVE @goEnum(value: "go.probo.inc/probo/pkg/coredata.ProfileStateActive")
INACTIVE
@goEnum(value: "go.probo.inc/probo/pkg/coredata.ProfileStateInactive")
}
type Vendor implements Node { type Vendor implements Node {
id: ID! id: ID!
snapshotId: ID snapshotId: ID
@@ -13609,16 +13612,15 @@ type TrustCenterEdge {
type TrustCenterAccess implements Node { type TrustCenterAccess implements Node {
id: ID! id: ID!
email: EmailAddr!
name: String!
state: TrustCenterAccessState!
hasAcceptedNonDisclosureAgreement: Boolean!
ndaSignature: ElectronicSignature @goField(forceResolver: true) ndaSignature: ElectronicSignature @goField(forceResolver: true)
createdAt: Datetime! createdAt: Datetime!
updatedAt: Datetime! updatedAt: Datetime!
lastTokenExpiresAt: Datetime
pendingRequestCount: Int! @goField(forceResolver: true) pendingRequestCount: Int! @goField(forceResolver: true)
activeCount: Int! @goField(forceResolver: true) activeCount: Int! @goField(forceResolver: true)
organizationId: ID!
identityID: ID!
profile: Profile! @goField(forceResolver: true)
availableDocumentAccesses( availableDocumentAccesses(
first: Int first: Int
@@ -21359,6 +21361,8 @@ func (ec *executionContext) fieldContext_Asset_owner(_ context.Context, field gr
return ec.fieldContext_Profile_fullName(ctx, field) return ec.fieldContext_Profile_fullName(ctx, field)
case "emailAddress": case "emailAddress":
return ec.fieldContext_Profile_emailAddress(ctx, field) return ec.fieldContext_Profile_emailAddress(ctx, field)
case "state":
return ec.fieldContext_Profile_state(ctx, field)
case "additionalEmailAddresses": case "additionalEmailAddresses":
return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field) return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field)
case "kind": case "kind":
@@ -23478,6 +23482,8 @@ func (ec *executionContext) fieldContext_ContinualImprovement_owner(_ context.Co
return ec.fieldContext_Profile_fullName(ctx, field) return ec.fieldContext_Profile_fullName(ctx, field)
case "emailAddress": case "emailAddress":
return ec.fieldContext_Profile_emailAddress(ctx, field) return ec.fieldContext_Profile_emailAddress(ctx, field)
case "state":
return ec.fieldContext_Profile_state(ctx, field)
case "additionalEmailAddresses": case "additionalEmailAddresses":
return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field) return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field)
case "kind": case "kind":
@@ -27849,6 +27855,8 @@ func (ec *executionContext) fieldContext_Datum_owner(_ context.Context, field gr
return ec.fieldContext_Profile_fullName(ctx, field) return ec.fieldContext_Profile_fullName(ctx, field)
case "emailAddress": case "emailAddress":
return ec.fieldContext_Profile_emailAddress(ctx, field) return ec.fieldContext_Profile_emailAddress(ctx, field)
case "state":
return ec.fieldContext_Profile_state(ctx, field)
case "additionalEmailAddresses": case "additionalEmailAddresses":
return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field) return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field)
case "kind": case "kind":
@@ -31482,6 +31490,8 @@ func (ec *executionContext) fieldContext_DocumentVersionSignature_signedBy(_ con
return ec.fieldContext_Profile_fullName(ctx, field) return ec.fieldContext_Profile_fullName(ctx, field)
case "emailAddress": case "emailAddress":
return ec.fieldContext_Profile_emailAddress(ctx, field) return ec.fieldContext_Profile_emailAddress(ctx, field)
case "state":
return ec.fieldContext_Profile_state(ctx, field)
case "additionalEmailAddresses": case "additionalEmailAddresses":
return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field) return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field)
case "kind": case "kind":
@@ -34910,6 +34920,8 @@ func (ec *executionContext) fieldContext_Meeting_attendees(_ context.Context, fi
return ec.fieldContext_Profile_fullName(ctx, field) return ec.fieldContext_Profile_fullName(ctx, field)
case "emailAddress": case "emailAddress":
return ec.fieldContext_Profile_emailAddress(ctx, field) return ec.fieldContext_Profile_emailAddress(ctx, field)
case "state":
return ec.fieldContext_Profile_state(ctx, field)
case "additionalEmailAddresses": case "additionalEmailAddresses":
return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field) return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field)
case "kind": case "kind":
@@ -42192,6 +42204,8 @@ func (ec *executionContext) fieldContext_Nonconformity_owner(_ context.Context,
return ec.fieldContext_Profile_fullName(ctx, field) return ec.fieldContext_Profile_fullName(ctx, field)
case "emailAddress": case "emailAddress":
return ec.fieldContext_Profile_emailAddress(ctx, field) return ec.fieldContext_Profile_emailAddress(ctx, field)
case "state":
return ec.fieldContext_Profile_state(ctx, field)
case "additionalEmailAddresses": case "additionalEmailAddresses":
return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field) return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field)
case "kind": case "kind":
@@ -42965,6 +42979,8 @@ func (ec *executionContext) fieldContext_Obligation_owner(_ context.Context, fie
return ec.fieldContext_Profile_fullName(ctx, field) return ec.fieldContext_Profile_fullName(ctx, field)
case "emailAddress": case "emailAddress":
return ec.fieldContext_Profile_emailAddress(ctx, field) return ec.fieldContext_Profile_emailAddress(ctx, field)
case "state":
return ec.fieldContext_Profile_state(ctx, field)
case "additionalEmailAddresses": case "additionalEmailAddresses":
return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field) return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field)
case "kind": case "kind":
@@ -45966,6 +45982,8 @@ func (ec *executionContext) fieldContext_ProcessingActivity_dataProtectionOffice
return ec.fieldContext_Profile_fullName(ctx, field) return ec.fieldContext_Profile_fullName(ctx, field)
case "emailAddress": case "emailAddress":
return ec.fieldContext_Profile_emailAddress(ctx, field) return ec.fieldContext_Profile_emailAddress(ctx, field)
case "state":
return ec.fieldContext_Profile_state(ctx, field)
case "additionalEmailAddresses": case "additionalEmailAddresses":
return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field) return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field)
case "kind": case "kind":
@@ -46551,6 +46569,35 @@ func (ec *executionContext) fieldContext_Profile_emailAddress(_ context.Context,
return fc, nil return fc, nil
} }
func (ec *executionContext) _Profile_state(ctx context.Context, field graphql.CollectedField, obj *types.Profile) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
ec.OperationContext,
field,
ec.fieldContext_Profile_state,
func(ctx context.Context) (any, error) {
return obj.State, nil
},
nil,
ec.marshalNProfileState2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProfileState,
true,
true,
)
}
func (ec *executionContext) fieldContext_Profile_state(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
fc = &graphql.FieldContext{
Object: "Profile",
Field: field,
IsMethod: false,
IsResolver: false,
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
return nil, errors.New("field of type ProfileState does not have child fields")
},
}
return fc, nil
}
func (ec *executionContext) _Profile_additionalEmailAddresses(ctx context.Context, field graphql.CollectedField, obj *types.Profile) (ret graphql.Marshaler) { func (ec *executionContext) _Profile_additionalEmailAddresses(ctx context.Context, field graphql.CollectedField, obj *types.Profile) (ret graphql.Marshaler) {
return graphql.ResolveField( return graphql.ResolveField(
ctx, ctx,
@@ -46957,6 +47004,8 @@ func (ec *executionContext) fieldContext_ProfileEdge_node(_ context.Context, fie
return ec.fieldContext_Profile_fullName(ctx, field) return ec.fieldContext_Profile_fullName(ctx, field)
case "emailAddress": case "emailAddress":
return ec.fieldContext_Profile_emailAddress(ctx, field) return ec.fieldContext_Profile_emailAddress(ctx, field)
case "state":
return ec.fieldContext_Profile_state(ctx, field)
case "additionalEmailAddresses": case "additionalEmailAddresses":
return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field) return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field)
case "kind": case "kind":
@@ -48685,6 +48734,8 @@ func (ec *executionContext) fieldContext_Risk_owner(_ context.Context, field gra
return ec.fieldContext_Profile_fullName(ctx, field) return ec.fieldContext_Profile_fullName(ctx, field)
case "emailAddress": case "emailAddress":
return ec.fieldContext_Profile_emailAddress(ctx, field) return ec.fieldContext_Profile_emailAddress(ctx, field)
case "state":
return ec.fieldContext_Profile_state(ctx, field)
case "additionalEmailAddresses": case "additionalEmailAddresses":
return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field) return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field)
case "kind": case "kind":
@@ -50891,6 +50942,8 @@ func (ec *executionContext) fieldContext_StateOfApplicability_owner(_ context.Co
return ec.fieldContext_Profile_fullName(ctx, field) return ec.fieldContext_Profile_fullName(ctx, field)
case "emailAddress": case "emailAddress":
return ec.fieldContext_Profile_emailAddress(ctx, field) return ec.fieldContext_Profile_emailAddress(ctx, field)
case "state":
return ec.fieldContext_Profile_state(ctx, field)
case "additionalEmailAddresses": case "additionalEmailAddresses":
return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field) return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field)
case "kind": case "kind":
@@ -51449,6 +51502,8 @@ func (ec *executionContext) fieldContext_Task_assignedTo(_ context.Context, fiel
return ec.fieldContext_Profile_fullName(ctx, field) return ec.fieldContext_Profile_fullName(ctx, field)
case "emailAddress": case "emailAddress":
return ec.fieldContext_Profile_emailAddress(ctx, field) return ec.fieldContext_Profile_emailAddress(ctx, field)
case "state":
return ec.fieldContext_Profile_state(ctx, field)
case "additionalEmailAddresses": case "additionalEmailAddresses":
return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field) return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field)
case "kind": case "kind":
@@ -53177,122 +53232,6 @@ func (ec *executionContext) fieldContext_TrustCenterAccess_id(_ context.Context,
return fc, nil return fc, nil
} }
func (ec *executionContext) _TrustCenterAccess_email(ctx context.Context, field graphql.CollectedField, obj *types.TrustCenterAccess) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
ec.OperationContext,
field,
ec.fieldContext_TrustCenterAccess_email,
func(ctx context.Context) (any, error) {
return obj.Email, nil
},
nil,
ec.marshalNEmailAddr2goᚗproboᚗincᚋproboᚋpkgᚋmailᚐAddr,
true,
true,
)
}
func (ec *executionContext) fieldContext_TrustCenterAccess_email(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
fc = &graphql.FieldContext{
Object: "TrustCenterAccess",
Field: field,
IsMethod: false,
IsResolver: false,
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
return nil, errors.New("field of type EmailAddr does not have child fields")
},
}
return fc, nil
}
func (ec *executionContext) _TrustCenterAccess_name(ctx context.Context, field graphql.CollectedField, obj *types.TrustCenterAccess) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
ec.OperationContext,
field,
ec.fieldContext_TrustCenterAccess_name,
func(ctx context.Context) (any, error) {
return obj.Name, nil
},
nil,
ec.marshalNString2string,
true,
true,
)
}
func (ec *executionContext) fieldContext_TrustCenterAccess_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
fc = &graphql.FieldContext{
Object: "TrustCenterAccess",
Field: field,
IsMethod: false,
IsResolver: false,
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
return nil, errors.New("field of type String does not have child fields")
},
}
return fc, nil
}
func (ec *executionContext) _TrustCenterAccess_state(ctx context.Context, field graphql.CollectedField, obj *types.TrustCenterAccess) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
ec.OperationContext,
field,
ec.fieldContext_TrustCenterAccess_state,
func(ctx context.Context) (any, error) {
return obj.State, nil
},
nil,
ec.marshalNTrustCenterAccessState2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐTrustCenterAccessState,
true,
true,
)
}
func (ec *executionContext) fieldContext_TrustCenterAccess_state(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
fc = &graphql.FieldContext{
Object: "TrustCenterAccess",
Field: field,
IsMethod: false,
IsResolver: false,
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
return nil, errors.New("field of type TrustCenterAccessState does not have child fields")
},
}
return fc, nil
}
func (ec *executionContext) _TrustCenterAccess_hasAcceptedNonDisclosureAgreement(ctx context.Context, field graphql.CollectedField, obj *types.TrustCenterAccess) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
ec.OperationContext,
field,
ec.fieldContext_TrustCenterAccess_hasAcceptedNonDisclosureAgreement,
func(ctx context.Context) (any, error) {
return obj.HasAcceptedNonDisclosureAgreement, nil
},
nil,
ec.marshalNBoolean2bool,
true,
true,
)
}
func (ec *executionContext) fieldContext_TrustCenterAccess_hasAcceptedNonDisclosureAgreement(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
fc = &graphql.FieldContext{
Object: "TrustCenterAccess",
Field: field,
IsMethod: false,
IsResolver: false,
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
return nil, errors.New("field of type Boolean does not have child fields")
},
}
return fc, nil
}
func (ec *executionContext) _TrustCenterAccess_ndaSignature(ctx context.Context, field graphql.CollectedField, obj *types.TrustCenterAccess) (ret graphql.Marshaler) { func (ec *executionContext) _TrustCenterAccess_ndaSignature(ctx context.Context, field graphql.CollectedField, obj *types.TrustCenterAccess) (ret graphql.Marshaler) {
return graphql.ResolveField( return graphql.ResolveField(
ctx, ctx,
@@ -53402,35 +53341,6 @@ func (ec *executionContext) fieldContext_TrustCenterAccess_updatedAt(_ context.C
return fc, nil return fc, nil
} }
func (ec *executionContext) _TrustCenterAccess_lastTokenExpiresAt(ctx context.Context, field graphql.CollectedField, obj *types.TrustCenterAccess) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
ec.OperationContext,
field,
ec.fieldContext_TrustCenterAccess_lastTokenExpiresAt,
func(ctx context.Context) (any, error) {
return obj.LastTokenExpiresAt, nil
},
nil,
ec.marshalODatetime2ᚖtimeᚐTime,
true,
false,
)
}
func (ec *executionContext) fieldContext_TrustCenterAccess_lastTokenExpiresAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
fc = &graphql.FieldContext{
Object: "TrustCenterAccess",
Field: field,
IsMethod: false,
IsResolver: false,
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
return nil, errors.New("field of type Datetime does not have child fields")
},
}
return fc, nil
}
func (ec *executionContext) _TrustCenterAccess_pendingRequestCount(ctx context.Context, field graphql.CollectedField, obj *types.TrustCenterAccess) (ret graphql.Marshaler) { func (ec *executionContext) _TrustCenterAccess_pendingRequestCount(ctx context.Context, field graphql.CollectedField, obj *types.TrustCenterAccess) (ret graphql.Marshaler) {
return graphql.ResolveField( return graphql.ResolveField(
ctx, ctx,
@@ -53489,6 +53399,119 @@ func (ec *executionContext) fieldContext_TrustCenterAccess_activeCount(_ context
return fc, nil return fc, nil
} }
func (ec *executionContext) _TrustCenterAccess_organizationId(ctx context.Context, field graphql.CollectedField, obj *types.TrustCenterAccess) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
ec.OperationContext,
field,
ec.fieldContext_TrustCenterAccess_organizationId,
func(ctx context.Context) (any, error) {
return obj.OrganizationID, nil
},
nil,
ec.marshalNID2goᚗproboᚗincᚋproboᚋpkgᚋgidᚐGID,
true,
true,
)
}
func (ec *executionContext) fieldContext_TrustCenterAccess_organizationId(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
fc = &graphql.FieldContext{
Object: "TrustCenterAccess",
Field: field,
IsMethod: false,
IsResolver: false,
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
return nil, errors.New("field of type ID does not have child fields")
},
}
return fc, nil
}
func (ec *executionContext) _TrustCenterAccess_identityID(ctx context.Context, field graphql.CollectedField, obj *types.TrustCenterAccess) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
ec.OperationContext,
field,
ec.fieldContext_TrustCenterAccess_identityID,
func(ctx context.Context) (any, error) {
return obj.IdentityID, nil
},
nil,
ec.marshalNID2goᚗproboᚗincᚋproboᚋpkgᚋgidᚐGID,
true,
true,
)
}
func (ec *executionContext) fieldContext_TrustCenterAccess_identityID(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
fc = &graphql.FieldContext{
Object: "TrustCenterAccess",
Field: field,
IsMethod: false,
IsResolver: false,
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
return nil, errors.New("field of type ID does not have child fields")
},
}
return fc, nil
}
func (ec *executionContext) _TrustCenterAccess_profile(ctx context.Context, field graphql.CollectedField, obj *types.TrustCenterAccess) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
ec.OperationContext,
field,
ec.fieldContext_TrustCenterAccess_profile,
func(ctx context.Context) (any, error) {
return ec.Resolvers.TrustCenterAccess().Profile(ctx, obj)
},
nil,
ec.marshalNProfile2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐProfile,
true,
true,
)
}
func (ec *executionContext) fieldContext_TrustCenterAccess_profile(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
fc = &graphql.FieldContext{
Object: "TrustCenterAccess",
Field: field,
IsMethod: true,
IsResolver: true,
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
switch field.Name {
case "id":
return ec.fieldContext_Profile_id(ctx, field)
case "fullName":
return ec.fieldContext_Profile_fullName(ctx, field)
case "emailAddress":
return ec.fieldContext_Profile_emailAddress(ctx, field)
case "state":
return ec.fieldContext_Profile_state(ctx, field)
case "additionalEmailAddresses":
return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field)
case "kind":
return ec.fieldContext_Profile_kind(ctx, field)
case "position":
return ec.fieldContext_Profile_position(ctx, field)
case "contractStartDate":
return ec.fieldContext_Profile_contractStartDate(ctx, field)
case "contractEndDate":
return ec.fieldContext_Profile_contractEndDate(ctx, field)
case "createdAt":
return ec.fieldContext_Profile_createdAt(ctx, field)
case "updatedAt":
return ec.fieldContext_Profile_updatedAt(ctx, field)
case "permission":
return ec.fieldContext_Profile_permission(ctx, field)
}
return nil, fmt.Errorf("no field named %q was found under type Profile", field.Name)
},
}
return fc, nil
}
func (ec *executionContext) _TrustCenterAccess_availableDocumentAccesses(ctx context.Context, field graphql.CollectedField, obj *types.TrustCenterAccess) (ret graphql.Marshaler) { func (ec *executionContext) _TrustCenterAccess_availableDocumentAccesses(ctx context.Context, field graphql.CollectedField, obj *types.TrustCenterAccess) (ret graphql.Marshaler) {
return graphql.ResolveField( return graphql.ResolveField(
ctx, ctx,
@@ -53708,26 +53731,22 @@ func (ec *executionContext) fieldContext_TrustCenterAccessEdge_node(_ context.Co
switch field.Name { switch field.Name {
case "id": case "id":
return ec.fieldContext_TrustCenterAccess_id(ctx, field) return ec.fieldContext_TrustCenterAccess_id(ctx, field)
case "email":
return ec.fieldContext_TrustCenterAccess_email(ctx, field)
case "name":
return ec.fieldContext_TrustCenterAccess_name(ctx, field)
case "state":
return ec.fieldContext_TrustCenterAccess_state(ctx, field)
case "hasAcceptedNonDisclosureAgreement":
return ec.fieldContext_TrustCenterAccess_hasAcceptedNonDisclosureAgreement(ctx, field)
case "ndaSignature": case "ndaSignature":
return ec.fieldContext_TrustCenterAccess_ndaSignature(ctx, field) return ec.fieldContext_TrustCenterAccess_ndaSignature(ctx, field)
case "createdAt": case "createdAt":
return ec.fieldContext_TrustCenterAccess_createdAt(ctx, field) return ec.fieldContext_TrustCenterAccess_createdAt(ctx, field)
case "updatedAt": case "updatedAt":
return ec.fieldContext_TrustCenterAccess_updatedAt(ctx, field) return ec.fieldContext_TrustCenterAccess_updatedAt(ctx, field)
case "lastTokenExpiresAt":
return ec.fieldContext_TrustCenterAccess_lastTokenExpiresAt(ctx, field)
case "pendingRequestCount": case "pendingRequestCount":
return ec.fieldContext_TrustCenterAccess_pendingRequestCount(ctx, field) return ec.fieldContext_TrustCenterAccess_pendingRequestCount(ctx, field)
case "activeCount": case "activeCount":
return ec.fieldContext_TrustCenterAccess_activeCount(ctx, field) return ec.fieldContext_TrustCenterAccess_activeCount(ctx, field)
case "organizationId":
return ec.fieldContext_TrustCenterAccess_organizationId(ctx, field)
case "identityID":
return ec.fieldContext_TrustCenterAccess_identityID(ctx, field)
case "profile":
return ec.fieldContext_TrustCenterAccess_profile(ctx, field)
case "availableDocumentAccesses": case "availableDocumentAccesses":
return ec.fieldContext_TrustCenterAccess_availableDocumentAccesses(ctx, field) return ec.fieldContext_TrustCenterAccess_availableDocumentAccesses(ctx, field)
case "permission": case "permission":
@@ -56553,26 +56572,22 @@ func (ec *executionContext) fieldContext_UpdateTrustCenterAccessPayload_trustCen
switch field.Name { switch field.Name {
case "id": case "id":
return ec.fieldContext_TrustCenterAccess_id(ctx, field) return ec.fieldContext_TrustCenterAccess_id(ctx, field)
case "email":
return ec.fieldContext_TrustCenterAccess_email(ctx, field)
case "name":
return ec.fieldContext_TrustCenterAccess_name(ctx, field)
case "state":
return ec.fieldContext_TrustCenterAccess_state(ctx, field)
case "hasAcceptedNonDisclosureAgreement":
return ec.fieldContext_TrustCenterAccess_hasAcceptedNonDisclosureAgreement(ctx, field)
case "ndaSignature": case "ndaSignature":
return ec.fieldContext_TrustCenterAccess_ndaSignature(ctx, field) return ec.fieldContext_TrustCenterAccess_ndaSignature(ctx, field)
case "createdAt": case "createdAt":
return ec.fieldContext_TrustCenterAccess_createdAt(ctx, field) return ec.fieldContext_TrustCenterAccess_createdAt(ctx, field)
case "updatedAt": case "updatedAt":
return ec.fieldContext_TrustCenterAccess_updatedAt(ctx, field) return ec.fieldContext_TrustCenterAccess_updatedAt(ctx, field)
case "lastTokenExpiresAt":
return ec.fieldContext_TrustCenterAccess_lastTokenExpiresAt(ctx, field)
case "pendingRequestCount": case "pendingRequestCount":
return ec.fieldContext_TrustCenterAccess_pendingRequestCount(ctx, field) return ec.fieldContext_TrustCenterAccess_pendingRequestCount(ctx, field)
case "activeCount": case "activeCount":
return ec.fieldContext_TrustCenterAccess_activeCount(ctx, field) return ec.fieldContext_TrustCenterAccess_activeCount(ctx, field)
case "organizationId":
return ec.fieldContext_TrustCenterAccess_organizationId(ctx, field)
case "identityID":
return ec.fieldContext_TrustCenterAccess_identityID(ctx, field)
case "profile":
return ec.fieldContext_TrustCenterAccess_profile(ctx, field)
case "availableDocumentAccesses": case "availableDocumentAccesses":
return ec.fieldContext_TrustCenterAccess_availableDocumentAccesses(ctx, field) return ec.fieldContext_TrustCenterAccess_availableDocumentAccesses(ctx, field)
case "permission": case "permission":
@@ -57996,6 +58011,8 @@ func (ec *executionContext) fieldContext_Vendor_businessOwner(_ context.Context,
return ec.fieldContext_Profile_fullName(ctx, field) return ec.fieldContext_Profile_fullName(ctx, field)
case "emailAddress": case "emailAddress":
return ec.fieldContext_Profile_emailAddress(ctx, field) return ec.fieldContext_Profile_emailAddress(ctx, field)
case "state":
return ec.fieldContext_Profile_state(ctx, field)
case "additionalEmailAddresses": case "additionalEmailAddresses":
return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field) return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field)
case "kind": case "kind":
@@ -58049,6 +58066,8 @@ func (ec *executionContext) fieldContext_Vendor_securityOwner(_ context.Context,
return ec.fieldContext_Profile_fullName(ctx, field) return ec.fieldContext_Profile_fullName(ctx, field)
case "emailAddress": case "emailAddress":
return ec.fieldContext_Profile_emailAddress(ctx, field) return ec.fieldContext_Profile_emailAddress(ctx, field)
case "state":
return ec.fieldContext_Profile_state(ctx, field)
case "additionalEmailAddresses": case "additionalEmailAddresses":
return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field) return ec.fieldContext_Profile_additionalEmailAddresses(ctx, field)
case "kind": case "kind":
@@ -85386,6 +85405,11 @@ func (ec *executionContext) _Profile(ctx context.Context, sel ast.SelectionSet,
if out.Values[i] == graphql.Null { if out.Values[i] == graphql.Null {
atomic.AddUint32(&out.Invalids, 1) atomic.AddUint32(&out.Invalids, 1)
} }
case "state":
out.Values[i] = ec._Profile_state(ctx, field, obj)
if out.Values[i] == graphql.Null {
atomic.AddUint32(&out.Invalids, 1)
}
case "additionalEmailAddresses": case "additionalEmailAddresses":
out.Values[i] = ec._Profile_additionalEmailAddresses(ctx, field, obj) out.Values[i] = ec._Profile_additionalEmailAddresses(ctx, field, obj)
if out.Values[i] == graphql.Null { if out.Values[i] == graphql.Null {
@@ -88742,26 +88766,6 @@ func (ec *executionContext) _TrustCenterAccess(ctx context.Context, sel ast.Sele
if out.Values[i] == graphql.Null { if out.Values[i] == graphql.Null {
atomic.AddUint32(&out.Invalids, 1) atomic.AddUint32(&out.Invalids, 1)
} }
case "email":
out.Values[i] = ec._TrustCenterAccess_email(ctx, field, obj)
if out.Values[i] == graphql.Null {
atomic.AddUint32(&out.Invalids, 1)
}
case "name":
out.Values[i] = ec._TrustCenterAccess_name(ctx, field, obj)
if out.Values[i] == graphql.Null {
atomic.AddUint32(&out.Invalids, 1)
}
case "state":
out.Values[i] = ec._TrustCenterAccess_state(ctx, field, obj)
if out.Values[i] == graphql.Null {
atomic.AddUint32(&out.Invalids, 1)
}
case "hasAcceptedNonDisclosureAgreement":
out.Values[i] = ec._TrustCenterAccess_hasAcceptedNonDisclosureAgreement(ctx, field, obj)
if out.Values[i] == graphql.Null {
atomic.AddUint32(&out.Invalids, 1)
}
case "ndaSignature": case "ndaSignature":
field := field field := field
@@ -88805,8 +88809,6 @@ func (ec *executionContext) _TrustCenterAccess(ctx context.Context, sel ast.Sele
if out.Values[i] == graphql.Null { if out.Values[i] == graphql.Null {
atomic.AddUint32(&out.Invalids, 1) atomic.AddUint32(&out.Invalids, 1)
} }
case "lastTokenExpiresAt":
out.Values[i] = ec._TrustCenterAccess_lastTokenExpiresAt(ctx, field, obj)
case "pendingRequestCount": case "pendingRequestCount":
field := field field := field
@@ -88878,6 +88880,52 @@ func (ec *executionContext) _TrustCenterAccess(ctx context.Context, sel ast.Sele
continue continue
} }
out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
case "organizationId":
out.Values[i] = ec._TrustCenterAccess_organizationId(ctx, field, obj)
if out.Values[i] == graphql.Null {
atomic.AddUint32(&out.Invalids, 1)
}
case "identityID":
out.Values[i] = ec._TrustCenterAccess_identityID(ctx, field, obj)
if out.Values[i] == graphql.Null {
atomic.AddUint32(&out.Invalids, 1)
}
case "profile":
field := field
innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) {
defer func() {
if r := recover(); r != nil {
ec.Error(ctx, ec.Recover(ctx, r))
}
}()
res = ec._TrustCenterAccess_profile(ctx, field, obj)
if res == graphql.Null {
atomic.AddUint32(&fs.Invalids, 1)
}
return res
}
if field.Deferrable != nil {
dfs, ok := deferred[field.Deferrable.Label]
di := 0
if ok {
dfs.AddField(field)
di = len(dfs.Values) - 1
} else {
dfs = graphql.NewFieldSet([]graphql.CollectedField{field})
deferred[field.Deferrable.Label] = dfs
}
dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler {
return innerFunc(ctx, dfs)
})
// don't run the out.Concurrently() call below
out.Values[i] = graphql.Null
continue
}
out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
case "availableDocumentAccesses": case "availableDocumentAccesses":
field := field field := field
@@ -99410,6 +99458,34 @@ var (
} }
) )
func (ec *executionContext) unmarshalNProfileState2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProfileState(ctx context.Context, v any) (coredata.ProfileState, error) {
tmp, err := graphql.UnmarshalString(v)
res := unmarshalNProfileState2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProfileState[tmp]
return res, graphql.ErrorOnPath(ctx, err)
}
func (ec *executionContext) marshalNProfileState2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProfileState(ctx context.Context, sel ast.SelectionSet, v coredata.ProfileState) graphql.Marshaler {
_ = sel
res := graphql.MarshalString(marshalNProfileState2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProfileState[v])
if res == graphql.Null {
if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
}
}
return res
}
var (
unmarshalNProfileState2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProfileState = map[string]coredata.ProfileState{
"ACTIVE": coredata.ProfileStateActive,
"INACTIVE": coredata.ProfileStateInactive,
}
marshalNProfileState2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐProfileState = map[coredata.ProfileState]string{
coredata.ProfileStateActive: "ACTIVE",
coredata.ProfileStateInactive: "INACTIVE",
}
)
func (ec *executionContext) unmarshalNPublishDocumentVersionInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐPublishDocumentVersionInput(ctx context.Context, v any) (types.PublishDocumentVersionInput, error) { func (ec *executionContext) unmarshalNPublishDocumentVersionInput2goᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐPublishDocumentVersionInput(ctx context.Context, v any) (types.PublishDocumentVersionInput, error) {
res, err := ec.unmarshalInputPublishDocumentVersionInput(ctx, v) res, err := ec.unmarshalInputPublishDocumentVersionInput(ctx, v)
return res, graphql.ErrorOnPath(ctx, err) return res, graphql.ErrorOnPath(ctx, err)
@@ -100393,34 +100469,6 @@ var (
} }
) )
func (ec *executionContext) unmarshalNTrustCenterAccessState2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐTrustCenterAccessState(ctx context.Context, v any) (coredata.TrustCenterAccessState, error) {
tmp, err := graphql.UnmarshalString(v)
res := unmarshalNTrustCenterAccessState2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐTrustCenterAccessState[tmp]
return res, graphql.ErrorOnPath(ctx, err)
}
func (ec *executionContext) marshalNTrustCenterAccessState2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐTrustCenterAccessState(ctx context.Context, sel ast.SelectionSet, v coredata.TrustCenterAccessState) graphql.Marshaler {
_ = sel
res := graphql.MarshalString(marshalNTrustCenterAccessState2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐTrustCenterAccessState[v])
if res == graphql.Null {
if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
graphql.AddErrorf(ctx, "the requested element is null which the schema does not allow")
}
}
return res
}
var (
unmarshalNTrustCenterAccessState2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐTrustCenterAccessState = map[string]coredata.TrustCenterAccessState{
"ACTIVE": coredata.TrustCenterAccessStateActive,
"INACTIVE": coredata.TrustCenterAccessStateInactive,
}
marshalNTrustCenterAccessState2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐTrustCenterAccessState = map[coredata.TrustCenterAccessState]string{
coredata.TrustCenterAccessStateActive: "ACTIVE",
coredata.TrustCenterAccessStateInactive: "INACTIVE",
}
)
func (ec *executionContext) marshalNTrustCenterDocumentAccess2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐTrustCenterDocumentAccess(ctx context.Context, sel ast.SelectionSet, v *types.TrustCenterDocumentAccess) graphql.Marshaler { func (ec *executionContext) marshalNTrustCenterDocumentAccess2ᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐTrustCenterDocumentAccess(ctx context.Context, sel ast.SelectionSet, v *types.TrustCenterDocumentAccess) graphql.Marshaler {
if v == nil { if v == nil {
if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {

View File

@@ -68,6 +68,7 @@ func NewProfile(profile *coredata.MembershipProfile) *Profile {
ID: profile.ID, ID: profile.ID,
FullName: profile.FullName, FullName: profile.FullName,
EmailAddress: profile.EmailAddress, EmailAddress: profile.EmailAddress,
State: profile.State,
AdditionalEmailAddresses: profile.AdditionalEmailAddresses, AdditionalEmailAddresses: profile.AdditionalEmailAddresses,
Kind: profile.Kind, Kind: profile.Kind,
Position: profile.Position, Position: profile.Position,

View File

@@ -45,8 +45,10 @@ func NewTrustCenterAccessEdge(tca *coredata.TrustCenterAccess, orderBy coredata.
func NewTrustCenterAccess(tca *coredata.TrustCenterAccess) *TrustCenterAccess { func NewTrustCenterAccess(tca *coredata.TrustCenterAccess) *TrustCenterAccess {
return &TrustCenterAccess{ return &TrustCenterAccess{
ID: tca.ID, ID: tca.ID,
CreatedAt: tca.CreatedAt, OrganizationID: tca.OrganizationID,
UpdatedAt: tca.UpdatedAt, IdentityID: tca.IdentityID,
CreatedAt: tca.CreatedAt,
UpdatedAt: tca.UpdatedAt,
} }
} }

View File

@@ -1623,6 +1623,7 @@ type Profile struct {
ID gid.GID `json:"id"` ID gid.GID `json:"id"`
FullName string `json:"fullName"` FullName string `json:"fullName"`
EmailAddress mail.Addr `json:"emailAddress"` EmailAddress mail.Addr `json:"emailAddress"`
State coredata.ProfileState `json:"state"`
AdditionalEmailAddresses []mail.Addr `json:"additionalEmailAddresses"` AdditionalEmailAddresses []mail.Addr `json:"additionalEmailAddresses"`
Kind *coredata.MembershipProfileKind `json:"kind,omitempty"` Kind *coredata.MembershipProfileKind `json:"kind,omitempty"`
Position *string `json:"position,omitempty"` Position *string `json:"position,omitempty"`
@@ -1892,19 +1893,17 @@ func (TrustCenter) IsNode() {}
func (this TrustCenter) GetID() gid.GID { return this.ID } func (this TrustCenter) GetID() gid.GID { return this.ID }
type TrustCenterAccess struct { type TrustCenterAccess struct {
ID gid.GID `json:"id"` ID gid.GID `json:"id"`
Email mail.Addr `json:"email"` NdaSignature *ElectronicSignature `json:"ndaSignature,omitempty"`
Name string `json:"name"` CreatedAt time.Time `json:"createdAt"`
State coredata.TrustCenterAccessState `json:"state"` UpdatedAt time.Time `json:"updatedAt"`
HasAcceptedNonDisclosureAgreement bool `json:"hasAcceptedNonDisclosureAgreement"` PendingRequestCount int `json:"pendingRequestCount"`
NdaSignature *ElectronicSignature `json:"ndaSignature,omitempty"` ActiveCount int `json:"activeCount"`
CreatedAt time.Time `json:"createdAt"` OrganizationID gid.GID `json:"organizationId"`
UpdatedAt time.Time `json:"updatedAt"` IdentityID gid.GID `json:"identityID"`
LastTokenExpiresAt *time.Time `json:"lastTokenExpiresAt,omitempty"` Profile *Profile `json:"profile"`
PendingRequestCount int `json:"pendingRequestCount"` AvailableDocumentAccesses *TrustCenterDocumentAccessConnection `json:"availableDocumentAccesses"`
ActiveCount int `json:"activeCount"` Permission bool `json:"permission"`
AvailableDocumentAccesses *TrustCenterDocumentAccessConnection `json:"availableDocumentAccesses"`
Permission bool `json:"permission"`
} }
func (TrustCenterAccess) IsNode() {} func (TrustCenterAccess) IsNode() {}

View File

@@ -7990,6 +7990,25 @@ func (r *trustCenterAccessResolver) ActiveCount(ctx context.Context, obj *types.
return count, nil return count, nil
} }
// Profile is the resolver for the profile field.
func (r *trustCenterAccessResolver) Profile(ctx context.Context, obj *types.TrustCenterAccess) (*types.Profile, error) {
if err := r.authorize(ctx, obj.ID, iam.ActionMembershipProfileGet); err != nil {
return nil, err
}
profile, err := r.iam.OrganizationService.GetProfileForIdentityAndOrganization(ctx, obj.IdentityID, obj.OrganizationID)
if err != nil {
if _, ok := errors.AsType[*iam.ErrProfileNotFound](err); ok {
return nil, gqlutils.NotFound(ctx, err)
}
r.logger.ErrorCtx(ctx, "cannot get profile", log.Error(err))
return nil, gqlutils.Internal(ctx)
}
return types.NewProfile(profile), nil
}
// AvailableDocumentAccesses is the resolver for the availableDocumentAccesses field. // AvailableDocumentAccesses is the resolver for the availableDocumentAccesses field.
func (r *trustCenterAccessResolver) AvailableDocumentAccesses(ctx context.Context, obj *types.TrustCenterAccess, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.OrderBy[coredata.TrustCenterDocumentAccessOrderField]) (*types.TrustCenterDocumentAccessConnection, error) { func (r *trustCenterAccessResolver) AvailableDocumentAccesses(ctx context.Context, obj *types.TrustCenterAccess, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.OrderBy[coredata.TrustCenterDocumentAccessOrderField]) (*types.TrustCenterDocumentAccessConnection, error) {
if err := r.authorize(ctx, obj.ID, probo.ActionTrustCenterAccessGet); err != nil { if err := r.authorize(ctx, obj.ID, probo.ActionTrustCenterAccessGet); err != nil {