Skip to content

Commit

Permalink
Merge pull request #11395 from silverstripe-terraformers/bugfix/membe…
Browse files Browse the repository at this point in the history
…r-validator

FIX: Member form validator fix.
  • Loading branch information
GuySartorelli authored Sep 27, 2024
2 parents 32cafb5 + 5556481 commit 8a538f7
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/Security/Member.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
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;
Expand Down Expand Up @@ -696,6 +697,20 @@ public function getValidator()
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
Expand Down
21 changes: 21 additions & 0 deletions tests/php/Core/Validation/MemberValidatorTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

namespace SilverStripe\Core\Tests\Validation;

use SilverStripe\Dev\SapphireTest;
use SilverStripe\Security\Member;
use SilverStripe\Security\Member_Validator;

class MemberValidatorTest extends SapphireTest
{
protected $usesDatabase = false;

public function testMemberValidator(): void
{
$member = new Member();
$compositeValidator = $member->getCMSCompositeValidator();

$memberValidators = $compositeValidator->getValidatorsByType(Member_Validator::class);
$this->assertCount(1, $memberValidators, 'We expect exactly one member validator');
}
}

0 comments on commit 8a538f7

Please sign in to comment.