Files
zoneminder/web/api/app/Model/RoleGroupPermission.php
Isaac Connor 4e60cb96a7 feat: add User Roles feature for reusable permission templates
Add a User Roles system where roles define reusable permission templates.
When a user has a role assigned, the role provides fallback permissions
(user's direct permissions take precedence; role is used when user has 'None').

Database changes:
- Add User_Roles table with same permission fields as Users
- Add Role_Groups_Permissions table for per-role group overrides
- Add Role_Monitors_Permissions table for per-role monitor overrides
- Add RoleId foreign key to Users table

Permission resolution order:
1. User's direct Monitor/Group permissions (if not 'Inherit')
2. Role's Monitor/Group permissions (if user has role)
3. Role's base permission (if user's is 'None')
4. User's base permission (fallback)

Includes:
- PHP models: User_Role, Role_Group_Permission, Role_Monitor_Permission
- Role management UI in Options > Roles tab
- Role selector in user edit form
- REST API endpoints for roles CRUD
- Translation strings for en_gb

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 13:34:27 -05:00

40 lines
577 B
PHP

<?php
App::uses('AppModel', 'Model');
/**
* RoleGroupPermission Model
*
*/
class RoleGroupPermission extends AppModel {
/**
* Use table
*
* @var mixed False or table name
*/
public $useTable = 'Role_Groups_Permissions';
/**
* Primary key field
*
* @var string
*/
public $primaryKey = 'Id';
/**
* belongsTo associations
*
* @var array
*/
public $belongsTo = array(
'Role' => array(
'className' => 'Role',
'foreignKey' => 'RoleId',
),
'Group' => array(
'className' => 'Group',
'foreignKey' => 'GroupId',
),
);
}