This update introduces explicit permission definitions for various route handlers across multiple routes. These changes enhance clarity and allow for more granular control over route access based on defined permissions. The updates ensure better manageability and scalability of endpoint permissions.
97 lines
4.3 KiB
PHP
97 lines
4.3 KiB
PHP
<?php
|
|
|
|
namespace routes;
|
|
|
|
use classes\authentication;
|
|
use objects\logs_o;
|
|
use objects\orders_o;
|
|
use traits\route_t;
|
|
|
|
class vehiclePlateLookupRoute
|
|
{
|
|
use route_t;
|
|
|
|
public function run(): void
|
|
{
|
|
$this->get(
|
|
'/department/license-plate/lookup',
|
|
function () {
|
|
// Require the user to be logged in
|
|
global $response;
|
|
$this->requirePermission('department_license_plate_lookup');
|
|
// Get the user object
|
|
$user = (new authentication())->get_user();
|
|
// Check if the request was successful
|
|
if ($user) {
|
|
// Make sure the vehicle plate is set
|
|
if (!(string)$this->fromRequest('plate')) {
|
|
$response->error('Plate parameter is required', 400);
|
|
}
|
|
// Return the vehicle order history
|
|
$response->success(
|
|
(new orders_o())->get_vehicle_order_history($this->fromRequest('plate'))
|
|
);
|
|
} else {
|
|
// Log the incident
|
|
(new logs_o())->add('orders', 'global', 1, 0, 'FETCH_VEHICLE_ORDER_HISTORY', 'No user found, or invalid session');
|
|
// Return an error
|
|
$response->error('Invalid session', 400);
|
|
}
|
|
},
|
|
[
|
|
'department_license_plate_lookup' => 'Departmental access to lookup a license plate and view the order history'
|
|
]
|
|
);
|
|
|
|
$this->get('/department/license-plate/customer-lookup', function () {
|
|
// Require the user to be logged in
|
|
global $response;
|
|
self::requirePermission('department_license_plate_lookup');
|
|
// Get the user object
|
|
$user = (new authentication())->get_user();
|
|
// Check if the request was successful
|
|
if ($user) {
|
|
// Make sure the vehicle plate is set
|
|
self::requireParameters(['plate', 'customer_number', 'column']);
|
|
self::requireType((string)self::getParameter('plate'), 'string');
|
|
self::requireType((int)self::getParameter('customer_number'), self::type_int());
|
|
self::requireType((string)self::getParameter('column'), 'string');
|
|
self::requireMinLength('customer_number', 1);
|
|
self::requireMaxLength('customer_number', 10);
|
|
self::requireMinLength('plate', 0);
|
|
self::requireMaxLength('plate', 10);
|
|
// Make sure the column is allowed
|
|
$allowedColumns = ['reg_1', 'reg_2', 'reg_3'];
|
|
if (!in_array((string)self::getParameter('column'), $allowedColumns)) {
|
|
$response->error('Invalid column, allowed columns are: ' . implode(', ', $allowedColumns), 400);
|
|
}
|
|
// Return the vehicle order history
|
|
$response->success(
|
|
(new orders_o())
|
|
->setSearchableFields(['customer_id', (string)self::getParameter('column'), 'created_at'])
|
|
->listObjectsWithPagination(
|
|
1,
|
|
10,
|
|
(string)self::getParameter('plate'),
|
|
['customer_id' => self::getParameter('customer_number')],
|
|
['created_at' => 'DESC'],
|
|
function ($order) {
|
|
return [
|
|
'registration_number' => $order[(string)self::getParameter('column')], // Get the registration number
|
|
];
|
|
}
|
|
)
|
|
);
|
|
} else {
|
|
// Log the incident
|
|
(new logs_o())->add('orders', 'global', 1, 0, 'FETCH_VEHICLE_ORDER_HISTORY', 'No user found, or invalid session');
|
|
// Return an error
|
|
$response->error('Invalid session', 400);
|
|
}
|
|
},
|
|
[
|
|
'department_license_plate_lookup' => 'List all the records for a specific customer number and registration number column in the orders table'
|
|
]
|
|
);
|
|
}
|
|
} |