. * * @link https://www.librenms.org * @copyright 2018 Tony Murray * @author Tony Murray */ namespace App\Http\Controllers\Table; use App\Models\PortsNac; use LibreNMS\Util\Rewrite; use LibreNMS\Util\Url; class PortNacController extends TableController { public function rules() { return [ 'device_id' => 'required|int', ]; } public function searchFields($request) { return ['username', 'ip_address', 'mac_address']; } protected function sortFields($request) { return [ 'port_id', 'mac_address', 'mac_oui', '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 * * @param \Illuminate\Http\Request $request * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder */ public function baseQuery($request) { return PortsNac::select('port_id', 'mac_address', 'ip_address', 'vlan', 'domain', 'host_mode', 'username', 'authz_by', 'timeout', 'time_elapsed', 'time_left', 'authc_status', 'authz_status', 'method') ->where('device_id', $request->device_id) ->hasAccess($request->user()) ->with('port'); } /** * @param PortsNac $nac */ public function formatItem($nac) { $item = $nac->toArray(); $item['port_id'] = Url::portLink($nac->port, $nac->port->getShortLabel()); $item['mac_oui'] = Rewrite::readableOUI($item['mac_address']); $item['mac_address'] = Rewrite::readableMac($item['mac_address']); $item['port'] = null; //free some unused data to be sent to the browser return $item; } }