Add status in trust center access tab
Signed-off-by: Émile Ré <nemile.re@gmail.com>
This commit is contained in:
@@ -112,6 +112,7 @@ export const loadTrustCenterAccessDocumentAccessesQuery = graphql`
|
|||||||
node {
|
node {
|
||||||
active
|
active
|
||||||
requested
|
requested
|
||||||
|
status
|
||||||
document {
|
document {
|
||||||
id
|
id
|
||||||
title
|
title
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* @generated SignedSource<<ef22c40e1c881ddd440a0468bae615f9>>
|
* @generated SignedSource<<bf1055f4f2fe5eb7a428afdd30f4f672>>
|
||||||
* @lightSyntaxTransform
|
* @lightSyntaxTransform
|
||||||
* @nogrep
|
* @nogrep
|
||||||
*/
|
*/
|
||||||
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
import { ConcreteRequest } from 'relay-runtime';
|
import { ConcreteRequest } from 'relay-runtime';
|
||||||
export type DocumentType = "ISMS" | "OTHER" | "POLICY" | "PROCEDURE";
|
export type DocumentType = "ISMS" | "OTHER" | "POLICY" | "PROCEDURE";
|
||||||
|
export type TrustCenterDocumentAccessStatus = "GRANTED" | "REJECTED" | "REQUESTED" | "REVOKED";
|
||||||
export type TrustCenterAccessGraphLoadDocumentAccessesQuery$variables = {
|
export type TrustCenterAccessGraphLoadDocumentAccessesQuery$variables = {
|
||||||
accessId: string;
|
accessId: string;
|
||||||
};
|
};
|
||||||
@@ -35,6 +36,7 @@ export type TrustCenterAccessGraphLoadDocumentAccessesQuery$data = {
|
|||||||
readonly id: string;
|
readonly id: string;
|
||||||
} | null | undefined;
|
} | null | undefined;
|
||||||
readonly requested: boolean;
|
readonly requested: boolean;
|
||||||
|
readonly status: TrustCenterDocumentAccessStatus;
|
||||||
readonly trustCenterFile: {
|
readonly trustCenterFile: {
|
||||||
readonly category: string;
|
readonly category: string;
|
||||||
readonly id: string;
|
readonly id: string;
|
||||||
@@ -103,6 +105,13 @@ v5 = {
|
|||||||
"storageKey": null
|
"storageKey": null
|
||||||
},
|
},
|
||||||
v6 = {
|
v6 = {
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"kind": "ScalarField",
|
||||||
|
"name": "status",
|
||||||
|
"storageKey": null
|
||||||
|
},
|
||||||
|
v7 = {
|
||||||
"alias": null,
|
"alias": null,
|
||||||
"args": null,
|
"args": null,
|
||||||
"concreteType": "Document",
|
"concreteType": "Document",
|
||||||
@@ -128,21 +137,21 @@ v6 = {
|
|||||||
],
|
],
|
||||||
"storageKey": null
|
"storageKey": null
|
||||||
},
|
},
|
||||||
v7 = {
|
v8 = {
|
||||||
"alias": null,
|
"alias": null,
|
||||||
"args": null,
|
"args": null,
|
||||||
"kind": "ScalarField",
|
"kind": "ScalarField",
|
||||||
"name": "filename",
|
"name": "filename",
|
||||||
"storageKey": null
|
"storageKey": null
|
||||||
},
|
},
|
||||||
v8 = {
|
v9 = {
|
||||||
"alias": null,
|
"alias": null,
|
||||||
"args": null,
|
"args": null,
|
||||||
"kind": "ScalarField",
|
"kind": "ScalarField",
|
||||||
"name": "name",
|
"name": "name",
|
||||||
"storageKey": null
|
"storageKey": null
|
||||||
},
|
},
|
||||||
v9 = {
|
v10 = {
|
||||||
"alias": null,
|
"alias": null,
|
||||||
"args": null,
|
"args": null,
|
||||||
"concreteType": "TrustCenterFile",
|
"concreteType": "TrustCenterFile",
|
||||||
@@ -151,7 +160,7 @@ v9 = {
|
|||||||
"plural": false,
|
"plural": false,
|
||||||
"selections": [
|
"selections": [
|
||||||
(v2/*: any*/),
|
(v2/*: any*/),
|
||||||
(v8/*: any*/),
|
(v9/*: any*/),
|
||||||
{
|
{
|
||||||
"alias": null,
|
"alias": null,
|
||||||
"args": null,
|
"args": null,
|
||||||
@@ -208,6 +217,7 @@ return {
|
|||||||
(v4/*: any*/),
|
(v4/*: any*/),
|
||||||
(v5/*: any*/),
|
(v5/*: any*/),
|
||||||
(v6/*: any*/),
|
(v6/*: any*/),
|
||||||
|
(v7/*: any*/),
|
||||||
{
|
{
|
||||||
"alias": null,
|
"alias": null,
|
||||||
"args": null,
|
"args": null,
|
||||||
@@ -217,7 +227,7 @@ return {
|
|||||||
"plural": false,
|
"plural": false,
|
||||||
"selections": [
|
"selections": [
|
||||||
(v2/*: any*/),
|
(v2/*: any*/),
|
||||||
(v7/*: any*/),
|
(v8/*: any*/),
|
||||||
{
|
{
|
||||||
"alias": null,
|
"alias": null,
|
||||||
"args": null,
|
"args": null,
|
||||||
@@ -235,7 +245,7 @@ return {
|
|||||||
"name": "framework",
|
"name": "framework",
|
||||||
"plural": false,
|
"plural": false,
|
||||||
"selections": [
|
"selections": [
|
||||||
(v8/*: any*/)
|
(v9/*: any*/)
|
||||||
],
|
],
|
||||||
"storageKey": null
|
"storageKey": null
|
||||||
}
|
}
|
||||||
@@ -245,7 +255,7 @@ return {
|
|||||||
],
|
],
|
||||||
"storageKey": null
|
"storageKey": null
|
||||||
},
|
},
|
||||||
(v9/*: any*/)
|
(v10/*: any*/)
|
||||||
],
|
],
|
||||||
"storageKey": null
|
"storageKey": null
|
||||||
}
|
}
|
||||||
@@ -318,6 +328,7 @@ return {
|
|||||||
(v4/*: any*/),
|
(v4/*: any*/),
|
||||||
(v5/*: any*/),
|
(v5/*: any*/),
|
||||||
(v6/*: any*/),
|
(v6/*: any*/),
|
||||||
|
(v7/*: any*/),
|
||||||
{
|
{
|
||||||
"alias": null,
|
"alias": null,
|
||||||
"args": null,
|
"args": null,
|
||||||
@@ -327,7 +338,7 @@ return {
|
|||||||
"plural": false,
|
"plural": false,
|
||||||
"selections": [
|
"selections": [
|
||||||
(v2/*: any*/),
|
(v2/*: any*/),
|
||||||
(v7/*: any*/),
|
(v8/*: any*/),
|
||||||
{
|
{
|
||||||
"alias": null,
|
"alias": null,
|
||||||
"args": null,
|
"args": null,
|
||||||
@@ -345,7 +356,7 @@ return {
|
|||||||
"name": "framework",
|
"name": "framework",
|
||||||
"plural": false,
|
"plural": false,
|
||||||
"selections": [
|
"selections": [
|
||||||
(v8/*: any*/),
|
(v9/*: any*/),
|
||||||
(v2/*: any*/)
|
(v2/*: any*/)
|
||||||
],
|
],
|
||||||
"storageKey": null
|
"storageKey": null
|
||||||
@@ -356,7 +367,7 @@ return {
|
|||||||
],
|
],
|
||||||
"storageKey": null
|
"storageKey": null
|
||||||
},
|
},
|
||||||
(v9/*: any*/)
|
(v10/*: any*/)
|
||||||
],
|
],
|
||||||
"storageKey": null
|
"storageKey": null
|
||||||
}
|
}
|
||||||
@@ -376,16 +387,16 @@ return {
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"params": {
|
"params": {
|
||||||
"cacheID": "50de5f19f1c13ee4d4a0b125231b989f",
|
"cacheID": "a764b27e48509dfdf4a7a03c5f00ea59",
|
||||||
"id": null,
|
"id": null,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"name": "TrustCenterAccessGraphLoadDocumentAccessesQuery",
|
"name": "TrustCenterAccessGraphLoadDocumentAccessesQuery",
|
||||||
"operationKind": "query",
|
"operationKind": "query",
|
||||||
"text": "query TrustCenterAccessGraphLoadDocumentAccessesQuery(\n $accessId: ID!\n) {\n node(id: $accessId) {\n __typename\n ... on TrustCenterAccess {\n id\n availableDocumentAccesses(first: 100, orderBy: {field: CREATED_AT, direction: DESC}) {\n edges {\n node {\n active\n requested\n document {\n id\n title\n documentType\n }\n report {\n id\n filename\n audit {\n id\n framework {\n name\n id\n }\n }\n }\n trustCenterFile {\n id\n name\n category\n }\n }\n }\n }\n }\n id\n }\n}\n"
|
"text": "query TrustCenterAccessGraphLoadDocumentAccessesQuery(\n $accessId: ID!\n) {\n node(id: $accessId) {\n __typename\n ... on TrustCenterAccess {\n id\n availableDocumentAccesses(first: 100, orderBy: {field: CREATED_AT, direction: DESC}) {\n edges {\n node {\n active\n requested\n status\n document {\n id\n title\n documentType\n }\n report {\n id\n filename\n audit {\n id\n framework {\n name\n id\n }\n }\n }\n trustCenterFile {\n id\n name\n category\n }\n }\n }\n }\n }\n id\n }\n}\n"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
||||||
(node as any).hash = "64c69558e335d4cecb14192d8c5b66b8";
|
(node as any).hash = "f40dbb607d0bd5adb85b0a8377b96b32";
|
||||||
|
|
||||||
export default node;
|
export default node;
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ type ContextType = {
|
|||||||
|
|
||||||
type DocumentAccessInfo = {
|
type DocumentAccessInfo = {
|
||||||
active: boolean;
|
active: boolean;
|
||||||
|
status: string;
|
||||||
requested: boolean;
|
requested: boolean;
|
||||||
document?: {
|
document?: {
|
||||||
id: string;
|
id: string;
|
||||||
@@ -185,7 +186,7 @@ export default function TrustCenterAccessTab() {
|
|||||||
setIsLoadingDocumentAccesses(false);
|
setIsLoadingDocumentAccesses(false);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const formattedDocumentAccesses = editingDocumentAccesses
|
const formattedDocumentAccesses: NonNullable<ReturnType<typeof getDocumentAccessInfo>>[] = editingDocumentAccesses
|
||||||
?.map((docAccess) => getDocumentAccessInfo(docAccess, __))
|
?.map((docAccess) => getDocumentAccessInfo(docAccess, __))
|
||||||
?.filter((info) => info !== null) ?? [];
|
?.filter((info) => info !== null) ?? [];
|
||||||
|
|
||||||
@@ -210,6 +211,7 @@ export default function TrustCenterAccessTab() {
|
|||||||
id: docAccess.document?.id,
|
id: docAccess.document?.id,
|
||||||
requested: docAccess.requested,
|
requested: docAccess.requested,
|
||||||
active: docAccess.active,
|
active: docAccess.active,
|
||||||
|
status: docAccess.status,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if (docAccess.report) {
|
if (docAccess.report) {
|
||||||
@@ -221,6 +223,7 @@ export default function TrustCenterAccessTab() {
|
|||||||
id: docAccess.report?.id,
|
id: docAccess.report?.id,
|
||||||
requested: docAccess.requested,
|
requested: docAccess.requested,
|
||||||
active: docAccess.active,
|
active: docAccess.active,
|
||||||
|
status: docAccess.status,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if (docAccess.trustCenterFile) {
|
if (docAccess.trustCenterFile) {
|
||||||
@@ -232,10 +235,11 @@ export default function TrustCenterAccessTab() {
|
|||||||
id: docAccess.trustCenterFile?.id,
|
id: docAccess.trustCenterFile?.id,
|
||||||
requested: docAccess.requested,
|
requested: docAccess.requested,
|
||||||
active: docAccess.active,
|
active: docAccess.active,
|
||||||
|
status: docAccess.status,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
throw new Error("Unknown trust center access document type");
|
||||||
}
|
}
|
||||||
|
|
||||||
type AccessType = {
|
type AccessType = {
|
||||||
@@ -638,17 +642,15 @@ export default function TrustCenterAccessTab() {
|
|||||||
<Th>{__("Name")}</Th>
|
<Th>{__("Name")}</Th>
|
||||||
<Th>{__("Type")}</Th>
|
<Th>{__("Type")}</Th>
|
||||||
<Th>{__("Category")}</Th>
|
<Th>{__("Category")}</Th>
|
||||||
<Th></Th>
|
|
||||||
<Th>
|
<Th>
|
||||||
<div className="flex justify-end">
|
|
||||||
{__("Access")}
|
{__("Access")}
|
||||||
</div>
|
|
||||||
</Th>
|
</Th>
|
||||||
|
<Th></Th>
|
||||||
</Tr>
|
</Tr>
|
||||||
</Thead>
|
</Thead>
|
||||||
<Tbody>
|
<Tbody>
|
||||||
{formattedDocumentAccesses.map((info) => {
|
{formattedDocumentAccesses.map((info) => {
|
||||||
const { variant, name, type, category, id, requested } = info;
|
const { variant, name, type, category, id, status } = info;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Tr key={id}>
|
<Tr key={id}>
|
||||||
@@ -668,20 +670,13 @@ export default function TrustCenterAccessTab() {
|
|||||||
</div>
|
</div>
|
||||||
</Td>
|
</Td>
|
||||||
<Td>
|
<Td>
|
||||||
{requested && (
|
<Badge variant="info">
|
||||||
<Badge variant="warning">
|
{status}
|
||||||
{__("Requested")}
|
|
||||||
</Badge>
|
</Badge>
|
||||||
)}
|
|
||||||
</Td>
|
</Td>
|
||||||
<Td>
|
<Td>
|
||||||
<div className="flex justify-end">
|
<div className="flex justify-end">
|
||||||
<Checkbox
|
<Button onClick={() => handleToggleDocumentAccess(id, true)}>Grant</Button>
|
||||||
checked={selectedDocumentAccesses.has(id)}
|
|
||||||
onChange={(active) => {
|
|
||||||
if (id) handleToggleDocumentAccess(id, active);
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</Td>
|
</Td>
|
||||||
</Tr>
|
</Tr>
|
||||||
|
|||||||
@@ -2224,8 +2224,6 @@ type TrustCenterAccessResolver interface {
|
|||||||
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)
|
||||||
}
|
}
|
||||||
type TrustCenterDocumentAccessResolver interface {
|
type TrustCenterDocumentAccessResolver interface {
|
||||||
Status(ctx context.Context, obj *types.TrustCenterDocumentAccess) (coredata.TrustCenterDocumentAccessStatus, error)
|
|
||||||
|
|
||||||
Document(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.Document, error)
|
Document(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.Document, error)
|
||||||
Report(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.Report, error)
|
Report(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.Report, error)
|
||||||
TrustCenterFile(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.TrustCenterFile, error)
|
TrustCenterFile(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.TrustCenterFile, error)
|
||||||
@@ -47161,7 +47159,7 @@ func (ec *executionContext) _TrustCenterDocumentAccess_status(ctx context.Contex
|
|||||||
field,
|
field,
|
||||||
ec.fieldContext_TrustCenterDocumentAccess_status,
|
ec.fieldContext_TrustCenterDocumentAccess_status,
|
||||||
func(ctx context.Context) (any, error) {
|
func(ctx context.Context) (any, error) {
|
||||||
return ec.resolvers.TrustCenterDocumentAccess().Status(ctx, obj)
|
return obj.Status, nil
|
||||||
},
|
},
|
||||||
nil,
|
nil,
|
||||||
ec.marshalNTrustCenterDocumentAccessStatus2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐTrustCenterDocumentAccessStatus,
|
ec.marshalNTrustCenterDocumentAccessStatus2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐTrustCenterDocumentAccessStatus,
|
||||||
@@ -47174,8 +47172,8 @@ func (ec *executionContext) fieldContext_TrustCenterDocumentAccess_status(_ cont
|
|||||||
fc = &graphql.FieldContext{
|
fc = &graphql.FieldContext{
|
||||||
Object: "TrustCenterDocumentAccess",
|
Object: "TrustCenterDocumentAccess",
|
||||||
Field: field,
|
Field: field,
|
||||||
IsMethod: true,
|
IsMethod: false,
|
||||||
IsResolver: true,
|
IsResolver: false,
|
||||||
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
|
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
|
||||||
return nil, errors.New("field of type TrustCenterDocumentAccessStatus does not have child fields")
|
return nil, errors.New("field of type TrustCenterDocumentAccessStatus does not have child fields")
|
||||||
},
|
},
|
||||||
@@ -78827,41 +78825,10 @@ func (ec *executionContext) _TrustCenterDocumentAccess(ctx context.Context, sel
|
|||||||
atomic.AddUint32(&out.Invalids, 1)
|
atomic.AddUint32(&out.Invalids, 1)
|
||||||
}
|
}
|
||||||
case "status":
|
case "status":
|
||||||
field := field
|
out.Values[i] = ec._TrustCenterDocumentAccess_status(ctx, field, obj)
|
||||||
|
if out.Values[i] == graphql.Null {
|
||||||
innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) {
|
atomic.AddUint32(&out.Invalids, 1)
|
||||||
defer func() {
|
|
||||||
if r := recover(); r != nil {
|
|
||||||
ec.Error(ctx, ec.Recover(ctx, r))
|
|
||||||
}
|
}
|
||||||
}()
|
|
||||||
res = ec._TrustCenterDocumentAccess_status(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) })
|
|
||||||
case "requested":
|
case "requested":
|
||||||
out.Values[i] = ec._TrustCenterDocumentAccess_requested(ctx, field, obj)
|
out.Values[i] = ec._TrustCenterDocumentAccess_requested(ctx, field, obj)
|
||||||
if out.Values[i] == graphql.Null {
|
if out.Values[i] == graphql.Null {
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ type (
|
|||||||
ID gid.GID `json:"id"`
|
ID gid.GID `json:"id"`
|
||||||
OrganizationID gid.GID `json:"-"`
|
OrganizationID gid.GID `json:"-"`
|
||||||
Active bool `json:"active"`
|
Active bool `json:"active"`
|
||||||
|
Status coredata.TrustCenterDocumentAccessStatus `json:"status"`
|
||||||
Requested bool `json:"requested"`
|
Requested bool `json:"requested"`
|
||||||
CreatedAt time.Time `json:"createdAt"`
|
CreatedAt time.Time `json:"createdAt"`
|
||||||
UpdatedAt time.Time `json:"updatedAt"`
|
UpdatedAt time.Time `json:"updatedAt"`
|
||||||
@@ -59,6 +60,7 @@ func NewTrustCenterDocumentAccess(tcda *coredata.TrustCenterDocumentAccess) *Tru
|
|||||||
ID: tcda.ID,
|
ID: tcda.ID,
|
||||||
OrganizationID: tcda.OrganizationID,
|
OrganizationID: tcda.OrganizationID,
|
||||||
Active: tcda.Active,
|
Active: tcda.Active,
|
||||||
|
Status: tcda.Status,
|
||||||
Requested: tcda.Requested,
|
Requested: tcda.Requested,
|
||||||
CreatedAt: tcda.CreatedAt,
|
CreatedAt: tcda.CreatedAt,
|
||||||
UpdatedAt: tcda.UpdatedAt,
|
UpdatedAt: tcda.UpdatedAt,
|
||||||
|
|||||||
@@ -6492,11 +6492,6 @@ func (r *trustCenterAccessResolver) AvailableDocumentAccesses(ctx context.Contex
|
|||||||
return types.NewTrustCenterDocumentAccessConnection(result, obj, obj.ID), nil
|
return types.NewTrustCenterDocumentAccessConnection(result, obj, obj.ID), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Status is the resolver for the status field.
|
|
||||||
func (r *trustCenterDocumentAccessResolver) Status(ctx context.Context, obj *types.TrustCenterDocumentAccess) (coredata.TrustCenterDocumentAccessStatus, error) {
|
|
||||||
panic(fmt.Errorf("not implemented: Status - status"))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Document is the resolver for the document field.
|
// Document is the resolver for the document field.
|
||||||
func (r *trustCenterDocumentAccessResolver) Document(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.Document, error) {
|
func (r *trustCenterDocumentAccessResolver) Document(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.Document, error) {
|
||||||
r.MustBeAuthorized(ctx, obj.ID, authz.ActionGet)
|
r.MustBeAuthorized(ctx, obj.ID, authz.ActionGet)
|
||||||
|
|||||||
Reference in New Issue
Block a user