⚠️ OpenSpec-managed issue — this content is automatically synced
from the openspec/ directory. Manual edits will be overwritten on next sync.
Artifacts
Specs
Tasks
Synced from openspec/changes/contract-approval-ownership-guard by OpenSpec workflow
App: softwarecatalog
Artifacts
Specs
Tasks
ContractApprovalService::authorizeSubmit(string $contractUuid, \OCP\IUser $user, array $groupNames): boolContractApprovalService::loadContract()used by the submitsubmitForApproval()MUST throw (or the controller MUST short-circuitContractApprovalController, injectIGroupManagerandIConfigauthorizeContract(string $contractUuid): ?JSONResponseauthorizeContract()at the top ofsubmit()andadmin/aanbod-beheerderaanbod-beheerder(matching_organisation) andsubmitRenewal()covered by the same three cases.ContractApprovalService/ContractApprovalControlleropenspec/specs/contract-decision-delegation/spec.md(or addhydra/openspec/architecture/adr-005-security.md's trackedSynced from
openspec/changes/contract-approval-ownership-guardby OpenSpec workflowApp:
softwarecatalog