From 81d60dccd8170d2f0649c24d7fce45b9328a25ee Mon Sep 17 00:00:00 2001 From: Ishan Jayamanne Date: Mon, 4 Apr 2022 12:30:21 +1200 Subject: [PATCH 1/2] Create an extend method to update/use attributes of the user --- src/Control/SAMLController.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Control/SAMLController.php b/src/Control/SAMLController.php index e53dc52..cc280ee 100644 --- a/src/Control/SAMLController.php +++ b/src/Control/SAMLController.php @@ -162,6 +162,8 @@ public function acs() $attributes['GUID'][0] = $guid; } + $this->extend('updateAttributes', $attributes); + $fieldToClaimMap = array_flip(Member::config()->claims_field_mappings); // Write a rudimentary member with basic fields on every login, so that we at least have something From fc648b2d2c80bfefed5a44be004eb2b0889da910 Mon Sep 17 00:00:00 2001 From: Ishan Jayamanne Date: Mon, 4 Apr 2022 21:40:46 +1200 Subject: [PATCH 2/2] Generate valid Guid to match the validation. --- src/Control/SAMLController.php | 3 +-- src/Helpers/SAMLHelper.php | 2 +- tests/php/Helpers/SAMLHelperTest.php | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Control/SAMLController.php b/src/Control/SAMLController.php index cc280ee..0ccbcc9 100644 --- a/src/Control/SAMLController.php +++ b/src/Control/SAMLController.php @@ -153,8 +153,6 @@ public function acs() return $this->getRedirect(); } - $this->extend('updateGuid', $guid); - $attributes = $auth->getAttributes(); // Allows setups that map GUID (email format) to email {@see SAMLConfiguration::$expose_guid_as_attribute}. @@ -163,6 +161,7 @@ public function acs() } $this->extend('updateAttributes', $attributes); + $this->extend('updateGuid', $guid); $fieldToClaimMap = array_flip(Member::config()->claims_field_mappings); diff --git a/src/Helpers/SAMLHelper.php b/src/Helpers/SAMLHelper.php index 6993825..0249e7b 100644 --- a/src/Helpers/SAMLHelper.php +++ b/src/Helpers/SAMLHelper.php @@ -124,7 +124,7 @@ public function binToStrGuid($object_guid) $hex_guid_to_guid_str .= substr($hex_guid, 16 - 2 * $k, 2); } $hex_guid_to_guid_str .= '-' . substr($hex_guid, 16, 4); - $hex_guid_to_guid_str .= '-' . substr($hex_guid, 20); + $hex_guid_to_guid_str .= '-' . substr($hex_guid, 20, 12); return strtoupper($hex_guid_to_guid_str); } diff --git a/tests/php/Helpers/SAMLHelperTest.php b/tests/php/Helpers/SAMLHelperTest.php index fd793a3..14df03c 100644 --- a/tests/php/Helpers/SAMLHelperTest.php +++ b/tests/php/Helpers/SAMLHelperTest.php @@ -36,6 +36,6 @@ public function guidProvider() public function testBinToStrGuid() { $result = SAMLHelper::singleton()->binToStrGuid('thequ!ckbrownf0xjumpsov3rthel4zyd06'); - $this->assertSame('71656874-2175-6B63-6272-6F776E6630786A756D70736F7633727468656C347A79643036', $result); + $this->assertSame('71656874-2175-6B63-6272-6F776E663078', $result); } }