From fe32efe03492d9297e8f9cff60d3eb047555ca11 Mon Sep 17 00:00:00 2001 From: Steve Boyd Date: Mon, 17 Jan 2022 09:56:06 +1300 Subject: [PATCH] FIX Export registered methods in enabled members report --- .../AuthenticationFailedException.php | 1 - src/Exception/EncryptionAdapterException.php | 1 - src/Exception/InvalidMethodException.php | 1 - src/Exception/MemberNotFoundException.php | 1 - src/Exception/RegistrationFailedException.php | 1 - src/Extension/MemberExtension.php | 20 ++++++++++++++++ src/Report/EnabledMembers.php | 12 +++++----- src/State/AvailableMethodDetailsInterface.php | 1 - .../RegisteredMethodDetailsInterface.php | 1 - tests/php/Extension/MemberExtensionTest.php | 23 +++++++++++++++++++ .../Extension/MemberExtensionTestMethod2.php | 22 ++++++++++++++++++ tests/php/Stub/DuplicatedBasicMath/Method.php | 1 - tests/php/Stub/Null/RegisterHandler.php | 1 - 13 files changed, 71 insertions(+), 15 deletions(-) create mode 100644 tests/php/Extension/MemberExtensionTestMethod2.php diff --git a/src/Exception/AuthenticationFailedException.php b/src/Exception/AuthenticationFailedException.php index ea3e5345..4314bcee 100644 --- a/src/Exception/AuthenticationFailedException.php +++ b/src/Exception/AuthenticationFailedException.php @@ -6,5 +6,4 @@ class AuthenticationFailedException extends Exception { - } diff --git a/src/Exception/EncryptionAdapterException.php b/src/Exception/EncryptionAdapterException.php index 87a9eae9..48e5b817 100644 --- a/src/Exception/EncryptionAdapterException.php +++ b/src/Exception/EncryptionAdapterException.php @@ -9,5 +9,4 @@ */ class EncryptionAdapterException extends Exception { - } diff --git a/src/Exception/InvalidMethodException.php b/src/Exception/InvalidMethodException.php index e4645956..0764bc5d 100644 --- a/src/Exception/InvalidMethodException.php +++ b/src/Exception/InvalidMethodException.php @@ -6,5 +6,4 @@ class InvalidMethodException extends LogicException { - } diff --git a/src/Exception/MemberNotFoundException.php b/src/Exception/MemberNotFoundException.php index 244b8cab..da6f4570 100644 --- a/src/Exception/MemberNotFoundException.php +++ b/src/Exception/MemberNotFoundException.php @@ -9,5 +9,4 @@ */ class MemberNotFoundException extends Exception { - } diff --git a/src/Exception/RegistrationFailedException.php b/src/Exception/RegistrationFailedException.php index 1d231593..5fc844ac 100644 --- a/src/Exception/RegistrationFailedException.php +++ b/src/Exception/RegistrationFailedException.php @@ -6,5 +6,4 @@ class RegistrationFailedException extends LogicException { - } diff --git a/src/Extension/MemberExtension.php b/src/Extension/MemberExtension.php index 57941b16..e01d3b46 100644 --- a/src/Extension/MemberExtension.php +++ b/src/Extension/MemberExtension.php @@ -69,6 +69,26 @@ public function setDefaultRegisteredMethod(RegisteredMethod $registeredMethod): return $this->owner; } + /** + * @return string + */ + public function getDefaultRegisteredMethodName(): string + { + $method = $this->getDefaultRegisteredMethod(); + return $method ? $method->getMethod()->getName() : ''; + } + + /** + * @return string + */ + public function getRegisteredMethodNames(): string + { + $arr = array_map(function ($method) { + return $method->getMethod()->getName(); + }, $this->owner->RegisteredMFAMethods()->toArray()); + return implode(', ', $arr); + } + public function updateCMSFields(FieldList $fields): FieldList { $fields->removeByName(['DefaultRegisteredMethodID', 'HasSkippedMFARegistration', 'RegisteredMFAMethods']); diff --git a/src/Report/EnabledMembers.php b/src/Report/EnabledMembers.php index 4a35b033..1020bd11 100644 --- a/src/Report/EnabledMembers.php +++ b/src/Report/EnabledMembers.php @@ -94,13 +94,11 @@ public function sourceRecords($params): DataList public function columns(): array { $columns = singleton(Member::class)->summaryFields() + [ - 'registeredMethods' => [ - 'title' => _t(__CLASS__ . '.COLUMN_METHODS_REGISTERED', 'Registered methods'), - 'formatting' => [$this, 'formatMethodsColumn'] + 'RegisteredMethodNames' => [ + 'title' => _t(__CLASS__ . '.COLUMN_METHODS_REGISTERED', 'Registered methods') ], - 'defaultMethodName' => [ - 'title' => _t(__CLASS__ . '.COLUMN_METHOD_DEFAULT', 'Default method'), - 'formatting' => [$this, 'formatDefaultMethodColumn'] + 'DefaultRegisteredMethodName' => [ + 'title' => _t(__CLASS__ . '.COLUMN_METHOD_DEFAULT', 'Default method') ], 'HasSkippedMFARegistration' => [ 'title' => _t(__CLASS__ . '.COLUMN_SKIPPED_REGISTRATION', 'Skipped registration'), @@ -153,6 +151,7 @@ public function parameterFields(): FieldList * @param null $_ * @param Member $record * @return string + * @deprecated Will be removed in 5.0 use MemberExtension::getRegisteredMethodNames() instead */ public function formatMethodsColumn($_, Member $record): string { @@ -170,6 +169,7 @@ public function formatMethodsColumn($_, Member $record): string * @param null $_ * @param Member&MemberExtension $record * @return string + * @deprecated Will be removed in 5.0 use MemberExtension::getDefaultRegisteredMethodName() instead */ public function formatDefaultMethodColumn($_, Member $record): string { diff --git a/src/State/AvailableMethodDetailsInterface.php b/src/State/AvailableMethodDetailsInterface.php index 8f829862..c7f78de2 100644 --- a/src/State/AvailableMethodDetailsInterface.php +++ b/src/State/AvailableMethodDetailsInterface.php @@ -10,5 +10,4 @@ */ interface AvailableMethodDetailsInterface extends JsonSerializable { - } diff --git a/src/State/RegisteredMethodDetailsInterface.php b/src/State/RegisteredMethodDetailsInterface.php index 1b91b997..3433c2a7 100644 --- a/src/State/RegisteredMethodDetailsInterface.php +++ b/src/State/RegisteredMethodDetailsInterface.php @@ -10,5 +10,4 @@ */ interface RegisteredMethodDetailsInterface extends JsonSerializable { - } diff --git a/tests/php/Extension/MemberExtensionTest.php b/tests/php/Extension/MemberExtensionTest.php index cbc6980a..b3ac7e1c 100644 --- a/tests/php/Extension/MemberExtensionTest.php +++ b/tests/php/Extension/MemberExtensionTest.php @@ -70,4 +70,27 @@ public function testSetDefaultRegisteredMethodThrowsExceptionWhenSettingSomeoneE $anotherMember = $this->objFromFixture(Member::class, 'squib'); $anotherMember->setDefaultRegisteredMethod($registeredMethod); } + + public function testGetDefaultRegisteredMethodName() + { + $member = $this->createMemberWithRegisteredMethods(); + $this->assertSame('Recovery codes', $member->getDefaultRegisteredMethodName()); + } + + public function testGetRegisteredMethodNames() + { + $member = $this->createMemberWithRegisteredMethods(); + $this->assertSame('Recovery codes, MemberExtensionTestMethod2', $member->getRegisteredMethodNames()); + } + + private function createMemberWithRegisteredMethods(): Member + { + $manager = RegisteredMethodManager::singleton(); + $member = $this->objFromFixture(Member::class, 'squib'); + $method = new Method(); + $method2 = new MemberExtensionTestMethod2(); + $manager->registerForMember($member, $method, ['foo' => 'bar']); + $manager->registerForMember($member, $method2, ['abc' => 'xyz']); + return $member; + } } diff --git a/tests/php/Extension/MemberExtensionTestMethod2.php b/tests/php/Extension/MemberExtensionTestMethod2.php new file mode 100644 index 00000000..4eed6d75 --- /dev/null +++ b/tests/php/Extension/MemberExtensionTestMethod2.php @@ -0,0 +1,22 @@ +