-
Task
-
Resolution: Done
-
Major
-
None
Enhancement Request
Update Chrome visibility functions (checkPermissions and loosePermissions) to support wildcard pattern matching for permission validation. Currently, the system only performs exact string matching, but we need to implement proper wildcard evaluation to improve permission handling flexibility.
Current Implementation
The permission validation currently uses exact string comparison:
userPermissions.find(({ permission }) => permission === item)
This means "rbac:*:*" does not match "rbac:inventory:read" because it's doing literal string comparison.
Desired Enhancement
Implement wildcard pattern matching where "*" acts as a wildcard that can match any value in that position:
- User permission: "rbac:*:*"
- Required permission: "rbac:inventory:read"
- Result: Should return true because the wildcards match "inventory" and "read"
Technical Details
File: src/utils/VisibilitySingleton.ts
Functions to update:
- checkPermissions (line 41-44)
- loosePermissions (line 97) - calls checkPermissions with 'some' requirement
Implementation Approach
Update the permission matching logic to:
- Split both user permission and required permission by ":" delimiter
- Compare each segment, treating "*" as a wildcard that matches any value
- Return true if all segments match considering wildcards
Expected Behavior Examples
User has "rbac:*:*" should match:
- "rbac:inventory:read"
- "rbac:inventory:write"
- "rbac:cost-management:read"
User has "rbac:inventory:*" should match:
- "rbac:inventory:read"
- "rbac:inventory:write"
- "rbac:inventory:delete"
User has "rbac:*:read" should match:
- "rbac:inventory:read"
- "rbac:cost-management:read"
Benefits
This enhancement will provide more flexible permission management and improve user experience by allowing broader permissions to properly cover more specific permission requirements.