diff --git a/composer.json b/composer.json index 9e6c863..34985d4 100644 --- a/composer.json +++ b/composer.json @@ -5,16 +5,18 @@ "license": "MIT", "require": { - "silverstripe/framework": "^4", - "silverstripe/admin": "^1.0", - "symbiote/silverstripe-gridfieldextensions": "^3", + "php": "^8.1", + "silverstripe/framework": "^5", + "silverstripe/admin": "^2", + "symbiote/silverstripe-gridfieldextensions": "^4", "s1lentium/iptools": "^1.1", - "silverstripe/auditor": "^2" + "silverstripe/auditor": "^3", + "silverstripe/errorpage": "^2" }, "require-dev": { - "phpunit/phpunit": "^5.7", - "squizlabs/php_codesniffer": "^3.0" + "phpunit/phpunit": "^9.5", + "squizlabs/php_codesniffer": "^3" }, "autoload": { diff --git a/phpunit.xml.dist b/phpunit.xml.dist index d388c89..148898a 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,14 +1,14 @@ - - - tests/ - - - - src/ - - tests/ - - - - \ No newline at end of file + + + + src/ + + + tests/ + + + + tests/ + + diff --git a/src/Admin/IPListAdmin.php b/src/Admin/IPListAdmin.php index 60a7517..26fed5a 100644 --- a/src/Admin/IPListAdmin.php +++ b/src/Admin/IPListAdmin.php @@ -9,27 +9,28 @@ class IPListAdmin extends ModelAdmin { - private static $menu_title = 'IP Lists'; + private static string $menu_title = 'IP Lists'; - private static $url_segment = 'ip-lists'; + private static string $url_segment = 'ip-lists'; - private static $menu_icon_class = 'font-icon-lock'; + private static string $menu_icon_class = 'font-icon-lock'; - private static $managed_models = [ + private static array $managed_models = [ IPList::class, IP::class ]; + /** + * @inheritDoc + */ public function getEditForm($id = null, $fields = null) { $form = parent::getEditForm($id, $fields); - if ($this->modelClass == IP::class) { + if ($this->modelClass === IP::class) { $msg = '
Caution: Removing IPs from this list will remove' . ' them from all IP lists and the database.
'; $form->Fields()->insertBefore($this->sanitiseClassName(IP::class), LiteralField::create('IPHelper', $msg)); - - } return $form; diff --git a/src/Middleware/IPListMiddleware.php b/src/Middleware/IPListMiddleware.php index 1010105..5cd5381 100644 --- a/src/Middleware/IPListMiddleware.php +++ b/src/Middleware/IPListMiddleware.php @@ -5,26 +5,26 @@ use Madmatt\IPLists\Service\IPListService; use SilverStripe\Control\Director; use SilverStripe\Control\HTTPRequest; -use SilverStripe\Control\HTTPResponse; use SilverStripe\Control\Middleware\HTTPMiddleware; use SilverStripe\Core\Config\Configurable; use SilverStripe\Core\Injector\Injectable; class IPListMiddleware implements HTTPMiddleware { - use Configurable, Injectable; + use Configurable; + use Injectable; /** * @var bool Defaults to true, set this to false via YML config to globally disable the middleware * @config */ - private static $enabled = true; + private static bool $enabled = true; /** * @var bool Defaults to true, set this to false via YML config to disable the middleware on development enviroments * @config */ - private static $enabled_on_dev = true; + private static bool $enabled_on_dev = true; /** * @var bool Defaults to false, set this to true via YML config to enable the middleware on the command-line @@ -32,14 +32,14 @@ class IPListMiddleware implements HTTPMiddleware * extends *HTTPMiddleware*, so you'd only expect it to apply to HTTP requests but it also applies to cli). * @config */ - private static $enabled_on_cli = false; + private static bool $enabled_on_cli = false; /** * @var IPListService */ public $service; - private static $dependencies = [ + private static array $dependencies = [ 'service' => '%$' . IPListService::class ]; diff --git a/src/Model/IP.php b/src/Model/IP.php index 013c422..8c51c51 100644 --- a/src/Model/IP.php +++ b/src/Model/IP.php @@ -3,11 +3,9 @@ namespace Madmatt\IPLists\Model; use Exception; -use IPTools\Network; use IPTools\Range; use SilverStripe\ORM\DataObject; use SilverStripe\ORM\FieldType\DBField; -use SilverStripe\ORM\FieldType\DBVarchar; use SilverStripe\ORM\ManyManyList; /** @@ -30,9 +28,9 @@ */ class IP extends DataObject { - private static $singular_name = 'IP'; + private static string $singular_name = 'IP'; - private static $table_name = 'IPLists_IP'; + private static string $table_name = 'IPLists_IP'; private static $db = [ 'AddressType' => 'Enum(array("' . self::TYPE_IP . '","' . self::TYPE_CIDR . '"), "' . self::TYPE_IP . '")', @@ -40,19 +38,19 @@ class IP extends DataObject 'Title' => 'Varchar(200)', ]; - private static $belongs_many_many = [ + private static array $belongs_many_many = [ 'Lists' => IPList::class ]; - private static $summary_fields = [ + private static array $summary_fields = [ 'Title' => 'Title', 'IP' => 'IP', 'AddressType' => 'AddressType', 'UsedInLists' => 'Used in...' ]; - const TYPE_IP = 'IP'; - const TYPE_CIDR = 'CIDR'; + public const TYPE_IP = 'IP'; + public const TYPE_CIDR = 'CIDR'; public function getCMSFields() { diff --git a/src/Model/IPList.php b/src/Model/IPList.php index 10437f0..ad7ed50 100644 --- a/src/Model/IPList.php +++ b/src/Model/IPList.php @@ -10,18 +10,11 @@ use SilverStripe\Forms\GridField\GridField; use SilverStripe\Forms\GridField\GridField_ActionMenu; use SilverStripe\Forms\GridField\GridFieldAddExistingAutocompleter; -use SilverStripe\Forms\GridField\GridFieldAddNewButton; use SilverStripe\Forms\GridField\GridFieldButtonRow; use SilverStripe\Forms\GridField\GridFieldConfig; -use SilverStripe\Forms\GridField\GridFieldConfig_RelationEditor; -use SilverStripe\Forms\GridField\GridFieldDataColumns; use SilverStripe\Forms\GridField\GridFieldDeleteAction; use SilverStripe\Forms\GridField\GridFieldDetailForm; use SilverStripe\Forms\GridField\GridFieldEditButton; -use SilverStripe\Forms\GridField\GridFieldFilterHeader; -use SilverStripe\Forms\GridField\GridFieldPageCount; -use SilverStripe\Forms\GridField\GridFieldPaginator; -use SilverStripe\Forms\GridField\GridFieldSortableHeader; use SilverStripe\Forms\GridField\GridFieldToolbarHeader; use SilverStripe\Forms\LiteralField; use SilverStripe\Forms\NumericField; @@ -30,11 +23,8 @@ use SilverStripe\Forms\TextField; use SilverStripe\Forms\ToggleCompositeField; use SilverStripe\ORM\DataObject; -use SilverStripe\ORM\FieldType\DBField; -use SilverStripe\ORM\FieldType\DBHTMLVarchar; use Symbiote\GridFieldExtensions\GridFieldAddNewInlineButton; use Symbiote\GridFieldExtensions\GridFieldEditableColumns; -use Symbiote\GridFieldExtensions\GridFieldOrderableRows; use Symbiote\GridFieldExtensions\GridFieldTitleHeader; /** @@ -54,13 +44,13 @@ */ class IPList extends DataObject { - private static $singular_name = 'IP list'; + private static string $singular_name = 'IP list'; - private static $table_name = 'IPLists_IPList'; + private static string $table_name = 'IPLists_IPList'; - private static $default_sort = 'Priority DESC, ID ASC'; + private static string $default_sort = 'Priority DESC, ID ASC'; - private static $db = [ + private static array $db = [ 'Title' => 'Varchar(200)', 'Description' => 'Text', 'Enabled' => 'Boolean', @@ -70,24 +60,24 @@ class IPList extends DataObject 'ProtectedRoutes' => 'Text', ]; - private static $many_many = [ + private static array $many_many = [ 'IPs' => IP::class ]; - private static $many_many_extraFields = [ + private static array $many_many_extraFields = [ 'IPs' => [ 'Sort' => 'Int' ] ]; - private static $defaults = [ + private static array $defaults = [ 'Enabled' => true, 'Priority' => 100, 'ListType' => self::LIST_TYPE_ALLOW, 'DenyMethod' => self::DENY_METHOD_404, ]; - private static $summary_fields = [ + private static array $summary_fields = [ 'Title' => 'Title', 'Description' => 'Description', 'Enabled.Nice' => 'Is Enabled?', @@ -95,11 +85,11 @@ class IPList extends DataObject 'IPs.Count' => 'Number of IPs' ]; - const LIST_TYPE_DENY = 'Deny'; - const LIST_TYPE_ALLOW = 'Allow'; + public const LIST_TYPE_DENY = 'Deny'; + public const LIST_TYPE_ALLOW = 'Allow'; - const DENY_METHOD_404 = 404; - const DENY_METHOD_400 = 400; + public const DENY_METHOD_404 = 404; + public const DENY_METHOD_400 = 400; public function getCMSFields() { diff --git a/src/Service/IPListService.php b/src/Service/IPListService.php index 2c9db93..cbc8637 100644 --- a/src/Service/IPListService.php +++ b/src/Service/IPListService.php @@ -7,8 +7,8 @@ use LogicException; use Madmatt\IPLists\Model\IP; use Madmatt\IPLists\Model\IPList; +use Monolog\Level; use Monolog\Logger; -use PageController; use SilverStripe\Control\Controller; use SilverStripe\Control\HTTPRequest; use SilverStripe\Control\Session; @@ -22,7 +22,7 @@ class IPListService */ public $auditLogger; - private static $dependencies = [ + private static array $dependencies = [ 'auditLogger' => '%$AuditLogger' ]; @@ -39,10 +39,7 @@ class IPListService public const IP_ACCESS_DENIED = 0; public const IP_ACCESS_AMBIVALENT = -1; - /** - * @var array - */ - private $validLists = []; + private array $validLists = []; /** * Check all {@link IPList} objects to find any that match the given URL route. If one is found, confirm whether the @@ -214,13 +211,13 @@ protected function log(int $allowOrDeny = -1, array $context = []) switch ($allowOrDeny) { case self::IP_ACCESS_ALLOWED: $message = $successLogMsg; - $logLevel = Logger::DEBUG; + $logLevel = Level::Debug; $msgType = 'success'; break; case self::IP_ACCESS_DENIED: $message = $failureLogMsg; - $logLevel = Logger::WARNING; + $logLevel = Level::Warning; $msgType = 'failure'; break; diff --git a/tests/Model/IPListTest.php b/tests/Model/IPListTest.php index 977a4f4..222478f 100644 --- a/tests/Model/IPListTest.php +++ b/tests/Model/IPListTest.php @@ -4,23 +4,28 @@ use Madmatt\IPLists\Model\IPList; use SilverStripe\Dev\SapphireTest; +use SilverStripe\Forms\GridField\GridField; +use SilverStripe\Forms\LiteralField; class IPListTest extends SapphireTest { protected $usesDatabase = true; - public function testGetCMSFieldsIPHelpMessage() + public function testGetCMSFieldsIPHelpMessage(): void { - $list = new IPList(); + $list = new IPList([ + 'Title' => 'Title', + 'ProtectedRoutes' => 'routes' + ]); $fields = $list->getCMSFields(); // IPHelpMessage should only appear if the list hasn't been saved yet, and should be replaced by the GridField - $this->assertTrue($fields->hasField('IPHelpMessage')); + $this->assertInstanceOf(LiteralField::class, $fields->fieldByName('IPHelpMessage')); $this->assertFalse($fields->hasField('IPs')); $list->write(); $fields = $list->getCMSFields(); $this->assertFalse($fields->hasField('IPHelpMessage')); - $this->assertTrue($fields->hasField('IPs')); + $this->assertInstanceOf(GridField::class, $fields->dataFieldByName('IPs')); } } diff --git a/tests/Model/IPTest.php b/tests/Model/IPTest.php index eb166a0..dd80cb2 100644 --- a/tests/Model/IPTest.php +++ b/tests/Model/IPTest.php @@ -7,7 +7,7 @@ class IPTest extends SapphireTest { - public function testContainsIP() + public function testContainsIP(): void { $ip = new IP([ 'IP' => '10.1.1.1', @@ -22,7 +22,7 @@ public function testContainsIP() $this->assertFalse($ip->contains('::1')); } - public function testContainsCIDR() + public function testContainsCIDR(): void { $ip = new IP([ 'IP' => '10.1.1.1/24',