This is an automated email from the ASF dual-hosted git repository. Aman-Mittal pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/fineract-backoffice-ui.git
commit 58bcf208e1f8720500c21979a0fde801ac742ea6 Merge: 48417d0 a5bb5be Author: Aman-Mittal <[email protected]> AuthorDate: Sun Aug 16 14:25:22 2026 +0530 Merge pull request #368 from Aman-Mittal/feat/route-level-rbac feat(rbac): enforce permissions at the route boundary and close the GA gate .github/workflows/ci.yml | 37 ++ .rat-excludes | 1 + DOCS/RBAC.md | 220 ++++++++++++ e2e/accessibility.spec.ts | 2 +- e2e/rbac-backend-restricted-user.spec.ts | 195 +++++++++++ e2e/rbac-feature-flag.spec.ts | 26 +- e2e/rbac-route-protection.spec.ts | 295 ++++++++++++++++ e2e/report-parameter-backend.spec.ts | 5 +- e2e/utils/seed-api.ts | 142 ++++++++ e2e/utils/settled-route.ts | 45 +++ package.json | 2 + playwright.config.ts | 1 + scripts/check-route-permissions.mjs | 383 +++++++++++++++++++++ security.md | 7 + src/app/app.routes.ts | 23 +- src/app/core/adapters/api/api-surface.json | 28 +- src/app/core/guards/permission.guard.spec.ts | 178 ++++++++++ src/app/core/guards/permission.guard.ts | 132 +++++++ .../core/interceptors/error.interceptor.spec.ts | 62 +++- src/app/core/interceptors/error.interceptor.ts | 37 +- src/app/core/services/auth.service.ts | 5 +- .../services/navigation-config.service.spec.ts | 92 ++++- src/app/core/services/navigation-config.service.ts | 290 ++++++++++++++-- .../accounting-closures-list.component.ts | 1 + .../accounting/accounting-rules-list.component.ts | 1 + src/app/features/accounting/accounting.routes.ts | 46 +++ .../accounting/charges/charges-list.component.ts | 1 + .../accounting/chart-of-accounts.component.ts | 1 + .../financial-activity-mappings-list.component.ts | 1 + .../accounting/journal-entries-list.component.ts | 1 + .../provisioning-categories-list.component.ts | 1 + .../provisioning-criteria-list.component.ts | 1 + .../provisioning-entries-list.component.ts | 1 + src/app/features/admin/admin.routes.ts | 14 + .../features/calendars/calendars-list.component.ts | 1 + src/app/features/calendars/calendars.routes.ts | 8 + src/app/features/campaigns/campaigns.routes.ts | 16 + src/app/features/centers/center-view.component.ts | 20 +- src/app/features/centers/centers-list.component.ts | 1 + src/app/features/centers/centers.routes.ts | 16 +- .../charges/client-charges-list.component.ts | 1 + src/app/features/clients/client-view.component.ts | 62 ++-- src/app/features/clients/clients.routes.ts | 42 +++ .../collateral/client-collateral-list.component.ts | 1 + .../tabs/client-family-members-list.component.ts | 6 +- .../clients/tabs/client-notes-list.component.ts | 6 +- .../dashboard/system-status.component.spec.ts | 109 +++++- .../features/dashboard/system-status.component.ts | 163 ++++++--- .../errors/access-denied.component.spec.ts | 127 +++++++ src/app/features/errors/access-denied.component.ts | 150 ++++++++ src/app/features/groups/group-view.component.ts | 22 +- src/app/features/groups/groups-list.component.ts | 1 + src/app/features/groups/groups.routes.ts | 14 + src/app/features/interop/interop.routes.ts | 12 + .../loans/charges/loan-charges-list.component.ts | 1 + .../loans/collateral/collateral-list.component.ts | 1 + .../loans/guarantors/guarantors-list.component.ts | 1 + .../interest-pauses-list.component.ts | 1 + src/app/features/loans/loan-view.component.ts | 94 ++++- src/app/features/loans/loans-list.component.ts | 2 +- src/app/features/loans/loans.routes.ts | 53 ++- .../features/meetings/meetings-list.component.ts | 1 + src/app/features/meetings/meetings.routes.ts | 8 + .../account-number-formats-list.component.ts | 1 + .../organization/funds/funds-list.component.ts | 1 + .../organization/offices/offices-list.component.ts | 1 + .../features/organization/organization.routes.ts | 41 ++- .../payment-types/payment-types-list.component.ts | 1 + .../collateral-management-list.component.ts | 1 + .../fixed-deposit-products-list.component.ts | 1 + .../fixed-deposits-list.component.ts | 1 + .../floating-rates-list.component.ts | 1 + .../interest-rate-charts-list.component.ts | 1 + .../loan-originators-list.component.ts | 1 + .../products/loan-products-list.component.ts | 1 + src/app/features/products/products.routes.ts | 120 +++++++ .../products/rates/rates-list.component.ts | 1 + .../recurring-deposit-products-list.component.ts | 1 + .../recurring-deposits-list.component.ts | 1 + .../products/savings-account-view.component.ts | 18 +- .../savings-charges-list.component.ts | 1 + .../products/savings-products-list.component.ts | 1 + .../share-dividends-list.component.ts | 1 + .../shares/share-accounts-list.component.ts | 1 + .../shares/share-products-list.component.ts | 1 + .../tax-components-list.component.ts | 1 + .../tax-groups/tax-groups-list.component.ts | 1 + src/app/features/reporting/reporting.routes.ts | 6 + .../security/roles/roles-list.component.ts | 1 + src/app/features/security/security.routes.ts | 16 + .../security/users/users-list.component.ts | 1 + .../features/settings/holidays-list.component.ts | 1 + src/app/features/settings/settings.routes.ts | 12 + src/app/features/spm/spm.routes.ts | 8 + .../spm/surveys/spm-surveys-list.component.ts | 1 + .../adhoc-query/adhoc-query-list.component.ts | 1 + .../system/codes/code-values-list.component.ts | 1 + .../features/system/codes/codes-list.component.ts | 1 + .../delinquency-management.component.ts | 12 +- .../entity-data-table-checks-list.component.ts | 1 + .../entity-mapping-list.component.ts | 1 + .../features/system/hooks/hooks-list.component.ts | 1 + .../report-mailing-jobs-list.component.ts | 1 + src/app/features/system/sms/sms-list.component.ts | 1 + src/app/features/system/system.routes.ts | 91 ++++- src/app/features/tasks/tasks.routes.ts | 4 + .../tellers/cashiers/cashiers-list.component.ts | 1 + src/app/features/tellers/tellers-list.component.ts | 1 + src/app/features/tellers/tellers.routes.ts | 10 + src/app/features/transfers/transfers.routes.ts | 14 +- .../breach/wc-breach-list.component.ts | 1 + .../wc-loan-products-list.component.ts | 1 + .../loans/wc-loans-list.component.ts | 1 + .../near-breach/wc-near-breach-list.component.ts | 1 + .../working-capital/working-capital.routes.ts | 32 ++ src/app/layout/sidebar.component.ts | 39 ++- .../data-table/data-table.component.spec.ts | 62 +++- .../components/data-table/data-table.component.ts | 19 +- .../requires-permission.directive.spec.ts | 179 ++++++++++ .../directives/requires-permission.directive.ts | 127 +++++++ src/app/shared/index.ts | 2 + .../shared/pipes/permission-summary.pipe.spec.ts | 111 ++++++ src/app/shared/pipes/permission-summary.pipe.ts | 197 +++++++++++ src/app/testing/adapters.ts | 21 +- src/assets/i18n/en.json | 12 +- src/assets/i18n/hi.json | 12 + src/assets/i18n/ko.json | 12 + src/styles/_common.scss | 25 ++ tsconfig.e2e.json | 11 + 129 files changed, 4215 insertions(+), 254 deletions(-)
