Refactor /subusers/grants to use paginated response and update dependencies

- Replace manual grant data processing with `listObjectsWithPaginationIfSet` for cleaner pagination and mapping logic.
- Include `subusers_permission_node_key` helper in dependencies.
This commit is contained in:
Jeppe Bundgaard
2026-02-11 17:50:43 +01:00
parent 59040b9cee
commit 6b90fe8d8e
2 changed files with 17 additions and 13 deletions
+3
View File
@@ -112,6 +112,9 @@ require_once 'modules/goals/classes/goals_criteria_products.php';
require_once 'modules/goals/classes/goals_criteria.php';
require_once 'modules/goals/classes/goals.php';
// Subusers module (helpers used by objects)
require_once 'modules/subusers/helpers/subusers_permission_node_key.php';
// Dynamic Images module
foreach (glob(WD . '/modules/dynamicimages/interfaces/*.php') as $interface) {
require_once $interface;
+14 -13
View File
@@ -64,19 +64,20 @@ class subusersRoute
if (!$hasFilter) {
$response->error('You must provide at least one of: customer_number or subuser_id', 400);
}
$rows = (new subuser_grants_o())->getFieldsWhere($filters, [
'id', 'billing_customer_number', 'subuser', 'enabled', 'note', 'permissions', 'created_at', 'updated_at', 'deleted_at'
]);
// Decode permissions JSON
$data = array_map(function ($row) {
$row['id'] = (int)$row['id'];
$row['billing_customer_number'] = (int)$row['billing_customer_number'];
$row['subuser'] = (int)$row['subuser'];
$row['enabled'] = (bool)$row['enabled'];
$row['permissions'] = (!empty($row['permissions'])) ? (json_decode($row['permissions'], true) ?: []) : [];
return $row;
}, $rows);
$response->success(['grants' => $data]);
$paginatedResponse = (new subuser_grants_o())->listObjectsWithPaginationIfSet(function ($o) {
$o = (object)$o;
return [
'id' => $o->id,
'billing_customer_number' => $o->billing_customer_number,
'subuser' => $o->subuser,
'enabled' => $o->enabled,
'note' => $o->note,
'permissions' => json_decode($o->permissions, true) ?: [],
'created_at' => $o->created_at,
'updated_at' => $o->updated_at,
];
}, $filters);
$response->success($paginatedResponse);
}, []);
$this->post('/subusers/grants', function () {