diff --git a/src/Security/Member.php b/src/Security/Member.php index 2c7c7e710..a3c3dc0d7 100644 --- a/src/Security/Member.php +++ b/src/Security/Member.php @@ -15,6 +15,7 @@ use SilverStripe\Core\Convert; use SilverStripe\Core\Injector\Injector; use SilverStripe\Dev\TestMailer; use SilverStripe\Forms\CheckboxField; +use SilverStripe\Forms\CompositeValidator; use SilverStripe\Forms\ConfirmedPasswordField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\FieldList; @@ -697,6 +698,20 @@ class Member extends DataObject return $validator; } + public function getCMSCompositeValidator(): CompositeValidator + { + // Add the member validator before extension point, so it's much easier to customise this + // via an extension + $this->beforeExtending( + 'updateCMSCompositeValidator', + function (CompositeValidator $compositeValidator): void { + $memberValidator = $this->getValidator(); + $compositeValidator->addValidator($memberValidator); + } + ); + + return parent::getCMSCompositeValidator(); + } /** * Temporarily act as the specified user, limited to a $callback, but diff --git a/tests/php/Core/Validation/MemberValidatorTest.php b/tests/php/Core/Validation/MemberValidatorTest.php new file mode 100644 index 000000000..f5e345061 --- /dev/null +++ b/tests/php/Core/Validation/MemberValidatorTest.php @@ -0,0 +1,21 @@ +getCMSCompositeValidator(); + + $memberValidators = $compositeValidator->getValidatorsByType(Member_Validator::class); + $this->assertCount(1, $memberValidators, 'We expect exactly one member validator'); + } +}