diff --git a/app/Http/Controllers/PaginatedAjaxController.php b/app/Http/Controllers/PaginatedAjaxController.php index 534a68edd0..fef2634dd6 100644 --- a/app/Http/Controllers/PaginatedAjaxController.php +++ b/app/Http/Controllers/PaginatedAjaxController.php @@ -171,8 +171,9 @@ abstract class PaginatedAjaxController extends Controller $sort = $request->get('sort', $this->default_sort); foreach ($sort as $column => $direction) { - if (isset($columns[$column])) { - $query->orderBy($columns[$column], $direction == 'desc' ? 'desc' : 'asc'); + if (isset($columns[$column]) || in_array($column, $columns)) { + $name = $columns[$column] ?? $column; + $query->orderBy($name, $direction == 'desc' ? 'desc' : 'asc'); } } diff --git a/app/Http/Controllers/Table/CustomersController.php b/app/Http/Controllers/Table/CustomersController.php index 5f099cc785..c978d88d08 100644 --- a/app/Http/Controllers/Table/CustomersController.php +++ b/app/Http/Controllers/Table/CustomersController.php @@ -38,6 +38,11 @@ class CustomersController extends TableController return ['port_descr_descr', 'ifName', 'ifDescr', 'ifAlias', 'hostname', 'sysDescr', 'port_descr_speed', 'port_descr_notes']; } + public function sortFields($request) + { + return ['port_descr_descr', 'hostname', 'ifDescr', 'port_descr_speed', 'port_descr_circuit', 'port_descr_notes']; + } + /** * Defines the base query for this resource * diff --git a/app/Http/Controllers/Table/DeviceController.php b/app/Http/Controllers/Table/DeviceController.php index c1867a2ee4..adb6f53cb8 100644 --- a/app/Http/Controllers/Table/DeviceController.php +++ b/app/Http/Controllers/Table/DeviceController.php @@ -67,6 +67,11 @@ class DeviceController extends TableController return ['sysName', 'hostname', 'hardware', 'os', 'locations.location']; } + protected function sortFields($request) + { + return ['status', 'icon', 'hostname', 'hardware', 'os', 'uptime', 'location']; + } + /** * Defines the base query for this resource * diff --git a/app/Http/Controllers/Table/EventlogController.php b/app/Http/Controllers/Table/EventlogController.php index e491ce33bb..8875e6a94d 100644 --- a/app/Http/Controllers/Table/EventlogController.php +++ b/app/Http/Controllers/Table/EventlogController.php @@ -55,6 +55,11 @@ class EventlogController extends TableController ]; } + protected function sortFields($request) + { + return ['datetime', 'type', 'device_id', 'message', 'username']; + } + /** * Defines the base query for this resource * diff --git a/app/Http/Controllers/Table/FdbTablesController.php b/app/Http/Controllers/Table/FdbTablesController.php index 1aa081f33f..c1b86140af 100644 --- a/app/Http/Controllers/Table/FdbTablesController.php +++ b/app/Http/Controllers/Table/FdbTablesController.php @@ -114,35 +114,35 @@ class FdbTablesController extends TableController $sort = $request->get('sort'); if (isset($sort['mac_address'])) { - $query->orderBy('mac_address', $sort['mac_address']); + $query->orderBy('mac_address', $sort['mac_address'] == 'desc' ? 'desc' : 'asc'); } if (isset($sort['device'])) { $query->leftJoin('devices', 'ports_fdb.device_id', 'devices.device_id') - ->orderBy('hostname', $sort['device']); + ->orderBy('hostname', $sort['device'] == 'desc' ? 'desc' : 'asc'); } if (isset($sort['vlan'])) { $query->leftJoin('vlans', 'ports_fdb.vlan_id', 'vlans.vlan_id') - ->orderBy('vlan_vlan', $sort['vlan']); + ->orderBy('vlan_vlan', $sort['vlan'] == 'desc' ? 'desc' : 'asc'); } if (isset($sort['interface'])) { $query->leftJoin('ports', 'ports_fdb.port_id', 'ports.port_id') - ->orderBy('ports.ifDescr', $sort['interface']); + ->orderBy('ports.ifDescr', $sort['interface'] == 'desc' ? 'desc' : 'asc'); } if (isset($sort['description'])) { $query->leftJoin('ports', 'ports_fdb.port_id', 'ports.port_id') - ->orderBy('ports.ifDescr', $sort['description']); + ->orderBy('ports.ifDescr', $sort['description'] == 'desc' ? 'desc' : 'asc'); } if (isset($sort['last_seen'])) { - $query->orderBy('updated_at', $sort['last_seen']); + $query->orderBy('updated_at', $sort['last_seen'] == 'desc' ? 'desc' : 'asc'); } if (isset($sort['first_seen'])) { - $query->orderBy('created_at', $sort['first_seen']); + $query->orderBy('created_at', $sort['first_seen'] == 'desc' ? 'desc' : 'asc'); } return $query; @@ -163,7 +163,7 @@ class FdbTablesController extends TableController 'first_seen' => 'unknown', 'last_seen' => 'unknown' ]; - + // diffForHumans and doDateTimeString are not safe if ($fdb_entry->updated_at) { $item['last_seen'] = $fdb_entry->updated_at->diffForHumans(); diff --git a/app/Http/Controllers/Table/LocationController.php b/app/Http/Controllers/Table/LocationController.php index fc3fd680fa..57350216d9 100644 --- a/app/Http/Controllers/Table/LocationController.php +++ b/app/Http/Controllers/Table/LocationController.php @@ -42,6 +42,11 @@ class LocationController extends TableController return ['location']; } + protected function sortFields($request) + { + return ['location', 'devices', 'network', 'servers', 'firewalls', 'down']; + } + /** * Defines the base query for this resource * diff --git a/app/Http/Controllers/Table/PortNacController.php b/app/Http/Controllers/Table/PortNacController.php index 0f14f1da4a..25caa7e083 100644 --- a/app/Http/Controllers/Table/PortNacController.php +++ b/app/Http/Controllers/Table/PortNacController.php @@ -43,6 +43,26 @@ class PortNacController extends TableController return ['username', 'ip_address', 'mac_address']; } + protected function sortFields($request) + { + return [ + 'port_id', + 'mac_address', + 'ip_address', + 'vlan', + 'domain', + 'host_mode', + 'username', + 'authz_by', + 'timeout', + 'time_elapsed', + 'time_left', + 'authc_status', + 'authz_status', + 'method' + ]; + } + /** * Defines the base query for this resource * diff --git a/app/Http/Controllers/Table/RoutesTablesController.php b/app/Http/Controllers/Table/RoutesTablesController.php index 2ddb053cce..75287ec78f 100644 --- a/app/Http/Controllers/Table/RoutesTablesController.php +++ b/app/Http/Controllers/Table/RoutesTablesController.php @@ -59,6 +59,23 @@ class RoutesTablesController extends TableController ]; } + protected function sortFields($request) + { + return [ + 'context_name', + 'inetCidrRouteDestType', + 'inetCidrRouteDest', + 'inetCidrRoutePfxLen', + 'inetCidrRouteNextHop', + 'inetCidrRouteIfIndex', + 'inetCidrRouteMetric1', + 'inetCidrRouteType', + 'inetCidrRouteProto', + 'created_at', + 'updated_at', + ]; + } + /** * Defines the base query for this resource * @@ -67,7 +84,7 @@ class RoutesTablesController extends TableController */ protected function baseQuery($request) { - $join = function ($query) { + $join = function ($query) { $query->on('ports.port_id', 'route.port_id'); }; $showAllRoutes = trim(\Request::get('showAllRoutes')); diff --git a/app/Http/Controllers/Table/SyslogController.php b/app/Http/Controllers/Table/SyslogController.php index 84aa69a93f..ed50c15a57 100644 --- a/app/Http/Controllers/Table/SyslogController.php +++ b/app/Http/Controllers/Table/SyslogController.php @@ -56,6 +56,11 @@ class SyslogController extends TableController ]; } + public function sortFields($request) + { + return ['label', 'timestamp', 'level', 'device_id', 'program', 'msg', 'priority']; + } + /** * Defines the base query for this resource *