Laravel 10.x Shift (#14995)

* Apply code style

* Remove explicit call to register policies

* Shift core files

* Shift config files

* Default config files

In an effort to make upgrading the constantly changing config files
easier, Shift defaulted them and merged your true customizations -
where ENV variables may not be used.

* Bump Laravel dependencies

* Add type hints for Laravel 10

* Shift cleanup

* wip

* wip

* sync translation

* Sync back config

* Public Path Binding

* QueryException

* monolog

* db::raw

* monolog

* db::raw

* fix larastan collections

* fix phpstan bug looping forever

* larastan errors

* larastan: fix column type

* styleci

* initialize array

* fixes

* fixes

---------

Co-authored-by: Shift <shift@laravelshift.com>
This commit is contained in:
Jellyfrog 2023-05-24 22:21:54 +02:00 committed by GitHub
parent dd3ed41319
commit 2b3575a5e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
437 changed files with 1904 additions and 1913 deletions

View File

@ -167,7 +167,7 @@ jobs:
mysql -h"127.0.0.1" -P"$PORT" --user=librenms --password=librenms -e 'ALTER DATABASE librenms_phpunit_78hunjuybybh CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;'
-
name: Setup SQLite
run: sqlite3 storage/testing.sqlite ""
run: sqlite3 database/testing.sqlite ""
-
name: Artisan serve
if: matrix.skip-web-check != '1'

View File

@ -83,7 +83,7 @@ class AlertDB
//Our first table has no valid glue, append the 'devices' table to it!
array_unshift($tables, 'devices');
}
$x = sizeof($tables) - 1;
$x = count($tables) - 1;
$i = 0;
$join = '';
while ($i < $x) {

View File

@ -76,7 +76,7 @@ class AlertRules
$qry[$i]['ip'] = inet6_ntop($qry[$i]['ip']);
}
}
$s = sizeof($qry);
$s = count($qry);
if ($s == 0 && $inv === false) {
$doalert = false;
} elseif ($s > 0 && $inv === false) {

View File

@ -300,8 +300,8 @@ class RunAlerts
$chk[$i]['ip'] = inet6_ntop($chk[$i]['ip']);
}
}
$o = sizeof($alert['details']['rule']);
$n = sizeof($chk);
$o = count($alert['details']['rule']);
$n = count($chk);
$ret = 'Alert #' . $alert['id'];
$state = AlertState::CLEAR;
if ($n > $o) {

View File

@ -25,8 +25,8 @@
namespace LibreNMS\Alerting;
use DB;
use Illuminate\Database\Query\Builder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Log;

View File

@ -123,7 +123,7 @@ class LdapAuthorizationAuthorizer extends AuthorizerBase
}
// Find all defined groups $username is in
$filter = '(&(|(cn=' . join(')(cn=', array_keys(Config::get('auth_ldap_groups'))) . '))(' . Config::get('auth_ldap_groupmemberattr') . '=' . $this->getMembername($username) . '))';
$filter = '(&(|(cn=' . implode(')(cn=', array_keys(Config::get('auth_ldap_groups'))) . '))(' . Config::get('auth_ldap_groupmemberattr') . '=' . $this->getMembername($username) . '))';
$search = ldap_search($this->ldap_connection, Config::get('auth_ldap_groupbase'), $filter);
$entries = ldap_get_entries($this->ldap_connection, $search);

View File

@ -3,6 +3,7 @@
namespace LibreNMS\Authentication;
use ErrorException;
use LDAP\Connection;
use LibreNMS\Config;
use LibreNMS\Exceptions\AuthenticationException;
use LibreNMS\Exceptions\LdapMissingException;

View File

@ -211,7 +211,7 @@ class SSOAuthorizer extends MysqlAuthorizer
if (isset($config_map[$value])) {
$map = $config_map[$value];
if (is_integer($map) && $level < $map) {
if (is_int($map) && $level < $map) {
$level = $map;
}
}

View File

@ -115,7 +115,7 @@ class TwoFactor
$bin = str_split($bin, 5);
$ret = '';
$x = -1;
while (++$x < sizeof($bin)) {
while (++$x < count($bin)) {
$ret .= self::$base32_enc[(int) base_convert(str_pad($bin[$x], 5, '0'), 2, 10)];
}

View File

@ -28,8 +28,8 @@ use App\Models\Bill;
use App\Models\Device;
use App\Models\Port;
use App\Models\User;
use DB;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use LibreNMS\Config;
class PermissionsCache

View File

@ -25,8 +25,8 @@
namespace LibreNMS\DB;
use DB;
use Illuminate\Database\Connection;
use Illuminate\Support\Facades\DB;
use LibreNMS\Util\Laravel;
use PDOException;

View File

@ -25,7 +25,7 @@
namespace LibreNMS\DB;
use DB;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use LibreNMS\Config;
use LibreNMS\Util\Version;
@ -349,9 +349,9 @@ class Schema
DB::statement("SET TIME_ZONE='+00:00'"); // set timezone to UTC to avoid timezone issues
foreach (DB::connection($connection)->select(DB::raw("SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = '$db_name' ORDER BY TABLE_NAME;")) as $table) {
foreach (DB::connection($connection)->select(DB::raw("SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = '$db_name' ORDER BY TABLE_NAME;")->getValue(DB::connection($connection)->getQueryGrammar())) as $table) {
$table = $table->TABLE_NAME;
foreach (DB::connection($connection)->select(DB::raw("SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_DEFAULT, EXTRA FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '$db_name' AND TABLE_NAME='$table' ORDER BY ORDINAL_POSITION")) as $data) {
foreach (DB::connection($connection)->select(DB::raw("SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_DEFAULT, EXTRA FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '$db_name' AND TABLE_NAME='$table' ORDER BY ORDINAL_POSITION")->getValue(DB::connection($connection)->getQueryGrammar())) as $data) {
$def = [
'Field' => $data->COLUMN_NAME,
'Type' => preg_replace('/int\([0-9]+\)/', 'int', $data->COLUMN_TYPE),
@ -371,7 +371,7 @@ class Schema
$output[$table]['Columns'][] = $def;
}
$keys = DB::connection($connection)->select(DB::raw("SHOW INDEX FROM `$table`"));
$keys = DB::connection($connection)->select(DB::raw("SHOW INDEX FROM `$table`")->getValue(DB::connection($connection)->getQueryGrammar()));
usort($keys, function ($a, $b) {
return $a->Key_name <=> $b->Key_name;
});
@ -389,7 +389,7 @@ class Schema
}
}
$create = DB::connection($connection)->select(DB::raw("SHOW CREATE TABLE `$table`"))[0];
$create = DB::connection($connection)->select(DB::raw("SHOW CREATE TABLE `$table`")->getValue(DB::connection($connection)->getQueryGrammar()))[0];
if (isset($create->{'Create Table'})) {
$constraint_regex = '/CONSTRAINT `(?<name>[A-Za-z_0-9]+)` FOREIGN KEY \(`(?<foreign_key>[A-Za-z_0-9]+)`\) REFERENCES `(?<table>[A-Za-z_0-9]+)` \(`(?<key>[A-Za-z_0-9]+)`\) ?(?<extra>[ A-Z]+)?/';

View File

@ -28,6 +28,7 @@ namespace LibreNMS\Data\Store;
use App\Polling\Measure\Measurement;
use InfluxDB\Client;
use InfluxDB\Database;
use InfluxDB\Driver\UDP;
use LibreNMS\Config;
use Log;
@ -37,7 +38,7 @@ class InfluxDB extends BaseDatastore
/** @var \InfluxDB\Database */
private $connection;
public function __construct(\InfluxDB\Database $influx)
public function __construct(Database $influx)
{
parent::__construct();
$this->connection = $influx;

View File

@ -272,13 +272,13 @@ class Rrd extends BaseDatastore
*/
public function proxmoxName($pmxcluster, $vmid, $vmport)
{
$pmxcdir = join('/', [$this->rrd_dir, 'proxmox', self::safeName($pmxcluster)]);
$pmxcdir = implode('/', [$this->rrd_dir, 'proxmox', self::safeName($pmxcluster)]);
// this is not needed for remote rrdcached
if (! is_dir($pmxcdir)) {
mkdir($pmxcdir, 0775, true);
}
return join('/', [$pmxcdir, self::safeName($vmid . '_netif_' . $vmport . '.rrd')]);
return implode('/', [$pmxcdir, self::safeName($vmid . '_netif_' . $vmport . '.rrd')]);
}
/**

View File

@ -26,6 +26,7 @@
namespace LibreNMS\Exceptions;
use Illuminate\Database\QueryException;
use Illuminate\Http\Response;
use LibreNMS\Interfaces\Exceptions\UpgradeableException;
class DatabaseConnectException extends \Exception implements UpgradeableException

View File

@ -30,6 +30,6 @@ class InvalidTableColumnException extends ApiException
public function __construct(
public readonly array $columns
) {
parent::__construct('Invalid columns: ' . join(',', $this->columns));
parent::__construct('Invalid columns: ' . implode(',', $this->columns));
}
}

View File

@ -150,7 +150,7 @@ class IRCBot
}
}
return $this->log('Cached ' . sizeof($this->external) . ' commands.');
return $this->log('Cached ' . count($this->external) . ' commands.');
}
//end load_external()
@ -683,7 +683,7 @@ class IRCBot
private function ircRaw($params)
{
return fputs($this->socket['irc'], $params . "\r\n");
return fwrite($this->socket['irc'], $params . "\r\n");
}
//end irc_raw()
@ -780,9 +780,9 @@ class IRCBot
private function _help($params)
{
$msg = join(', ', $this->commands);
$msg = implode(', ', $this->commands);
if (count($this->external) > 0) {
$msg .= ', ' . join(', ', array_keys($this->external));
$msg .= ', ' . implode(', ', array_keys($this->external));
}
return $this->respond("Available commands: $msg");

View File

@ -25,11 +25,15 @@
namespace LibreNMS\Interfaces\Discovery;
use Illuminate\Support\Collection;
interface SlaDiscovery
{
/**
* Discover additional information about the OS.
* Primarily this is just version, hardware, features, serial, but could be anything
*
* @return Collection<int, \App\Models\Sla>
*/
public function discoverSlas();
public function discoverSlas(): Collection;
}

View File

@ -25,11 +25,13 @@
namespace LibreNMS\Interfaces\Polling;
use Illuminate\Database\Eloquent\Collection;
interface IsIsPolling
{
/**
* @param \Illuminate\Support\Collection $adjacencies \App\Models\IsIsAdjacency
* @return \Illuminate\Support\Collection \App\Models\IsIsAdjacency
* @param Collection<int, \App\Models\IsisAdjacency> $adjacencies
* @return Collection<int, \App\Models\IsisAdjacency>
*/
public function pollIsIs($adjacencies);
public function pollIsIs(Collection $adjacencies);
}

View File

@ -25,11 +25,13 @@
namespace LibreNMS\Interfaces\Polling;
use Illuminate\Database\Eloquent\Collection;
interface MempoolsPolling
{
/**
* @param \Illuminate\Support\Collection $mempools \App\Models\Mempool
* @return \Illuminate\Support\Collection \App\Models\Mempool
* @param Collection<int, \App\Models\Mempool> $mempools
* @return Collection<int, \App\Models\Mempool>
*/
public function pollMempools($mempools);
public function pollMempools(Collection $mempools);
}

View File

@ -32,7 +32,7 @@ interface SlaPolling
/**
* Poll Sla data for Sla in database.
*
* @param Collection $slas
* @param Collection<int, \App\Models\Sla> $slas
*/
public function pollSlas(Collection $slas);
public function pollSlas(Collection $slas): void;
}

View File

@ -138,7 +138,7 @@ class ArubaInstant extends OS implements
// fetch the MAC addresses of currently connected clients, then count them to get an overall total
$client_data = $this->getCacheTable('aiClientMACAddress', $ai_mib);
$total_clients = sizeof($client_data);
$total_clients = count($client_data);
$combined_oid = sprintf('%s::%s', $ai_mib, 'aiClientMACAddress');
$oid = snmp_translate($combined_oid, 'ALL', 'arubaos', '-On');
@ -161,7 +161,7 @@ class ArubaInstant extends OS implements
$ai_mib = 'AI-AP-MIB';
$ap_data = $this->getCacheTable('aiAPSerialNum', $ai_mib);
$total_aps = sizeof($ap_data);
$total_aps = count($ap_data);
$combined_oid = sprintf('%s::%s', $ai_mib, 'aiAPSerialNum');
$oid = snmp_translate($combined_oid, 'ALL', 'arubaos', '-On');
@ -311,14 +311,14 @@ class ArubaInstant extends OS implements
}
} else {
// version is lower than 8.4.0.0
if (! empty($sensors) && sizeof($sensors) == 1) {
if (! empty($sensors) && count($sensors) == 1) {
$ai_mib = 'AI-AP-MIB';
$client_data = $this->getCacheTable('aiClientMACAddress', $ai_mib);
if (empty($client_data)) {
$total_clients = 0;
} else {
$total_clients = sizeof($client_data);
$total_clients = count($client_data);
}
$data[$sensors[0]['sensor_id']] = $total_clients;
@ -339,14 +339,14 @@ class ArubaInstant extends OS implements
public function pollWirelessApCount(array $sensors)
{
$data = [];
if (! empty($sensors) && sizeof($sensors) == 1) {
if (! empty($sensors) && count($sensors) == 1) {
$ai_mib = 'AI-AP-MIB';
$ap_data = $this->getCacheTable('aiAPSerialNum', $ai_mib);
$total_aps = 0;
if (! empty($ap_data)) {
$total_aps = sizeof($ap_data);
$total_aps = count($ap_data);
}
$data[$sensors[0]['sensor_id']] = $total_aps;

View File

@ -27,8 +27,7 @@ use App\Models\Device;
use LibreNMS\Interfaces\Discovery\OSDiscovery;
use LibreNMS\OS;
class Beagleboard extends OS implements
OSDiscovery
class Beagleboard extends OS implements OSDiscovery
{
/**
* Retrieve basic information about the OS / device

View File

@ -130,7 +130,7 @@ class Iosxe extends Ciscowlc implements
$uptime = SnmpQuery::walk('CISCO-IETF-ISIS-MIB::ciiISAdjLastUpTime')->values();
return $adjacencies->each(function (IsisAdjacency $adjacency) use ($states, $uptime) {
return $adjacencies->each(function ($adjacency) use ($states, $uptime) {
$adjacency->isisISAdjState = $states['CISCO-IETF-ISIS-MIB::ciiISAdjState' . $adjacency->index] ?? $adjacency->isisISAdjState;
$adjacency->isisISAdjLastUpTime = $this->parseAdjacencyTime($uptime['CISCO-IETF-ISIS-MIB::ciiISAdjLastUpTime' . $adjacency->index] ?? 0);
});

View File

@ -70,7 +70,7 @@ class Junos extends \LibreNMS\OS implements SlaDiscovery, OSPolling, SlaPolling
}
}
public function discoverSlas()
public function discoverSlas(): Collection
{
$slas = new Collection();
$sla_table = snmpwalk_group($this->getDeviceArray(), 'pingCtlTable', 'DISMAN-PING-MIB', 2, snmpFlags: '-OQUstX');
@ -96,7 +96,7 @@ class Junos extends \LibreNMS\OS implements SlaDiscovery, OSPolling, SlaPolling
return $slas;
}
public function pollSlas($slas)
public function pollSlas($slas): void
{
$device = $this->getDeviceArray();

View File

@ -316,7 +316,7 @@ class Cisco extends OS implements
return $processors;
}
public function discoverSlas()
public function discoverSlas(): Collection
{
$slas = new Collection();
@ -414,7 +414,7 @@ class Cisco extends OS implements
return $nac;
}
public function pollSlas($slas)
public function pollSlas($slas): void
{
$device = $this->getDeviceArray();

View File

@ -34,7 +34,7 @@ class Stellar extends OS implements
if (empty($client_ws_data)) {
$total_clients = 0;
} else {
$total_clients = sizeof($client_ws_data);
$total_clients = count($client_ws_data);
}
$combined_oid = sprintf('%s::%s', $device['hardware'], 'apClientWlanService');
@ -75,7 +75,7 @@ class Stellar extends OS implements
if (empty($client_ws_data)) {
$total_clients = 0;
} else {
$total_clients = sizeof($client_ws_data);
$total_clients = count($client_ws_data);
}
foreach ($sensors as $sensor) {

View File

@ -227,7 +227,7 @@ class Vrp extends OS implements
$foundid = 0;
for ($z = 0; $z < sizeof($ap_db); $z++) {
for ($z = 0; $z < count($ap_db); $z++) {
if ($ap_db[$z]['name'] == $name && $ap_db[$z]['radio_number'] == $radionum) {
$foundid = $ap_db[$z]['accesspoint_id'];
$ap_db[$z]['seen'] = 1;
@ -277,7 +277,7 @@ class Vrp extends OS implements
}//end foreach 1
}//end foreach 2
for ($z = 0; $z < sizeof($ap_db); $z++) {
for ($z = 0; $z < count($ap_db); $z++) {
if (! isset($ap_db[$z]['seen']) && $ap_db[$z]['deleted'] == 0) {
dbUpdate(['deleted' => 1], 'access_points', '`accesspoint_id` = ?', [$ap_db[$z]['accesspoint_id']]);
}
@ -482,7 +482,7 @@ class Vrp extends OS implements
return $sensors;
}
public function discoverSlas()
public function discoverSlas(): Collection
{
$slas = new Collection();
// Get the index of the last finished test
@ -513,7 +513,7 @@ class Vrp extends OS implements
return $slas;
}
public function pollSlas($slas)
public function pollSlas($slas): void
{
$device = $this->getDeviceArray();

View File

@ -100,7 +100,7 @@ class ObjectCache implements ArrayAccess
return $GLOBALS['_ObjCache'][$this->obj][$obj]['value'];
} else {
$GLOBALS['_ObjCache'][$this->obj][$obj]['value'] = dbFetchRows($this->data[$obj]['query'], isset($this->data[$obj]['params']) ? $this->data[$obj]['params'] : []);
if (sizeof($GLOBALS['_ObjCache'][$this->obj][$obj]['value']) == 1 && sizeof($GLOBALS['_ObjCache'][$this->obj][$obj]['value'][0]) == 1) {
if (count($GLOBALS['_ObjCache'][$this->obj][$obj]['value']) == 1 && count($GLOBALS['_ObjCache'][$this->obj][$obj]['value'][0]) == 1) {
$GLOBALS['_ObjCache'][$this->obj][$obj]['value'] = current($GLOBALS['_ObjCache'][$this->obj][$obj]['value'][0]);
}

View File

@ -31,8 +31,8 @@ use App\Models\Device;
use App\Polling\Measure\Measurement;
use App\Polling\Measure\MeasurementManager;
use Carbon\Carbon;
use DB;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use LibreNMS\Enum\Alert;
use LibreNMS\Exceptions\PollerException;
@ -264,8 +264,10 @@ class Poller
} elseif ($this->device_spec == 'all') {
return $query;
} elseif ($this->device_spec == 'even') {
/** @phpstan-ignore-next-line */
return $query->where(DB::raw('device_id % 2'), 0);
} elseif ($this->device_spec == 'odd') {
/** @phpstan-ignore-next-line */
return $query->where(DB::raw('device_id % 2'), 1);
} elseif (is_numeric($this->device_spec)) {
return $query->where('device_id', $this->device_spec);

View File

@ -26,9 +26,9 @@
namespace LibreNMS\Util;
use App\Models\Callback;
use DB;
use Illuminate\Database\Query\Builder;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
class Stats

View File

@ -27,6 +27,7 @@ namespace LibreNMS\Util;
use App\Models\Device;
use App\Models\Port;
use App\Models\Sensor;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Support\Facades\Auth;

View File

@ -25,8 +25,8 @@
namespace LibreNMS\Util;
use DB;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;
use LibreNMS\Config;
use LibreNMS\DB\Eloquent;
use Symfony\Component\Process\Process;

View File

@ -25,7 +25,7 @@
namespace LibreNMS\Validations\Database;
use DB;
use Illuminate\Support\Facades\DB;
use LibreNMS\DB\Eloquent;
use LibreNMS\Interfaces\Validation;
use LibreNMS\ValidationResult;

View File

@ -25,9 +25,9 @@
namespace LibreNMS\Validations\Database;
use DB;
use Illuminate\Database\QueryException;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use LibreNMS\DB\Eloquent;
use LibreNMS\Interfaces\Validation;
use LibreNMS\Interfaces\ValidationFixer;

View File

@ -25,8 +25,8 @@
namespace LibreNMS\Validations\Database;
use DB;
use Illuminate\Database\QueryException;
use Illuminate\Support\Facades\DB;
use LibreNMS\Config;
use LibreNMS\DB\Eloquent;
use LibreNMS\DB\Schema;

View File

@ -62,7 +62,7 @@ class CheckRedis implements \LibreNMS\Interfaces\Validation
private function redisIsAvailable(): bool
{
try {
Redis::ping();
Redis::command('ping');
return true;
} catch (\Exception $e) {

View File

@ -34,7 +34,7 @@ class System extends BaseValidation
protected static $RUN_BY_DEFAULT = true;
/**
* {@inheritdoc}
* @inheritdoc
*/
public function validate(Validator $validator): void
{

View File

@ -1,35 +0,0 @@
<?php
/**
* Application.php
*
* Extension of base application class
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* @link https://www.librenms.org
*
* @copyright 2018 Tony Murray
* @author Tony Murray <murraytony@gmail.com>
*/
namespace App;
class Application extends \Illuminate\Foundation\Application
{
public function publicPath()
{
// override the public path
return $this->basePath . DIRECTORY_SEPARATOR . 'html';
}
}

View File

@ -79,7 +79,7 @@ class SmokepingGenerateCommand extends LnmsCommand
$devices = Device::isNotDisabled()->orderBy('type')->orderBy('hostname')->get();
if (sizeof($devices) < 1) {
if (count($devices) < 1) {
$this->error(__('commands.smokeping:generate.no-devices'));
return 3;

View File

@ -13,7 +13,7 @@ class SnmpTranslate extends SnmpFetch
protected $name = 'snmp:translate';
protected array $oids;
protected function getDevices(): \Illuminate\Support\Collection
protected function getDevices(): Collection
{
if (empty($this->oids)) {
$this->oids = [$this->deviceSpec];

View File

@ -16,7 +16,7 @@ class Kernel extends ConsoleKernel
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
protected function schedule(Schedule $schedule): void
{
$this->scheduleMarkWorking($schedule);
}
@ -26,7 +26,7 @@ class Kernel extends ConsoleKernel
*
* @return void
*/
protected function commands()
protected function commands(): void
{
$this->load(__DIR__ . '/Commands');

View File

@ -3,14 +3,12 @@
namespace App\Events;
use App\Models\Device;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class DevicePolled
{
use Dispatchable, InteractsWithSockets, SerializesModels;
use Dispatchable, SerializesModels;
/**
* @var \App\Models\Device
@ -26,14 +24,4 @@ class DevicePolled
{
$this->device = $device;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('channel-name');
}
}

View File

@ -3,14 +3,12 @@
namespace App\Events;
use App\Models\Device;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class PollingDevice
{
use Dispatchable, InteractsWithSockets, SerializesModels;
use Dispatchable, SerializesModels;
/**
* @var \App\Models\Device
@ -26,14 +24,4 @@ class PollingDevice
{
$this->device = $device;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('channel-name');
}
}

View File

@ -3,13 +3,12 @@
namespace App\Events;
use App\Models\User;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class UserCreated
{
use Dispatchable, InteractsWithSockets, SerializesModels;
use Dispatchable, SerializesModels;
public $user;
/**

View File

@ -3,11 +3,10 @@
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
use AuthorizesRequests, ValidatesRequests;
}

View File

@ -27,7 +27,7 @@ namespace App\Http\Controllers\Device\Tabs;
use App\Models\Device;
use Carbon\Carbon;
use DB;
use Illuminate\Support\Facades\DB;
use LibreNMS\Config;
use LibreNMS\Interfaces\UI\DeviceTab;
use LibreNMS\Util\Smokeping;

View File

@ -26,7 +26,7 @@
namespace App\Http\Controllers\Device\Tabs;
use App\Models\Device;
use DB;
use Illuminate\Support\Facades\DB;
use LibreNMS\Interfaces\UI\DeviceTab;
class ProcessesController implements DeviceTab

View File

@ -72,7 +72,7 @@ class LegacyController extends Controller
}
// create and set the title
$title = join(' - ', $pagetitle);
$title = implode(' - ', $pagetitle);
$html .= "<script type=\"text/javascript\">\ndocument.title = '$title';\n</script>";
}

View File

@ -53,7 +53,7 @@ abstract class PaginatedAjaxController extends Controller
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder
*/
abstract protected function baseQuery($request);
abstract protected function baseQuery(\Illuminate\Http\Request $request);
/**
* @param Paginator $paginator
@ -79,7 +79,7 @@ abstract class PaginatedAjaxController extends Controller
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
protected function searchFields($request)
protected function searchFields(\Illuminate\Http\Request $request)
{
return [];
}
@ -92,7 +92,7 @@ abstract class PaginatedAjaxController extends Controller
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
protected function filterFields($request)
protected function filterFields(\Illuminate\Http\Request $request)
{
return [];
}
@ -105,7 +105,7 @@ abstract class PaginatedAjaxController extends Controller
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
protected function sortFields($request)
protected function sortFields(\Illuminate\Http\Request $request)
{
return [];
}

View File

@ -27,7 +27,7 @@ namespace App\Http\Controllers\Table;
use App\Models\AlertSchedule;
use Carbon\Carbon;
use DB;
use Illuminate\Support\Facades\DB;
class AlertScheduleController extends TableController
{

View File

@ -46,7 +46,7 @@ class MempoolsController extends TableController
}
/**
* {@inheritdoc}
* @inheritdoc
*/
protected function baseQuery($request)
{

View File

@ -26,9 +26,9 @@
namespace App\Http\Controllers\Table;
use App\Models\Port;
use DB;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;
use LibreNMS\Util\Number;
use LibreNMS\Util\Rewrite;
use LibreNMS\Util\Url;

View File

@ -26,8 +26,8 @@
namespace App\Http\Controllers\Widgets;
use App\Models\Component;
use DB;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\View\View;
class ComponentStatusController extends WidgetController

View File

@ -61,13 +61,13 @@ class Kernel extends HttpKernel
];
/**
* The application's route middleware.
* The application's middleware aliases.
*
* These middleware may be assigned to groups or used individually.
* Aliases may be used to conveniently assign middleware to routes and groups.
*
* @var array<string, string>
*/
protected $routeMiddleware = [
protected $middlewareAliases = [
'authenticate' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,

View File

@ -3,19 +3,19 @@
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
use Illuminate\Http\Request;
class Authenticate extends Middleware
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param \Illuminate\Http\Request $request
* @return string|void
*/
protected function redirectTo($request)
protected function redirectTo(Request $request): ?string
{
if (! $request->expectsJson()) {
return route('login');
}
return null;
}
}

View File

@ -28,6 +28,7 @@ namespace App\Http\Middleware;
use Closure;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use LibreNMS\Config;
use LibreNMS\Exceptions\InvalidIpException;
use LibreNMS\Util\IP;
@ -48,11 +49,10 @@ class AuthenticateGraph
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $relative
* @return \Illuminate\Http\Response
*
* @throws \Illuminate\Auth\AuthenticationException
*/
public function handle($request, Closure $next, $relative = null)
public function handle(Request $request, Closure $next, $relative = null): Response
{
// if user is logged in, allow
if (\Auth::check()) {

View File

@ -27,7 +27,9 @@ namespace App\Http\Middleware;
use Closure;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Http\Request;
use LibreNMS\Util\EnvHelper;
use Symfony\Component\HttpFoundation\Response;
class CheckInstalled
{
@ -36,9 +38,8 @@ class CheckInstalled
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
public function handle(Request $request, Closure $next): Response
{
$installed = ! config('librenms.install') && file_exists(base_path('.env'));
$is_install_route = $request->is('install*');

View File

@ -3,6 +3,8 @@
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class DenyDemoUser
{
@ -11,9 +13,8 @@ class DenyDemoUser
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
public function handle(Request $request, Closure $next): Response
{
if ($request->user()->isDemo()) {
return response()->view('auth.deny-demo');

View File

@ -26,6 +26,8 @@
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class EnforceJson
{
@ -34,9 +36,8 @@ class EnforceJson
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
public function handle(Request $request, Closure $next): Response
{
$request->headers->set('Accept', 'application/json');

View File

@ -4,8 +4,10 @@ namespace App\Http\Middleware;
use App\Models\User;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use LibreNMS\Authentication\LegacyAuth;
use Symfony\Component\HttpFoundation\Response;
class LegacyExternalAuth
{
@ -14,9 +16,8 @@ class LegacyExternalAuth
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
public function handle(Request $request, Closure $next, $guard = null): Response
{
if (! Auth::guard($guard)->check()) {
// check for get variables

View File

@ -3,7 +3,9 @@
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use LibreNMS\Config;
use Symfony\Component\HttpFoundation\Response;
class LoadUserPreferences
{
@ -12,9 +14,8 @@ class LoadUserPreferences
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
public function handle(Request $request, Closure $next): Response
{
$preferences = ['locale', 'site_style', 'timezone'];
$this->loadPreferences($request, $preferences);

View File

@ -6,18 +6,14 @@ use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Symfony\Component\HttpFoundation\Response;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null ...$guards
* @return mixed
*/
public function handle(Request $request, Closure $next, ...$guards)
public function handle(Request $request, Closure $next, string ...$guards): Response
{
$guards = empty($guards) ? [null] : $guards;

View File

@ -9,9 +9,9 @@ class TrustHosts extends Middleware
/**
* Get the host patterns that should be trusted.
*
* @return array
* @return array<int, string|null>
*/
public function hosts()
public function hosts(): array
{
return [
$this->allSubdomainsOfApplicationUrl(),

View File

@ -4,8 +4,10 @@ namespace App\Http\Middleware;
use App\Models\UserPref;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use LibreNMS\Config;
use Symfony\Component\HttpFoundation\Response;
class VerifyTwoFactor
{
@ -14,9 +16,8 @@ class VerifyTwoFactor
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
public function handle(Request $request, Closure $next): Response
{
// check twofactor
if (Config::get('twofactor') === true) {

View File

@ -5,6 +5,7 @@ namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Symfony\Component\HttpFoundation\Response;
class VerifyUserEnabled
{
@ -13,9 +14,8 @@ class VerifyUserEnabled
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
public function handle(Request $request, Closure $next): Response
{
if (Auth::check() && ! Auth::user()->enabled) {
Auth::logout();

View File

@ -15,7 +15,7 @@ class StoreUserRequest extends FormRequest
*
* @return bool
*/
public function authorize()
public function authorize(): bool
{
return $this->user()->can('create', User::class);
}
@ -25,7 +25,7 @@ class StoreUserRequest extends FormRequest
*
* @return array
*/
public function rules()
public function rules(): array
{
return [
'username' => [

View File

@ -29,12 +29,12 @@ use Illuminate\Foundation\Http\FormRequest;
class TwoFactorManagementRequest extends FormRequest
{
public function rules()
public function rules(): array
{
return [];
}
public function authorize()
public function authorize(): bool
{
$user = $this->route()->parameter('user');
$auth_user = auth()->user();

View File

@ -4,6 +4,7 @@ namespace App\Http\Requests;
use Hash;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Validator;
use LibreNMS\Config;
class UpdateUserRequest extends FormRequest
@ -13,7 +14,7 @@ class UpdateUserRequest extends FormRequest
*
* @return bool
*/
public function authorize()
public function authorize(): bool
{
if ($this->user()->isAdmin()) {
return true;
@ -35,7 +36,7 @@ class UpdateUserRequest extends FormRequest
*
* @return array
*/
public function rules()
public function rules(): array
{
if ($this->user()->isAdmin()) {
return [

View File

@ -15,9 +15,8 @@ class AlertRule extends JsonResource
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
public function toArray($request): array
{
$rule = parent::toArray($request);
$rule['devices'] = $this->devices->pluck('device_id')->all();

View File

@ -29,7 +29,6 @@ use App\Models\Device;
use Carbon\Carbon;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
@ -48,7 +47,7 @@ class PingCheck implements ShouldQueue
private $wait;
private $rrd_tags;
/** @var \Illuminate\Database\Eloquent\Collection List of devices keyed by hostname */
/** @var \Illuminate\Database\Eloquent\Collection<string, Device>|null List of devices keyed by hostname */
private $devices;
/** @var array List of device group ids to check */
private $groups = [];
@ -93,7 +92,7 @@ class PingCheck implements ShouldQueue
*
* @return void
*/
public function handle()
public function handle(): void
{
$ping_start = microtime(true);
@ -158,7 +157,6 @@ class PingCheck implements ShouldQueue
return $this->devices;
}
/** @var Builder $query */
$query = Device::canPing()
->select(['devices.device_id', 'hostname', 'overwrite_ip', 'status', 'status_reason', 'last_ping', 'last_ping_timetaken', 'max_depth'])
->orderBy('max_depth');
@ -168,8 +166,6 @@ class PingCheck implements ShouldQueue
}
$this->devices = $query->get()->keyBy(function ($device) {
/** @var Device $device */
return $device->overwrite_ip ?: $device->hostname;
});
@ -235,7 +231,6 @@ class PingCheck implements ShouldQueue
echo "Attempting to record data for $hostname... ";
}
/** @var Device $device */
$device = $this->devices->get($hostname);
// process the data if this is a standalone device or in the current tier

View File

@ -3,9 +3,9 @@
namespace App\Listeners;
use App\Models\User;
use DB;
use Illuminate\Auth\Events\Login;
use Illuminate\Auth\Events\Logout;
use Illuminate\Support\Facades\DB;
use Request;
class AuthEventListener

View File

@ -24,7 +24,7 @@ class CheckAlerts
* @param DevicePolled $event
* @return void
*/
public function handle(DevicePolled $event)
public function handle(DevicePolled $event): void
{
Log::info('#### Start Alerts ####');
$start = microtime(true);

View File

@ -22,7 +22,7 @@ class LegacyQueryListener
* @param \Illuminate\Database\Events\StatementPrepared $event
* @return void
*/
public function handle(StatementPrepared $event)
public function handle(StatementPrepared $event): void
{
global $PDO_FETCH_ASSOC;

View File

@ -5,7 +5,7 @@ namespace App\Listeners;
use App\Events\UserCreated;
use App\Models\Notification;
use App\Models\NotificationAttrib;
use DB;
use Illuminate\Support\Facades\DB;
class MarkNotificationsRead
{
@ -25,7 +25,7 @@ class MarkNotificationsRead
* @param UserCreated $event
* @return void
*/
public function handle(UserCreated $event)
public function handle(UserCreated $event): void
{
$user = $event->user;
// mark pre-existing notifications as read

View File

@ -24,7 +24,7 @@ class QueryDebugListener
* @param \Illuminate\Database\Events\QueryExecuted $query
* @return void
*/
public function handle(QueryExecuted $query)
public function handle(QueryExecuted $query): void
{
if (Debug::queryDebugIsEnabled()) {
// collect bindings and make them a little more readable

View File

@ -24,7 +24,7 @@ class QueryMetricListener
* @param \Illuminate\Database\Events\QueryExecuted $event
* @return void
*/
public function handle(QueryExecuted $event)
public function handle(QueryExecuted $event): void
{
$type = strtolower(substr($event->sql, 0, strpos($event->sql, ' ')));
app(MeasurementManager::class)->recordDb(Measurement::make($type, $event->time ? $event->time / 100 : 0));

View File

@ -25,7 +25,7 @@ class UpdateDeviceGroups
* @param DevicePolled $event
* @return void
*/
public function handle(DevicePolled $event)
public function handle(DevicePolled $event): void
{
Log::info('### Start Device Groups ###');
$dg_start = microtime(true);

View File

@ -31,10 +31,8 @@ class CliColorFormatter extends \Monolog\Formatter\LineFormatter
* @var \Console_Color2
*/
private $console_color;
/**
* @var bool
*/
private $console;
protected bool $console;
public function __construct()
{
@ -46,15 +44,25 @@ class CliColorFormatter extends \Monolog\Formatter\LineFormatter
);
$this->console_color = new \Console_Color2();
$this->console = \App::runningInConsole();
$this->console = $this->console ?? \App::runningInConsole();
}
public function format(array $record): string
public function format(\Monolog\LogRecord $record): string
{
// only format messages where color is enabled
if (isset($record['context']['color']) && $record['context']['color']) {
$record['message'] = $this->console_color->convert($record['message'], $this->console);
unset($record['context']['color']);
if (isset($record->context['color']) && $record->context['color']) {
$context = $record->context;
unset($context['color']);
$record = new \Monolog\LogRecord(
$record->datetime,
$record->channel,
$record->level,
$this->console_color->convert($record->message, $this->console),
$context,
$record->extra,
$record->formatted,
);
}
return parent::format($record);

View File

@ -25,27 +25,7 @@
namespace App\Logging;
class NoColorFormatter extends \Monolog\Formatter\LineFormatter
class NoColorFormatter extends CliColorFormatter
{
/**
* @var \Console_Color2
*/
private $console_color;
public function __construct()
{
parent::__construct(null, null, true, true);
$this->console_color = new \Console_Color2();
}
public function format(array $record): string
{
// only strip messages where color is enabled
if (isset($record['context']['color']) && $record['context']['color']) {
$record['message'] = $this->console_color->convert($record['message'], false);
unset($record['context']['color']);
}
return parent::format($record);
}
protected bool $console = false;
}

View File

@ -31,11 +31,9 @@ use Spatie\FlareClient\Report;
class AddGitInformation implements \Spatie\FlareClient\FlareMiddleware\FlareMiddleware
{
/**
* @param \Spatie\FlareClient\Report $report
* @param callable $next next in the pipeline
* @return mixed
*/
public function handle(Report $report, $next)
public function handle(Report $report, \Closure $next)
{
$git = Git::make(180);

View File

@ -32,11 +32,9 @@ class CleanContext implements \Spatie\FlareClient\FlareMiddleware\FlareMiddlewar
/**
* Middleware to remove sensitive data from the context.
*
* @param \Spatie\FlareClient\Report $report
* @param callable $next
* @return mixed
*/
public function handle(Report $report, $next)
public function handle(Report $report, \Closure $next)
{
try {
$report->setApplicationPath('');

View File

@ -33,11 +33,9 @@ class SetGroups implements \Spatie\FlareClient\FlareMiddleware\FlareMiddleware
/**
* Middleware to set LibreNMS and Tools grouping data
*
* @param \Spatie\FlareClient\Report $report
* @param callable $next
* @return mixed
*/
public function handle(Report $report, $next)
public function handle(Report $report, \Closure $next)
{
try {
$version = Version::get();

View File

@ -30,11 +30,9 @@ class SetInstanceId implements \Spatie\FlareClient\FlareMiddleware\FlareMiddlewa
/**
* Middleware to add instance ID, piggybacks on the "user id" feature.
*
* @param \Spatie\FlareClient\Report $report
* @param callable $next
* @return mixed
*/
public function handle(Report $report, $next)
public function handle(Report $report, \Closure $next)
{
try {
$user = $report->getGroup('user', []);

View File

@ -28,10 +28,10 @@ namespace App\Models;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Date;
use DB;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\MorphToMany;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use LibreNMS\Enum\AlertScheduleStatus;

View File

@ -2,12 +2,12 @@
namespace App\Models;
use DB;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\MorphMany;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use LibreNMS\Util\Rewrite;
use Permissions;

View File

@ -45,16 +45,15 @@ class AlertNotification extends Notification
->action('Acknowledge', 'alert.acknowledge')
->action('View', 'alert.view')
->options(['TTL' => 2000])
->data(['id' => $alert_id])
// ->badge()
// ->dir()
// ->image()
// ->lang()
// ->renotify()
// ->requireInteraction()
// ->tag()
// ->vibrate()
;
->data(['id' => $alert_id]);
// ->badge()
// ->dir()
// ->image()
// ->lang()
// ->renotify()
// ->requireInteraction()
// ->tag()
// ->vibrate()
}
/**

View File

@ -31,7 +31,7 @@ use Rrd;
class MempoolObserver extends ModuleModelObserver
{
/** @param \App\Models\Mempool $model */
public function updated($model)
public function updated($model): void
{
parent::updated($model);

View File

@ -57,7 +57,7 @@ class ModuleModelObserver
/**
* @param Eloquent $model
*/
public function updated($model)
public function updated($model): void
{
d_echo('Updated data:', 'U');
d_echo($model->getDirty());
@ -66,7 +66,7 @@ class ModuleModelObserver
/**
* @param Eloquent $model
*/
public function created($model)
public function created($model): void
{
echo '+';
}
@ -74,7 +74,7 @@ class ModuleModelObserver
/**
* @param Eloquent $model
*/
public function deleted($model)
public function deleted($model): void
{
echo '-';
}

View File

@ -14,7 +14,7 @@ class PackageObserver
* @param \App\Models\Package $package
* @return void
*/
public function created(Package $package)
public function created(Package $package): void
{
Eventlog::log('Package installed: ' . $package, $package->device_id, 'package', 3);
Log::info("+ $package");
@ -26,7 +26,7 @@ class PackageObserver
* @param \App\Models\Package $package
* @return void
*/
public function updated(Package $package)
public function updated(Package $package): void
{
if ($package->getOriginal('version') !== $package->version || $package->getOriginal('build') !== $package->build) {
$message = $package . ' from ' . $package->getOriginal('version') . ($package->getOriginal('build') ? '-' . $package->getOriginal('build') : '');
@ -41,7 +41,7 @@ class PackageObserver
* @param \App\Models\Package $package
* @return void
*/
public function deleted(Package $package)
public function deleted(Package $package): void
{
Eventlog::log('Package removed: ' . $package, $package->device_id, 'package', 3);
Log::info("- $package");
@ -53,7 +53,7 @@ class PackageObserver
* @param \App\Models\Package $package
* @return void
*/
public function restored(Package $package)
public function restored(Package $package): void
{
//
}
@ -64,7 +64,7 @@ class PackageObserver
* @param \App\Models\Package $package
* @return void
*/
public function forceDeleted(Package $package)
public function forceDeleted(Package $package): void
{
//
}

View File

@ -12,7 +12,7 @@ class ServiceObserver
* @param \App\Models\Service $service
* @return void
*/
public function created(Service $service)
public function created(Service $service): void
{
//
}
@ -23,7 +23,7 @@ class ServiceObserver
* @param \App\Models\Service $service
* @return void
*/
public function updated(Service $service)
public function updated(Service $service): void
{
//
}
@ -34,7 +34,7 @@ class ServiceObserver
* @param \App\Models\Service $service
* @return void
*/
public function deleted(Service $service)
public function deleted(Service $service): void
{
//
}
@ -45,7 +45,7 @@ class ServiceObserver
* @param \App\Models\Service $service
* @return void
*/
public function restored(Service $service)
public function restored(Service $service): void
{
//
}
@ -56,7 +56,7 @@ class ServiceObserver
* @param \App\Models\Service $service
* @return void
*/
public function forceDeleted(Service $service)
public function forceDeleted(Service $service): void
{
//
}

View File

@ -12,7 +12,7 @@ class UserObserver
* @param \App\Models\User $user
* @return void
*/
public function deleted(User $user)
public function deleted(User $user): void
{
$user->apiTokens()->delete();
$user->notificationAttribs()->delete();

View File

@ -24,9 +24,8 @@ class DashboardPolicy
* Determine whether the user can view any dashboard.
*
* @param \App\Models\User $user
* @return mixed
*/
public function viewAny(User $user)
public function viewAny(User $user): bool
{
return true;
}
@ -36,9 +35,8 @@ class DashboardPolicy
*
* @param \App\Models\User $user
* @param \App\Models\Dashboard $dashboard
* @return mixed
*/
public function view(User $user, Dashboard $dashboard)
public function view(User $user, Dashboard $dashboard): bool
{
return $dashboard->user_id == $user->user_id || $dashboard->access > 0;
}
@ -47,9 +45,8 @@ class DashboardPolicy
* Determine whether the user can create dashboards.
*
* @param \App\Models\User $user
* @return mixed
*/
public function create(User $user)
public function create(User $user): bool
{
return true;
}
@ -59,9 +56,8 @@ class DashboardPolicy
*
* @param \App\Models\User $user
* @param \App\Models\Dashboard $dashboard
* @return mixed
*/
public function update(User $user, Dashboard $dashboard)
public function update(User $user, Dashboard $dashboard): bool
{
return $dashboard->user_id == $user->user_id || $dashboard->access > 1;
}
@ -71,9 +67,8 @@ class DashboardPolicy
*
* @param \App\Models\User $user
* @param \App\Models\Dashboard $dashboard
* @return mixed
*/
public function delete(User $user, Dashboard $dashboard)
public function delete(User $user, Dashboard $dashboard): bool
{
return $dashboard->user_id == $user->user_id || $user->isAdmin();
}
@ -84,7 +79,6 @@ class DashboardPolicy
* @param \App\Models\User $user
* @param \App\Models\Dashboard $dashboard
* @param int $target_user_id
* @return bool
*/
public function copy(User $user, Dashboard $dashboard, int $target_user_id): bool
{

View File

@ -21,9 +21,8 @@ class DeviceGroupPolicy
* Determine whether the user can manage device groups.
*
* @param \App\Models\User $user
* @return bool
*/
public function manage(User $user)
public function manage(User $user): bool
{
return false;
}
@ -33,9 +32,8 @@ class DeviceGroupPolicy
*
* @param \App\Models\User $user
* @param \App\Models\DeviceGroup $deviceGroup
* @return mixed
*/
public function view(User $user, DeviceGroup $deviceGroup)
public function view(User $user, DeviceGroup $deviceGroup): bool
{
return false;
}
@ -44,9 +42,8 @@ class DeviceGroupPolicy
* Determine whether the user can view any device group.
*
* @param \App\Models\User $user
* @return mixed
*/
public function viewAny(User $user)
public function viewAny(User $user): bool
{
return false;
}
@ -55,9 +52,8 @@ class DeviceGroupPolicy
* Determine whether the user can create device groups.
*
* @param \App\Models\User $user
* @return mixed
*/
public function create(User $user)
public function create(User $user): bool
{
return false;
}
@ -67,9 +63,8 @@ class DeviceGroupPolicy
*
* @param \App\Models\User $user
* @param \App\Models\DeviceGroup $deviceGroup
* @return mixed
*/
public function update(User $user, DeviceGroup $deviceGroup)
public function update(User $user, DeviceGroup $deviceGroup): bool
{
return false;
}
@ -79,9 +74,8 @@ class DeviceGroupPolicy
*
* @param \App\Models\User $user
* @param \App\Models\DeviceGroup $deviceGroup
* @return mixed
*/
public function delete(User $user, DeviceGroup $deviceGroup)
public function delete(User $user, DeviceGroup $deviceGroup): bool
{
return false;
}
@ -91,9 +85,8 @@ class DeviceGroupPolicy
*
* @param \App\Models\User $user
* @param \App\Models\DeviceGroup $deviceGroup
* @return mixed
*/
public function restore(User $user, DeviceGroup $deviceGroup)
public function restore(User $user, DeviceGroup $deviceGroup): bool
{
return false;
}
@ -103,9 +96,8 @@ class DeviceGroupPolicy
*
* @param \App\Models\User $user
* @param \App\Models\DeviceGroup $deviceGroup
* @return mixed
*/
public function forceDelete(User $user, DeviceGroup $deviceGroup)
public function forceDelete(User $user, DeviceGroup $deviceGroup): bool
{
return false;
}

View File

@ -15,9 +15,8 @@ class DevicePolicy
* Determine whether the user can view any devices.
*
* @param \App\Models\User $user
* @return mixed
*/
public function viewAny(User $user)
public function viewAny(User $user): bool
{
return $user->hasGlobalRead();
}
@ -27,9 +26,8 @@ class DevicePolicy
*
* @param \App\Models\User $user
* @param \App\Models\Device $device
* @return mixed
*/
public function view(User $user, Device $device)
public function view(User $user, Device $device): bool
{
return $this->viewAny($user) || Permissions::canAccessDevice($device, $user);
}
@ -38,9 +36,8 @@ class DevicePolicy
* Determine whether the user can create devices.
*
* @param \App\Models\User $user
* @return mixed
*/
public function create(User $user)
public function create(User $user): bool
{
return $user->hasGlobalAdmin();
}
@ -50,9 +47,8 @@ class DevicePolicy
*
* @param \App\Models\User $user
* @param \App\Models\Device $device
* @return mixed
*/
public function update(User $user, Device $device)
public function update(User $user, Device $device): bool
{
return $user->isAdmin();
}
@ -62,9 +58,8 @@ class DevicePolicy
*
* @param \App\Models\User $user
* @param \App\Models\Device $device
* @return mixed
*/
public function delete(User $user, Device $device)
public function delete(User $user, Device $device): bool
{
return $user->isAdmin();
}
@ -74,9 +69,8 @@ class DevicePolicy
*
* @param \App\Models\User $user
* @param \App\Models\Device $device
* @return mixed
*/
public function restore(User $user, Device $device)
public function restore(User $user, Device $device): bool
{
return $user->hasGlobalAdmin();
}
@ -86,9 +80,8 @@ class DevicePolicy
*
* @param \App\Models\User $user
* @param \App\Models\Device $device
* @return mixed
*/
public function forceDelete(User $user, Device $device)
public function forceDelete(User $user, Device $device): bool
{
return $user->isAdmin();
}
@ -99,9 +92,8 @@ class DevicePolicy
*
* @param \App\Models\User $user
* @param \App\Models\Device $device
* @return mixed
*/
public function showConfig(User $user, Device $device)
public function showConfig(User $user, Device $device): bool
{
return $user->isAdmin();
}
@ -111,9 +103,8 @@ class DevicePolicy
*
* @param \App\Models\User $user
* @param \App\Models\Device $device
* @return mixed
*/
public function updateNotes(User $user, Device $device)
public function updateNotes(User $user, Device $device): bool
{
return $user->isAdmin();
}

View File

@ -14,9 +14,8 @@ class PollerClusterPolicy
* Determine whether the user can view any poller clusters.
*
* @param \App\Models\User $user
* @return mixed
*/
public function viewAny(User $user)
public function viewAny(User $user): bool
{
return $user->hasGlobalAdmin();
}
@ -26,22 +25,20 @@ class PollerClusterPolicy
*
* @param \App\Models\User $user
* @param \App\Models\PollerCluster $pollerCluster
* @return mixed
*/
public function view(User $user, PollerCluster $pollerCluster)
public function view(User $user, PollerCluster $pollerCluster): bool
{
//
return $this->viewAny($user);
}
/**
* Determine whether the user can create poller clusters.
*
* @param \App\Models\User $user
* @return mixed
*/
public function create(User $user)
public function create(User $user): bool
{
//
return $this->viewAny($user);
}
/**
@ -49,9 +46,8 @@ class PollerClusterPolicy
*
* @param \App\Models\User $user
* @param \App\Models\PollerCluster $pollerCluster
* @return mixed
*/
public function update(User $user, PollerCluster $pollerCluster)
public function update(User $user, PollerCluster $pollerCluster): bool
{
return $user->isAdmin();
}
@ -61,9 +57,8 @@ class PollerClusterPolicy
*
* @param \App\Models\User $user
* @param \App\Models\PollerCluster $pollerCluster
* @return mixed
*/
public function delete(User $user, PollerCluster $pollerCluster)
public function delete(User $user, PollerCluster $pollerCluster): bool
{
return $user->isAdmin();
}
@ -73,11 +68,10 @@ class PollerClusterPolicy
*
* @param \App\Models\User $user
* @param \App\Models\PollerCluster $pollerCluster
* @return mixed
*/
public function restore(User $user, PollerCluster $pollerCluster)
public function restore(User $user, PollerCluster $pollerCluster): bool
{
//
return $this->viewAny($user);
}
/**
@ -85,20 +79,18 @@ class PollerClusterPolicy
*
* @param \App\Models\User $user
* @param \App\Models\PollerCluster $pollerCluster
* @return mixed
*/
public function forceDelete(User $user, PollerCluster $pollerCluster)
public function forceDelete(User $user, PollerCluster $pollerCluster): bool
{
//
return $this->viewAny($user);
}
/**
* Determine whether the user can manage the poller cluster.
*
* @param \App\Models\User $user
* @return mixed
*/
public function manage(User $user)
public function manage(User $user): bool
{
return $user->isAdmin();
}

View File

@ -15,9 +15,8 @@ class PortPolicy
* Determine whether the user can view any ports.
*
* @param \App\Models\User $user
* @return mixed
*/
public function viewAny(User $user)
public function viewAny(User $user): bool
{
return $user->hasGlobalRead();
}
@ -27,9 +26,8 @@ class PortPolicy
*
* @param \App\Models\User $user
* @param \App\Models\Port $port
* @return mixed
*/
public function view(User $user, Port $port)
public function view(User $user, Port $port): bool
{
return $this->viewAny($user) || Permissions::canAccessDevice($port->device_id, $user) || Permissions::canAccessPort($port, $user);
}
@ -38,9 +36,8 @@ class PortPolicy
* Determine whether the user can create ports.
*
* @param \App\Models\User $user
* @return mixed
*/
public function create(User $user)
public function create(User $user): bool
{
return false;
}
@ -50,9 +47,8 @@ class PortPolicy
*
* @param \App\Models\User $user
* @param \App\Models\Port $port
* @return mixed
*/
public function update(User $user, Port $port)
public function update(User $user, Port $port): bool
{
return $user->hasGlobalAdmin();
}
@ -62,9 +58,8 @@ class PortPolicy
*
* @param \App\Models\User $user
* @param \App\Models\Port $port
* @return mixed
*/
public function delete(User $user, Port $port)
public function delete(User $user, Port $port): bool
{
return $user->hasGlobalAdmin();
}
@ -74,9 +69,8 @@ class PortPolicy
*
* @param \App\Models\User $user
* @param \App\Models\Port $port
* @return mixed
*/
public function restore(User $user, Port $port)
public function restore(User $user, Port $port): bool
{
return $user->hasGlobalAdmin();
}
@ -86,9 +80,8 @@ class PortPolicy
*
* @param \App\Models\User $user
* @param \App\Models\Port $port
* @return mixed
*/
public function forceDelete(User $user, Port $port)
public function forceDelete(User $user, Port $port): bool
{
return $user->hasGlobalAdmin();
}

View File

@ -14,9 +14,8 @@ class ServiceTemplatePolicy
* Determine whether the user can view any service templates.
*
* @param \App\Models\User $user
* @return mixed
*/
public function viewAny(User $user)
public function viewAny(User $user): bool
{
return $user->hasGlobalRead();
}
@ -26,9 +25,8 @@ class ServiceTemplatePolicy
*
* @param \App\Models\User $user
* @param \App\Models\ServiceTemplate $template
* @return mixed
*/
public function view(User $user, ServiceTemplate $template)
public function view(User $user, ServiceTemplate $template): bool
{
return $this->viewAny($user);
}
@ -37,9 +35,8 @@ class ServiceTemplatePolicy
* Determine whether the user can create service templates.
*
* @param \App\Models\User $user
* @return mixed
*/
public function create(User $user)
public function create(User $user): bool
{
return $user->hasGlobalAdmin();
}
@ -49,9 +46,8 @@ class ServiceTemplatePolicy
*
* @param \App\Models\User $user
* @param \App\Models\ServiceTemplate $template
* @return mixed
*/
public function update(User $user, ServiceTemplate $template)
public function update(User $user, ServiceTemplate $template): bool
{
return $user->isAdmin();
}
@ -61,9 +57,8 @@ class ServiceTemplatePolicy
*
* @param \App\Models\User $user
* @param \App\Models\ServiceTemplate $template
* @return mixed
*/
public function delete(User $user, ServiceTemplate $template)
public function delete(User $user, ServiceTemplate $template): bool
{
return $user->isAdmin();
}
@ -73,9 +68,8 @@ class ServiceTemplatePolicy
*
* @param \App\Models\User $user
* @param \App\Models\ServiceTemplate $template
* @return mixed
*/
public function restore(User $user, ServiceTemplate $template)
public function restore(User $user, ServiceTemplate $template): bool
{
return $user->hasGlobalAdmin();
}
@ -85,9 +79,8 @@ class ServiceTemplatePolicy
*
* @param \App\Models\User $user
* @param \App\Models\ServiceTemplate $template
* @return mixed
*/
public function forceDelete(User $user, ServiceTemplate $template)
public function forceDelete(User $user, ServiceTemplate $template): bool
{
return $user->isAdmin();
}
@ -98,9 +91,8 @@ class ServiceTemplatePolicy
*
* @param \App\Models\User $user
* @param \App\Models\ServiceTemplate $template
* @return mixed
*/
public function showConfig(User $user, ServiceTemplate $template)
public function showConfig(User $user, ServiceTemplate $template): bool
{
return $user->isAdmin();
}
@ -110,9 +102,8 @@ class ServiceTemplatePolicy
*
* @param \App\Models\User $user
* @param \App\Models\ServiceTemplate $template
* @return mixed
*/
public function updateNotes(User $user, ServiceTemplate $template)
public function updateNotes(User $user, ServiceTemplate $template): bool
{
return $user->isAdmin();
}

View File

@ -13,9 +13,8 @@ class UserPolicy
* Determine whether the user can manage users.
*
* @param User $user
* @return bool
*/
public function manage(User $user)
public function manage(User $user): bool
{
return $user->isAdmin();
}
@ -25,9 +24,8 @@ class UserPolicy
*
* @param User $user
* @param User $target
* @return bool
*/
public function view(User $user, User $target)
public function view(User $user, User $target): bool
{
return $user->isAdmin() || $target->is($user);
}
@ -36,9 +34,8 @@ class UserPolicy
* Determine whether the user can view any user.
*
* @param User $user
* @return mixed
*/
public function viewAny(User $user)
public function viewAny(User $user): bool
{
return $user->isAdmin();
}
@ -47,9 +44,8 @@ class UserPolicy
* Determine whether the user can create users.
*
* @param User $user
* @return bool
*/
public function create(User $user)
public function create(User $user): bool
{
return $user->isAdmin();
}
@ -59,9 +55,8 @@ class UserPolicy
*
* @param User $user
* @param User $target
* @return bool
*/
public function update(User $user, User $target)
public function update(User $user, User $target): bool
{
return $user->isAdmin() || $target->is($user);
}
@ -71,9 +66,8 @@ class UserPolicy
*
* @param User $user
* @param User $target
* @return bool
*/
public function delete(User $user, User $target)
public function delete(User $user, User $target): bool
{
return $user->isAdmin();
}

View File

@ -20,7 +20,7 @@ class AppServiceProvider extends ServiceProvider
*
* @return void
*/
public function register()
public function register(): void
{
$this->registerFacades();
$this->registerGeocoder();
@ -48,7 +48,7 @@ class AppServiceProvider extends ServiceProvider
*
* @return void
*/
public function boot()
public function boot(): void
{
\Illuminate\Pagination\Paginator::useBootstrap();

Some files were not shown because too many files have changed in this diff Show More