Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
    • Help
    • Submit feedback
    • Contribute to GitLab
  • Sign in
F
finwise-miniapp-fe
  • Project
    • Project
    • Details
    • Activity
    • Releases
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • ThinhNC
  • finwise-miniapp-fe
  • Merge Requests
  • !24

Merged
Opened Aug 20, 2026 by ThinhNC@ThinhNC
  • Report abuse
Report abuse

feat(rbac): implement dynamic permission gates, role matrix ui, and centralize constants

Overview

Integrated Dynamic RBAC on the client side, replacing hardcoded role logic with granular permission evaluation, protecting client routes with Claymorphism fallback screens, and providing a dedicated Roles & Permissions Management interface.

Key Changes

  • Dynamic Permission Hook (usePermission):
    • Removed hardcoded ADMIN role bypass; permissions are evaluated 100% dynamically from user.permissions.
    • Added support for PermissionName type-safety.
  • Route & UI Protection:
    • Created <AccessDenied />: 403 Forbidden claymorphism fallback page with navigation back to Home.
    • Wrapped all private feature routes in src/components/layout.tsx with <PermissionGate permission={PERMISSIONS.*} fallback={<AccessDenied />}>.
    • Fixed <DocumentTitle /> position inside <ZMPRouter> for valid router context and updated route title mappings.
  • Role & Permission Management UI (/roles, /admin/roles):
    • Claymorphism-styled Roles tab, Permission Matrix grouped by resource/action with centered checkmarks, and Audit Logs tab.
    • Automatic session & permission refresh on permission matrix update without requiring re-login.
  • Centralized Constants (src/common/constants/):
    • Synchronized PERMISSIONS and SYSTEM_ROLES constants.
    • Refactored layout.tsx, HomePage, ProfilePage, RolesPage, and usePermission to use PERMISSIONS.*.

Check out, review, and merge locally

Step 1. Fetch and check out the branch for this merge request

git fetch origin
git checkout -b feat/upgrade-7-dynamic-rbac-fe origin/feat/upgrade-7-dynamic-rbac-fe

Step 2. Review the changes locally

Step 3. Merge the branch and fix any conflicts that come up

git fetch origin
git checkout origin/develop
git merge --no-ff feat/upgrade-7-dynamic-rbac-fe

Step 4. Push the result of the merge to GitLab

git push origin develop

Note that pushing to GitLab requires write access to this repository.

Tip: You can also checkout merge requests locally by following these guidelines.

  • Discussion 0
  • Commits 1
  • Changes 18
Assignee
No assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
0
Labels
None
Assign labels
  • View project labels
Reference: ThinhNC/finwise-miniapp-fe!24

Revert this merge request

This will create a new commit in order to revert the existing changes.

Switch branch
Cancel
A new branch will be created in your fork and a new merge request will be started.

Cherry-pick this merge request

Switch branch
Cancel
A new branch will be created in your fork and a new merge request will be started.