Move resolved_permissions to user object via toArray()

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root
2026-01-13 09:04:15 +00:00
parent 6f69534047
commit bb9046af1b
6 changed files with 129 additions and 88 deletions

View File

@@ -2,10 +2,11 @@
* Permission - Client-side permission checking
*
* Provides permission and role checking for JavaScript using pre-resolved
* permissions from window.rsxapp.resolved_permissions. This mirrors the
* permissions from window.rsxapp.user.resolved_permissions. This mirrors the
* PHP Permission class functionality for client-side UI logic.
*
* The resolved_permissions array is computed server-side by applying:
* The resolved_permissions array is computed server-side via User_Model::toArray()
* by applying:
* 1. Role default permissions
* 2. Supplementary GRANTs (added)
* 3. Supplementary DENYs (removed)
@@ -56,7 +57,7 @@ class Permission {
* @returns {boolean}
*/
static has_permission(permission) {
const permissions = window.rsxapp?.resolved_permissions ?? [];
const permissions = window.rsxapp?.user?.resolved_permissions ?? [];
return permissions.includes(permission);
}
@@ -67,7 +68,7 @@ class Permission {
* @returns {boolean}
*/
static has_any_permission(permissions) {
const resolved = window.rsxapp?.resolved_permissions ?? [];
const resolved = window.rsxapp?.user?.resolved_permissions ?? [];
return permissions.some(p => resolved.includes(p));
}
@@ -78,7 +79,7 @@ class Permission {
* @returns {boolean}
*/
static has_all_permissions(permissions) {
const resolved = window.rsxapp?.resolved_permissions ?? [];
const resolved = window.rsxapp?.user?.resolved_permissions ?? [];
return permissions.every(p => resolved.includes(p));
}
@@ -124,6 +125,6 @@ class Permission {
* @returns {number[]} Array of permission IDs
*/
static get_resolved_permissions() {
return window.rsxapp?.resolved_permissions ?? [];
return window.rsxapp?.user?.resolved_permissions ?? [];
}
}