Skip to content

Permission Matrix ​

This matrix covers the operator workflow checked for MHPAY-29. Permissions are scoped by organization/location through UserRoleAssignment.

Role mapping:

  • Admin is the legacy alias for MegaAdmin.
  • Operator is the legacy alias for PaymentOperator.
  • Manager is represented by the implemented MegaManager role. There is no separate seeded Manager role.
  • Viewer is read-only.
Workflow areaActionBackend permission / policyAdmin / MegaAdminAccountantOperator / PaymentOperatorManager / MegaManagerViewerFrontend visibilityBackend expected resultNotes
Bank importsView bank importslocation.bank_statements.view / bank_statements.viewYesYesYesYesYesShow imports/list routes200 in allowed scopeRead-only for Viewer.
Bank importsUpload bank statementlocation.bank_statements.upload / bank_statements.importYesYesYesYesNoShow upload route/actions only with upload permission403 for ViewerQuota may still block upload.
Bank importsView Quality reportlocation.bank_statements.view / bank_statements.viewYesYesYesYesYesShow report tab/link with import view permission200 in allowed scopeSame read permission as import detail.
Bank importsConfirm/reject duplicateslocation.transactions.matchYesYesYesYesNoShow duplicate decision buttons only with match permission403 for ViewerTreated as transaction review mutation.
MatchingManual counterparty matchinglocation.transactions.match / counterparty.matchYesYesYesYesNoShow match action only with match permission403 for ViewerScoped to transaction location.
MatchingCreate matching ruleslocation.counterparties.manage / counterparty.matchYesYesYesYesNoShow create-rule action only with match/manage permission403 for ViewerRule inherits transaction location.
MatchingManage rules directory (edit/deactivate/activate)location.counterparties.manageYesYesYesYesNo/counterparty-rules write actions403 without manage permissionList readable with counterparty.match; writes audited.
AllocationsPreview allocationlocation.allocations.prepare / payment.allocateYesYesYesYesNoShow preview route/actions only with prepare permission403 for ViewerDoes not write to Syrve.
AllocationsConfirm allocationlocation.allocations.confirm / payment.confirmYesYesYesYesNoShow confirm button only with confirm permission403 for ViewerPrepares allocation for approval/queue.
AllocationsApprove allocationlocation.payments.approve / payment.allocations.approveYesYesNoYesNoShow approve action only with approve permission403 for Operator/ViewerApproval is accountant/admin workflow.
Syrve documentsView Syrve documentslocation.payments.view / syrve.documents.viewYesYesYesYesYesShow document routes with document view permission200 in allowed scopeCurrent compatibility maps document view to payment view.
Syrve documentsStart syncorganization.documents.sync / syrve.documents.syncYesNoNoYesNoShow sync buttons only with sync permission403 for Accountant/Operator/ViewerAdmin/manager operation.
Syrve postingsQueue postinglocation.payments.queue / syrve.postings.queueYesYesNoYesNoShow queue button only with queue permission403 for Operator/ViewerNew posting starts in ApprovalRequired; all business/transport safety controls still apply.
Syrve posting rulesView/preview ruleslocation.payments.view / syrve.postings.viewYesYesYesYesYesShow rules preview/read-only where posting view is available200 in allowed scopePreview does not queue or write Syrve/iiko.
Syrve posting rulesCreate/update/disable ruleslocation.payments.queue / syrve.postings.queueYesYesNoYesNoShow rule management only with queue permission403 for Operator/ViewerRules are scoped; no platform-global posting rules.
Syrve postingsApprove postinglocation.payments.approve / syrve.postings.approveYesYesNoYesNoShow approve button only with approve permission403 for Operator/ViewerApproval-only action.
Syrve postingsRetry/reconcile postinglocation.payments.retry / location.payments.reconcileYesYesNoYesNoShow retry/reconcile only with respective permissions403 for Operator/ViewerReconcile is accountant/admin workflow.
AuditView audit logorganization.audit.view / audit.viewYesYesNoYesYesShow audit route with audit permission200 in allowed scopeNon-platform users see scoped/self audit only.
AnomaliesView anomalieslocation.anomalies.view / payment.anomalies.viewYesYesYesYesYesShow anomalies route with anomaly view permission200 in allowed scopeViewer can read only.
AnomaliesAcknowledge/resolve anomalieslocation.anomalies.manage / payment.anomalies.manageYesYesNoYesNoShow anomaly action buttons only with manage permission403 for Operator/ViewerCritical anomaly handling is accountant/admin workflow.

Seed Profile Expectations ​

RoleExpected profile
MegaAdmin / AdminAll scoped permissions.
MegaManagerAll scoped permissions except future production write approval. Used as current Manager mapping.
PaymentOperator / OperatorUpload/view bank statements, view quality reports, match counterparties, create counterparty matching rules, preview and confirm allocations, view Syrve documents/postings/anomalies. No approve, queue, retry, reconcile, sync, audit, posting-rule management, user/settings management.
AccountantPaymentOperator banking workflow plus allocation/posting approve, queue, retry, reconcile, anomaly manage, audit view.
ViewerRead-only imports, quality reports, transactions, allocations/documents/postings, anomalies, notifications, audit. No mutations.

403 UX ​

Backend scoped denials return 403 with permission_denied_for_scope and the operator-facing message Нет доступа для указанной области. Frontend direct-route permission checks show a clear no-access page instead of exposing unavailable actions.