Expose permission field on each core schema node implementation

Signed-off-by: Émile Ré <nemile.re@gmail.com>
This commit is contained in:
Émile Ré
2025-12-30 17:35:52 +01:00
committed by Bryan Frimin
parent bf83e162d9
commit ca533ce7a7
15 changed files with 3974 additions and 240 deletions

View File

@@ -94,6 +94,11 @@ func (r *assetResolver) Organization(ctx context.Context, obj *types.Asset) (*ty
return types.NewOrganization(org), nil
}
// Permission is the resolver for the permission field.
func (r *assetResolver) Permission(ctx context.Context, obj *types.Asset, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *assetConnectionResolver) TotalCount(ctx context.Context, obj *types.AssetConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionAssetList)
@@ -222,6 +227,11 @@ func (r *auditResolver) Controls(ctx context.Context, obj *types.Audit, first *i
return types.NewControlConnection(page, r, obj.ID, controlFilter), nil
}
// Permission is the resolver for the permission field.
func (r *auditResolver) Permission(ctx context.Context, obj *types.Audit, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *auditConnectionResolver) TotalCount(ctx context.Context, obj *types.AuditConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionAuditList)
@@ -273,6 +283,11 @@ func (r *continualImprovementResolver) Owner(ctx context.Context, obj *types.Con
return types.NewPeople(people), nil
}
// Permission is the resolver for the permission field.
func (r *continualImprovementResolver) Permission(ctx context.Context, obj *types.ContinualImprovement, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *continualImprovementConnectionResolver) TotalCount(ctx context.Context, obj *types.ContinualImprovementConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionContinualImprovementList)
@@ -500,6 +515,11 @@ func (r *controlResolver) StateOfApplicabilityControls(ctx context.Context, obj
return types.NewStateOfApplicabilityControlConnection(p, r, obj.ID), nil
}
// Permission is the resolver for the permission field.
func (r *controlResolver) Permission(ctx context.Context, obj *types.Control, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *controlConnectionResolver) TotalCount(ctx context.Context, obj *types.ControlConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionControlList)
@@ -548,6 +568,11 @@ func (r *controlConnectionResolver) TotalCount(ctx context.Context, obj *types.C
panic(fmt.Errorf("unsupported resolver: %T", obj.Resolver))
}
// Permission is the resolver for the permission field.
func (r *customDomainResolver) Permission(ctx context.Context, obj *types.CustomDomain, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// ProcessingActivity is the resolver for the processingActivity field.
func (r *dataProtectionImpactAssessmentResolver) ProcessingActivity(ctx context.Context, obj *types.DataProtectionImpactAssessment) (*types.ProcessingActivity, error) {
r.MustAuthorize(ctx, obj.ID, probo.ActionProcessingActivityList)
@@ -589,6 +614,11 @@ func (r *dataProtectionImpactAssessmentResolver) Organization(ctx context.Contex
return types.NewOrganization(organization), nil
}
// Permission is the resolver for the permission field.
func (r *dataProtectionImpactAssessmentResolver) Permission(ctx context.Context, obj *types.DataProtectionImpactAssessment, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *dataProtectionImpactAssessmentConnectionResolver) TotalCount(ctx context.Context, obj *types.DataProtectionImpactAssessmentConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionDataProtectionImpactAssessmentList)
@@ -798,6 +828,11 @@ func (r *documentResolver) Controls(ctx context.Context, obj *types.Document, fi
return types.NewControlConnection(page, r, obj.ID, controlFilter), nil
}
// Permission is the resolver for the permission field.
func (r *documentResolver) Permission(ctx context.Context, obj *types.Document, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *documentConnectionResolver) TotalCount(ctx context.Context, obj *types.DocumentConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionDocumentList)
@@ -955,6 +990,11 @@ func (r *documentVersionSignatureResolver) SignedBy(ctx context.Context, obj *ty
return types.NewPeople(people), nil
}
// Permission is the resolver for the permission field.
func (r *documentVersionSignatureResolver) Permission(ctx context.Context, obj *types.DocumentVersionSignature, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// File is the resolver for the file field.
func (r *evidenceResolver) File(ctx context.Context, obj *types.Evidence) (*types.File, error) {
r.MustAuthorize(ctx, obj.ID, probo.ActionFileGet)
@@ -1019,6 +1059,11 @@ func (r *evidenceResolver) Measure(ctx context.Context, obj *types.Evidence) (*t
return types.NewMeasure(measure), nil
}
// Permission is the resolver for the permission field.
func (r *evidenceResolver) Permission(ctx context.Context, obj *types.Evidence, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *evidenceConnectionResolver) TotalCount(ctx context.Context, obj *types.EvidenceConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionEvidenceList)
@@ -1132,6 +1177,11 @@ func (r *frameworkResolver) DarkLogoURL(ctx context.Context, obj *types.Framewor
return prb.Frameworks.GenerateDarkLogoURL(ctx, obj.ID, 1*time.Hour)
}
// Permission is the resolver for the permission field.
func (r *frameworkResolver) Permission(ctx context.Context, obj *types.Framework, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *frameworkConnectionResolver) TotalCount(ctx context.Context, obj *types.FrameworkConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionFrameworkList)
@@ -1274,6 +1324,11 @@ func (r *measureResolver) Controls(ctx context.Context, obj *types.Measure, firs
return types.NewControlConnection(page, r, obj.ID, controlFilter), nil
}
// Permission is the resolver for the permission field.
func (r *measureResolver) Permission(ctx context.Context, obj *types.Measure, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *measureConnectionResolver) TotalCount(ctx context.Context, obj *types.MeasureConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionMeasureList)
@@ -1353,6 +1408,11 @@ func (r *meetingResolver) Organization(ctx context.Context, obj *types.Meeting)
return types.NewOrganization(organization), nil
}
// Permission is the resolver for the permission field.
func (r *meetingResolver) Permission(ctx context.Context, obj *types.Meeting, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *meetingConnectionResolver) TotalCount(ctx context.Context, obj *types.MeetingConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionMeetingList)
@@ -4748,6 +4808,11 @@ func (r *nonconformityResolver) Owner(ctx context.Context, obj *types.Nonconform
return types.NewPeople(people), nil
}
// Permission is the resolver for the permission field.
func (r *nonconformityResolver) Permission(ctx context.Context, obj *types.Nonconformity, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *nonconformityConnectionResolver) TotalCount(ctx context.Context, obj *types.NonconformityConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionNonconformityList)
@@ -4810,6 +4875,11 @@ func (r *obligationResolver) Owner(ctx context.Context, obj *types.Obligation) (
return types.NewPeople(people), nil
}
// Permission is the resolver for the permission field.
func (r *obligationResolver) Permission(ctx context.Context, obj *types.Obligation, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *obligationConnectionResolver) TotalCount(ctx context.Context, obj *types.ObligationConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionObligationList)
@@ -5645,6 +5715,16 @@ func (r *organizationResolver) CustomDomain(ctx context.Context, obj *types.Orga
return types.NewCustomDomain(domain, r.customDomainCname), nil
}
// Permission is the resolver for the permission field.
func (r *organizationResolver) Permission(ctx context.Context, obj *types.Organization, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// Permission is the resolver for the permission field.
func (r *peopleResolver) Permission(ctx context.Context, obj *types.People, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *peopleConnectionResolver) TotalCount(ctx context.Context, obj *types.PeopleConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionPeopleList)
@@ -5772,6 +5852,11 @@ func (r *processingActivityResolver) TransferImpactAssessment(ctx context.Contex
return types.NewTransferImpactAssessment(tia), nil
}
// Permission is the resolver for the permission field.
func (r *processingActivityResolver) Permission(ctx context.Context, obj *types.ProcessingActivity, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *processingActivityConnectionResolver) TotalCount(ctx context.Context, obj *types.ProcessingActivityConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionProcessingActivityList)
@@ -6153,6 +6238,11 @@ func (r *reportResolver) Audit(ctx context.Context, obj *types.Report) (*types.A
return types.NewAudit(audit), nil
}
// Permission is the resolver for the permission field.
func (r *reportResolver) Permission(ctx context.Context, obj *types.Report, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// Organization is the resolver for the organization field.
func (r *rightsRequestResolver) Organization(ctx context.Context, obj *types.RightsRequest) (*types.Organization, error) {
r.MustAuthorize(ctx, obj.ID, iam.ActionGetOrganization)
@@ -6367,6 +6457,11 @@ func (r *riskResolver) Obligations(ctx context.Context, obj *types.Risk, first *
return types.NewObligationConnection(page, r, obj.ID, filter), nil
}
// Permission is the resolver for the permission field.
func (r *riskResolver) Permission(ctx context.Context, obj *types.Risk, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *riskConnectionResolver) TotalCount(ctx context.Context, obj *types.RiskConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionRiskList)
@@ -6496,6 +6591,11 @@ func (r *snapshotResolver) Controls(ctx context.Context, obj *types.Snapshot, fi
return types.NewControlConnection(page, r, obj.ID, controlFilter), nil
}
// Permission is the resolver for the permission field.
func (r *snapshotResolver) Permission(ctx context.Context, obj *types.Snapshot, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *snapshotConnectionResolver) TotalCount(ctx context.Context, obj *types.SnapshotConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionSnapshotList)
@@ -6731,6 +6831,11 @@ func (r *taskResolver) Evidences(ctx context.Context, obj *types.Task, first *in
return types.NewEvidenceConnection(page, r, obj.ID), nil
}
// Permission is the resolver for the permission field.
func (r *taskResolver) Permission(ctx context.Context, obj *types.Task, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *taskConnectionResolver) TotalCount(ctx context.Context, obj *types.TaskConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionTaskList)
@@ -6787,6 +6892,11 @@ func (r *transferImpactAssessmentResolver) Organization(ctx context.Context, obj
return types.NewOrganization(organization), nil
}
// Permission is the resolver for the permission field.
func (r *transferImpactAssessmentResolver) Permission(ctx context.Context, obj *types.TransferImpactAssessment, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *transferImpactAssessmentConnectionResolver) TotalCount(ctx context.Context, obj *types.TransferImpactAssessmentConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionTransferImpactAssessmentList)
@@ -6896,6 +7006,11 @@ func (r *trustCenterResolver) References(ctx context.Context, obj *types.TrustCe
return types.NewTrustCenterReferenceConnection(result, obj.ID), nil
}
// Permission is the resolver for the permission field.
func (r *trustCenterResolver) Permission(ctx context.Context, obj *types.TrustCenter, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// PendingRequestCount is the resolver for the pendingRequestCount field.
func (r *trustCenterAccessResolver) PendingRequestCount(ctx context.Context, obj *types.TrustCenterAccess) (int, error) {
r.MustAuthorize(ctx, obj.ID, probo.ActionTrustCenterAccessGet)
@@ -6950,6 +7065,11 @@ func (r *trustCenterAccessResolver) AvailableDocumentAccesses(ctx context.Contex
return types.NewTrustCenterDocumentAccessConnection(result, obj, obj.ID), nil
}
// Permission is the resolver for the permission field.
func (r *trustCenterAccessResolver) Permission(ctx context.Context, obj *types.TrustCenterAccess, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// Document is the resolver for the document field.
func (r *trustCenterDocumentAccessResolver) Document(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.Document, error) {
r.MustAuthorize(ctx, obj.ID, probo.ActionDocumentGet)
@@ -7086,6 +7206,11 @@ func (r *trustCenterReferenceResolver) LogoURL(ctx context.Context, obj *types.T
return fileURL, nil
}
// Permission is the resolver for the permission field.
func (r *trustCenterReferenceResolver) Permission(ctx context.Context, obj *types.TrustCenterReference, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *trustCenterReferenceConnectionResolver) TotalCount(ctx context.Context, obj *types.TrustCenterReferenceConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionTrustCenterReferenceList)
@@ -7324,6 +7449,11 @@ func (r *vendorResolver) SecurityOwner(ctx context.Context, obj *types.Vendor) (
return types.NewPeople(people), nil
}
// Permission is the resolver for the permission field.
func (r *vendorResolver) Permission(ctx context.Context, obj *types.Vendor, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// Vendor is the resolver for the vendor field.
func (r *vendorBusinessAssociateAgreementResolver) Vendor(ctx context.Context, obj *types.VendorBusinessAssociateAgreement) (*types.Vendor, error) {
r.MustAuthorize(ctx, obj.ID, probo.ActionVendorGet)
@@ -7356,6 +7486,11 @@ func (r *vendorBusinessAssociateAgreementResolver) FileURL(ctx context.Context,
return fileURL, nil
}
// Permission is the resolver for the permission field.
func (r *vendorBusinessAssociateAgreementResolver) Permission(ctx context.Context, obj *types.VendorBusinessAssociateAgreement, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// Vendor is the resolver for the vendor field.
func (r *vendorComplianceReportResolver) Vendor(ctx context.Context, obj *types.VendorComplianceReport) (*types.Vendor, error) {
r.MustAuthorize(ctx, obj.ID, probo.ActionVendorGet)
@@ -7401,6 +7536,11 @@ func (r *vendorComplianceReportResolver) File(ctx context.Context, obj *types.Ve
return types.NewFile(file), nil
}
// Permission is the resolver for the permission field.
func (r *vendorComplianceReportResolver) Permission(ctx context.Context, obj *types.VendorComplianceReport, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// TotalCount is the resolver for the totalCount field.
func (r *vendorConnectionResolver) TotalCount(ctx context.Context, obj *types.VendorConnection) (int, error) {
r.MustAuthorize(ctx, obj.ParentID, probo.ActionVendorList)
@@ -7455,6 +7595,11 @@ func (r *vendorContactResolver) Vendor(ctx context.Context, obj *types.VendorCon
return types.NewVendor(vendor), nil
}
// Permission is the resolver for the permission field.
func (r *vendorContactResolver) Permission(ctx context.Context, obj *types.VendorContact, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// Vendor is the resolver for the vendor field.
func (r *vendorDataPrivacyAgreementResolver) Vendor(ctx context.Context, obj *types.VendorDataPrivacyAgreement) (*types.Vendor, error) {
r.MustAuthorize(ctx, obj.ID, probo.ActionVendorGet)
@@ -7487,6 +7632,11 @@ func (r *vendorDataPrivacyAgreementResolver) FileURL(ctx context.Context, obj *t
return fileURL, nil
}
// Permission is the resolver for the permission field.
func (r *vendorDataPrivacyAgreementResolver) Permission(ctx context.Context, obj *types.VendorDataPrivacyAgreement, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// Vendor is the resolver for the vendor field.
func (r *vendorRiskAssessmentResolver) Vendor(ctx context.Context, obj *types.VendorRiskAssessment) (*types.Vendor, error) {
r.MustAuthorize(ctx, obj.ID, probo.ActionVendorGet)
@@ -7505,6 +7655,11 @@ func (r *vendorRiskAssessmentResolver) Vendor(ctx context.Context, obj *types.Ve
return types.NewVendor(vendor), nil
}
// Permission is the resolver for the permission field.
func (r *vendorRiskAssessmentResolver) Permission(ctx context.Context, obj *types.VendorRiskAssessment, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// Vendor is the resolver for the vendor field.
func (r *vendorServiceResolver) Vendor(ctx context.Context, obj *types.VendorService) (*types.Vendor, error) {
r.MustAuthorize(ctx, obj.ID, probo.ActionVendorGet)
@@ -7523,6 +7678,11 @@ func (r *vendorServiceResolver) Vendor(ctx context.Context, obj *types.VendorSer
return types.NewVendor(vendor), nil
}
// Permission is the resolver for the permission field.
func (r *vendorServiceResolver) Permission(ctx context.Context, obj *types.VendorService, action string) (bool, error) {
return r.Resolver.Permission(ctx, obj, action)
}
// SignableDocuments is the resolver for the signableDocuments field.
func (r *viewerResolver) SignableDocuments(ctx context.Context, obj *types.Viewer, organizationID gid.GID, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.DocumentOrderBy) (*types.SignableDocumentConnection, error) {
r.MustAuthorize(ctx, organizationID, probo.ActionDocumentList)
@@ -7630,6 +7790,9 @@ func (r *Resolver) ControlConnection() schema.ControlConnectionResolver {
return &controlConnectionResolver{r}
}
// CustomDomain returns schema.CustomDomainResolver implementation.
func (r *Resolver) CustomDomain() schema.CustomDomainResolver { return &customDomainResolver{r} }
// DataProtectionImpactAssessment returns schema.DataProtectionImpactAssessmentResolver implementation.
func (r *Resolver) DataProtectionImpactAssessment() schema.DataProtectionImpactAssessmentResolver {
return &dataProtectionImpactAssessmentResolver{r}
@@ -7723,6 +7886,9 @@ func (r *Resolver) ObligationConnection() schema.ObligationConnectionResolver {
// Organization returns schema.OrganizationResolver implementation.
func (r *Resolver) Organization() schema.OrganizationResolver { return &organizationResolver{r} }
// People returns schema.PeopleResolver implementation.
func (r *Resolver) People() schema.PeopleResolver { return &peopleResolver{r} }
// PeopleConnection returns schema.PeopleConnectionResolver implementation.
func (r *Resolver) PeopleConnection() schema.PeopleConnectionResolver {
return &peopleConnectionResolver{r}
@@ -7885,6 +8051,7 @@ type continualImprovementResolver struct{ *Resolver }
type continualImprovementConnectionResolver struct{ *Resolver }
type controlResolver struct{ *Resolver }
type controlConnectionResolver struct{ *Resolver }
type customDomainResolver struct{ *Resolver }
type dataProtectionImpactAssessmentResolver struct{ *Resolver }
type dataProtectionImpactAssessmentConnectionResolver struct{ *Resolver }
type datumResolver struct{ *Resolver }
@@ -7908,6 +8075,7 @@ type nonconformityConnectionResolver struct{ *Resolver }
type obligationResolver struct{ *Resolver }
type obligationConnectionResolver struct{ *Resolver }
type organizationResolver struct{ *Resolver }
type peopleResolver struct{ *Resolver }
type peopleConnectionResolver struct{ *Resolver }
type processingActivityResolver struct{ *Resolver }
type processingActivityConnectionResolver struct{ *Resolver }