feat: complete jobcard management workflows and UI
This commit is contained in:
@@ -62,6 +62,15 @@ if (!isset($weakReset['errors']['password'])) throw new RuntimeException('Weak p
|
||||
$payloadReset = $users->validateReset(['password' => 'Unique&Secure123']);
|
||||
user_admin_assert_same(true, $payloadReset['valid'], 'Password-only reset payloads should be supported.');
|
||||
|
||||
// Administrator identity is authoritative from the immutable user ID, even when
|
||||
// a controller passes only editable fields and omits current role/name fields.
|
||||
$protectedEdit = $users->validateEdit(1, [
|
||||
'name' => 'Renamed', 'email' => 'admin.updated@example.test', 'role_id' => 2, 'is_active' => true,
|
||||
]);
|
||||
user_admin_assert_same(false, $protectedEdit['valid'], 'User ID 1 must remain protected without current fields.');
|
||||
if (!isset($protectedEdit['errors']['role_id'])) throw new RuntimeException('Administrator reassignment must be rejected from ID alone.');
|
||||
user_admin_assert_same(false, $users->validateDeactivate(['id' => 1, 'is_active' => true])['valid'], 'Administrator deactivation must be rejected from ID alone.');
|
||||
|
||||
$roles = new RolePermissionService();
|
||||
$available = ['clients.view', 'clients.manage', 'reports.view'];
|
||||
$assignment = $roles->validateAssignment(['id' => 4, 'name' => 'Support'], [' CLIENTS.VIEW ', 'reports.view', 'clients.view'], $available);
|
||||
|
||||
Reference in New Issue
Block a user