Refactor customer default department routes to streamline customer number handling and permission checks
This commit is contained in:
@@ -25,13 +25,11 @@ class customerDefaultDepartmentRoute
|
||||
$response->error('Invalid session', 400);
|
||||
}
|
||||
// Require the customer number parameter
|
||||
self::requireParameters(['customer_number']);
|
||||
// Check if the customer number is valid
|
||||
$customer_number = (int)self::getParameter('customer_number');
|
||||
self::requireMinLength('customer_number', 1);
|
||||
self::requireMaxLength('customer_number', 255);
|
||||
self::requireType($customer_number, self::type_int());
|
||||
self::requireMinValue($customer_number, 1);
|
||||
$customer_number = (int)$this->getCustomerNumberFromParameterOrUser($user);
|
||||
// Check if the customer is its own customer number
|
||||
if ($customer_number !== (int)$user->customer_number->value()) {
|
||||
self::requirePermission('get_customer_default_department_other');
|
||||
}
|
||||
// Check if the customer number exists
|
||||
$customer = (new users_o())->getUserByCustomerNumber((int)$customer_number);
|
||||
if (!$customer->exists()) {
|
||||
@@ -53,7 +51,8 @@ class customerDefaultDepartmentRoute
|
||||
$response->success($customer_default_department_o->asArray());
|
||||
},
|
||||
[
|
||||
'get_customer_default_department' => 'Get the default department for a customer',
|
||||
'get_customer_default_department' => 'Get the default department for a customer (for its both own and other customers, depending on the get_customer_default_department_other permission)',
|
||||
'get_customer_default_department_other' => 'Get the default department for other customers',
|
||||
]
|
||||
);
|
||||
|
||||
@@ -67,13 +66,13 @@ class customerDefaultDepartmentRoute
|
||||
$response->error('Invalid session', 400);
|
||||
}
|
||||
// Require the customer number and department parameters
|
||||
self::requireParameters(['customer_number', 'department']);
|
||||
// Check if the customer number is valid
|
||||
$customer_number = (int)self::getParameter('customer_number');
|
||||
self::requireMinLength('customer_number', 1);
|
||||
self::requireMaxLength('customer_number', 255);
|
||||
self::requireType($customer_number, self::type_int());
|
||||
self::requireMinValue($customer_number, 1);
|
||||
self::requireParameters(['department']);
|
||||
// Require the customer number parameter
|
||||
$customer_number = $this->getCustomerNumberFromParameterOrUser($user);
|
||||
// Check if the customer is its own customer number
|
||||
if ($customer_number !== (int)$user->customer_number->value()) {
|
||||
self::requirePermission('add_customer_default_department_other');
|
||||
}
|
||||
// Check if the department is valid
|
||||
$department = (int)self::getParameter('department');
|
||||
self::requireMinLength('department', 1);
|
||||
@@ -108,7 +107,8 @@ class customerDefaultDepartmentRoute
|
||||
$response->success($customer_default_department_o->asArray());
|
||||
},
|
||||
[
|
||||
'add_customer_default_department' => 'Add a default department for a customer',
|
||||
'add_customer_default_department' => 'Add a default department for a customer (for its both own and other customers, depending on the add_customer_default_department_other permission)',
|
||||
'add_customer_default_department_other' => 'Add a default department for other customers',
|
||||
]
|
||||
);
|
||||
|
||||
@@ -122,13 +122,11 @@ class customerDefaultDepartmentRoute
|
||||
$response->error('Invalid session', 400);
|
||||
}
|
||||
// Require the customer number parameter
|
||||
self::requireParameters(['customer_number']);
|
||||
// Check if the customer number is valid
|
||||
$customer_number = (int)self::getParameter('customer_number');
|
||||
self::requireMinLength('customer_number', 1);
|
||||
self::requireMaxLength('customer_number', 255);
|
||||
self::requireType($customer_number, self::type_int());
|
||||
self::requireMinValue($customer_number, 1);
|
||||
$customer_number = $this->getCustomerNumberFromParameterOrUser($user);
|
||||
// Check if the customer is its own customer number
|
||||
if ($customer_number !== (int)$user->customer_number->value()) {
|
||||
self::requirePermission('delete_customer_default_department_other');
|
||||
}
|
||||
// Check if the customer number exists
|
||||
$customer = (new users_o())->getUserByCustomerNumber((int)$customer_number);
|
||||
if (!$customer->exists()) {
|
||||
@@ -151,9 +149,32 @@ class customerDefaultDepartmentRoute
|
||||
$response->success('Default department deleted');
|
||||
},
|
||||
[
|
||||
'delete_customer_default_department' => 'Delete a default department for a customer',
|
||||
'delete_customer_default_department' => 'Delete a default department for a customer (for its both own and other customers, depending on the delete_customer_default_department_other permission)',
|
||||
'delete_customer_default_department_other' => 'Delete a default department for other customers',
|
||||
]
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param users_o|false $user
|
||||
* @return int
|
||||
*/
|
||||
private function getCustomerNumberFromParameterOrUser(users_o|false $user): int
|
||||
{
|
||||
if (self::isParametersSet(['customer_number'])) {
|
||||
self::requireParameters(['customer_number']);
|
||||
// Check if the customer number is valid
|
||||
$customer_number = (int)self::getParameter('customer_number');
|
||||
self::requireMinLength('customer_number', 1);
|
||||
self::requireMaxLength('customer_number', 255);
|
||||
self::requireType($customer_number, self::type_int());
|
||||
} else {
|
||||
// If the customer number is not set, use the user's customer number
|
||||
$customer_number = (int)$user->customer_number->value();
|
||||
// Make sure the customer number is valid
|
||||
}
|
||||
self::requireMinValue($customer_number, 1);
|
||||
return $customer_number;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user