diff --git a/src/Security/Member.php b/src/Security/Member.php index 31933a662..1027cbefa 100644 --- a/src/Security/Member.php +++ b/src/Security/Member.php @@ -44,6 +44,7 @@ use SilverStripe\Forms\FormField; use SilverStripe\Forms\SearchableDropdownField; use SilverStripe\Forms\SearchableMultiDropdownField; use SilverStripe\ORM\FieldType\DBForeignKey; +use SilverStripe\Dev\Deprecation; /** * The member class which represents the users of the system @@ -400,7 +401,7 @@ class Member extends DataObject public static function password_validator() { if (Injector::inst()->has(PasswordValidator::class)) { - return Injector::inst()->get(PasswordValidator::class); + return Deprecation::withSuppressedNotice(fn() => Injector::inst()->get(PasswordValidator::class)); } return null; } diff --git a/src/Security/PasswordValidator.php b/src/Security/PasswordValidator.php index 8ab6482ef..388e76fe6 100644 --- a/src/Security/PasswordValidator.php +++ b/src/Security/PasswordValidator.php @@ -6,6 +6,7 @@ use SilverStripe\Core\Config\Configurable; use SilverStripe\Core\Extensible; use SilverStripe\Core\Injector\Injectable; use SilverStripe\Core\Validation\ValidationResult; +use SilverStripe\Dev\Deprecation; /** * This class represents a validator for member passwords. @@ -19,6 +20,8 @@ use SilverStripe\Core\Validation\ValidationResult; * * Member::set_password_validator($pwdValidator); * + * + * @deprecated 5.4.0 Will be renamed to SilverStripe\Security\Validation\RulesPasswordValidator */ class PasswordValidator { @@ -75,6 +78,15 @@ class PasswordValidator */ protected $historicalPasswordCount = null; + public function __construct() + { + Deprecation::notice( + '5.4.0', + 'Will be renamed to SilverStripe\Security\Validation\RulesPasswordValidator', + Deprecation::SCOPE_CLASS + ); + } + /** * @return int */ diff --git a/tests/php/Forms/ConfirmedPasswordFieldTest.php b/tests/php/Forms/ConfirmedPasswordFieldTest.php index ac614dc4b..db2aed705 100644 --- a/tests/php/Forms/ConfirmedPasswordFieldTest.php +++ b/tests/php/Forms/ConfirmedPasswordFieldTest.php @@ -15,6 +15,7 @@ use SilverStripe\Security\PasswordValidator; use SilverStripe\View\SSViewer; use Closure; use PHPUnit\Framework\Attributes\DataProvider; +use SilverStripe\Dev\Deprecation; class ConfirmedPasswordFieldTest extends SapphireTest { @@ -24,9 +25,11 @@ class ConfirmedPasswordFieldTest extends SapphireTest { parent::setUp(); - PasswordValidator::singleton() + Deprecation::withSuppressedNotice( + fn() => PasswordValidator::singleton() ->setMinLength(0) - ->setTestNames([]); + ->setTestNames([]) + ); } public function testSetValue() diff --git a/tests/php/Security/MemberAuthenticatorTest.php b/tests/php/Security/MemberAuthenticatorTest.php index 53f804587..8b7b1e5ff 100644 --- a/tests/php/Security/MemberAuthenticatorTest.php +++ b/tests/php/Security/MemberAuthenticatorTest.php @@ -6,6 +6,7 @@ use SilverStripe\Control\Controller; use SilverStripe\Control\NullHTTPRequest; use SilverStripe\Core\Config\Config; use SilverStripe\Core\Injector\Injector; +use SilverStripe\Dev\Deprecation; use SilverStripe\Dev\SapphireTest; use SilverStripe\ORM\FieldType\DBDatetime; use SilverStripe\Core\Validation\ValidationResult; @@ -44,9 +45,11 @@ class MemberAuthenticatorTest extends SapphireTest DefaultAdminService::setDefaultAdmin('admin', 'password'); // Enforce dummy validation (this can otherwise be influenced by recipe config) - PasswordValidator::singleton() + Deprecation::withSuppressedNotice( + fn() => PasswordValidator::singleton() ->setMinLength(0) - ->setTestNames([]); + ->setTestNames([]) + ); } protected function tearDown(): void diff --git a/tests/php/Security/MemberCsvBulkLoaderTest.php b/tests/php/Security/MemberCsvBulkLoaderTest.php index e768f6125..6860ee18f 100644 --- a/tests/php/Security/MemberCsvBulkLoaderTest.php +++ b/tests/php/Security/MemberCsvBulkLoaderTest.php @@ -2,6 +2,7 @@ namespace SilverStripe\Security\Tests; +use SilverStripe\Dev\Deprecation; use SilverStripe\ORM\DataObject; use SilverStripe\Security\Group; use SilverStripe\Security\MemberCsvBulkLoader; @@ -19,9 +20,11 @@ class MemberCsvBulkLoaderTest extends SapphireTest { parent::setUp(); - PasswordValidator::singleton() + Deprecation::withSuppressedNotice( + fn() => PasswordValidator::singleton() ->setMinLength(0) - ->setTestNames([]); + ->setTestNames([]) + ); } public function testNewImport() diff --git a/tests/php/Security/MemberTest.php b/tests/php/Security/MemberTest.php index 73e502a62..eb60dabe8 100644 --- a/tests/php/Security/MemberTest.php +++ b/tests/php/Security/MemberTest.php @@ -8,6 +8,7 @@ use SilverStripe\Control\Cookie; use SilverStripe\Core\Config\Config; use SilverStripe\Core\Convert; use SilverStripe\Core\Injector\Injector; +use SilverStripe\Dev\Deprecation; use SilverStripe\Dev\FunctionalTest; use SilverStripe\Forms\CheckboxField; use SilverStripe\Forms\FieldList; @@ -74,9 +75,11 @@ class MemberTest extends FunctionalTest Member::config()->set('unique_identifier_field', 'Email'); - PasswordValidator::singleton() + Deprecation::withSuppressedNotice( + fn() => PasswordValidator::singleton() ->setMinLength(0) - ->setTestNames([]); + ->setTestNames([]) + ); i18n::set_locale('en_US'); } @@ -1740,7 +1743,7 @@ class MemberTest extends FunctionalTest public function testChangePasswordOnlyValidatesPlaintext() { // This validator requires passwords to be 17 characters long - Member::set_password_validator(new MemberTest\VerySpecificPasswordValidator()); + Member::set_password_validator(Deprecation::withSuppressedNotice(fn() => new MemberTest\VerySpecificPasswordValidator())); // This algorithm will never return a 17 character hash Security::config()->set('password_encryption_algorithm', 'blowfish'); @@ -1769,7 +1772,7 @@ class MemberTest extends FunctionalTest public function testChangePasswordToBlankIsValidated() { - Member::set_password_validator(new PasswordValidator()); + Member::set_password_validator(Deprecation::withSuppressedNotice(fn() => new PasswordValidator())); // override setup() function which setMinLength(0) PasswordValidator::singleton()->setMinLength(8); // 'test' member has a password defined in yml @@ -1905,7 +1908,7 @@ class MemberTest extends FunctionalTest $password = $member->generateRandomPassword(); $this->assertSame(20, strlen($password)); // password validator - $validator = new PasswordValidator(); + $validator = Deprecation::withSuppressedNotice(fn() => new PasswordValidator()); Member::set_password_validator($validator); // Password length of 20 even if validator minLength is less than 20 $validator->setMinLength(10); diff --git a/tests/php/Security/PasswordValidatorTest.php b/tests/php/Security/PasswordValidatorTest.php index 560a8f255..8b92eac94 100644 --- a/tests/php/Security/PasswordValidatorTest.php +++ b/tests/php/Security/PasswordValidatorTest.php @@ -2,6 +2,7 @@ namespace SilverStripe\Security\Tests; +use SilverStripe\Dev\Deprecation; use SilverStripe\Dev\SapphireTest; use SilverStripe\Security\Member; use SilverStripe\Security\PasswordValidator; @@ -26,7 +27,7 @@ class PasswordValidatorTest extends SapphireTest public function testValidate() { - $v = new PasswordValidator(); + $v = Deprecation::withSuppressedNotice(fn() => new PasswordValidator()); $r = $v->validate('', new Member()); $this->assertTrue($r->isValid(), 'Empty password is valid by default'); @@ -36,7 +37,7 @@ class PasswordValidatorTest extends SapphireTest public function testValidateMinLength() { - $v = new PasswordValidator(); + $v = Deprecation::withSuppressedNotice(fn() => new PasswordValidator()); $v->setMinLength(4); $r = $v->validate('123', new Member()); @@ -50,7 +51,7 @@ class PasswordValidatorTest extends SapphireTest public function testValidateMinScore() { // Set both score and set of tests - $v = new PasswordValidator(); + $v = Deprecation::withSuppressedNotice(fn() => new PasswordValidator()); $v->setMinTestScore(3); $v->setTestNames(["lowercase", "uppercase", "digits", "punctuation"]); @@ -61,7 +62,7 @@ class PasswordValidatorTest extends SapphireTest $this->assertTrue($r->isValid(), 'Passing enough tests'); // Ensure min score without tests works (uses default tests) - $v = new PasswordValidator(); + $v = Deprecation::withSuppressedNotice(fn() => new PasswordValidator()); $v->setMinTestScore(3); $r = $v->validate('aA', new Member()); @@ -81,7 +82,7 @@ class PasswordValidatorTest extends SapphireTest */ public function testHistoricalPasswordCount() { - $validator = new PasswordValidator; + $validator = Deprecation::withSuppressedNotice(fn() => new PasswordValidator); $validator->setHistoricCount(3); Member::set_password_validator($validator); diff --git a/tests/php/Security/VersionedMemberAuthenticatorTest.php b/tests/php/Security/VersionedMemberAuthenticatorTest.php index a53d5de31..7fd813b28 100644 --- a/tests/php/Security/VersionedMemberAuthenticatorTest.php +++ b/tests/php/Security/VersionedMemberAuthenticatorTest.php @@ -6,6 +6,7 @@ use SilverStripe\Control\Controller; use SilverStripe\Control\NullHTTPRequest; use SilverStripe\Core\Config\Config; use SilverStripe\Core\Injector\Injector; +use SilverStripe\Dev\Deprecation; use SilverStripe\Dev\SapphireTest; use SilverStripe\ORM\FieldType\DBDatetime; use SilverStripe\Core\Validation\ValidationResult; @@ -43,9 +44,11 @@ class VersionedMemberAuthenticatorTest extends SapphireTest } // Enforce dummy validation (this can otherwise be influenced by recipe config) - PasswordValidator::singleton() + Deprecation::withSuppressedNotice( + fn() => PasswordValidator::singleton() ->setMinLength(0) - ->setTestNames([]); + ->setTestNames([]) + ); } protected function tearDown(): void