diff options
author | Joas Schilling <coding@schilljs.com> | 2023-09-25 15:33:40 +0200 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2023-09-25 15:54:21 +0200 |
commit | 0956b493b6394a6ea3c748fa5dd0910bc697ba8a (patch) | |
tree | be06005539d5f7d38fb36352578fd841506ee304 /apps/provisioning_api | |
parent | 5092278b0f4bf1905fe08d51ad329682b6e8f410 (diff) | |
download | nextcloud-server-0956b493b6394a6ea3c748fa5dd0910bc697ba8a.tar.gz nextcloud-server-0956b493b6394a6ea3c748fa5dd0910bc697ba8a.zip |
fix(phonenumber): Use the newly introduced API to limit 3rdparty lib usage
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'apps/provisioning_api')
-rw-r--r-- | apps/provisioning_api/lib/Controller/UsersController.php | 33 | ||||
-rw-r--r-- | apps/provisioning_api/tests/Controller/UsersControllerTest.php | 19 |
2 files changed, 25 insertions, 27 deletions
diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php index 07f651c74fa..c3e9d502675 100644 --- a/apps/provisioning_api/lib/Controller/UsersController.php +++ b/apps/provisioning_api/lib/Controller/UsersController.php @@ -45,9 +45,6 @@ declare(strict_types=1); namespace OCA\Provisioning_API\Controller; use InvalidArgumentException; -use libphonenumber\NumberParseException; -use libphonenumber\PhoneNumberFormat; -use libphonenumber\PhoneNumberUtil; use OC\Authentication\Token\RemoteWipe; use OC\KnownUser\KnownUserService; use OC\User\Backend; @@ -66,6 +63,7 @@ use OCP\HintException; use OCP\IConfig; use OCP\IGroup; use OCP\IGroupManager; +use OCP\IPhoneNumberUtil; use OCP\IRequest; use OCP\IURLGenerator; use OCP\IUser; @@ -113,7 +111,8 @@ class UsersController extends AUserData { ISecureRandom $secureRandom, RemoteWipe $remoteWipe, KnownUserService $knownUserService, - IEventDispatcher $eventDispatcher + IEventDispatcher $eventDispatcher, + private IPhoneNumberUtil $phoneNumberUtil, ) { parent::__construct( $appName, @@ -243,9 +242,7 @@ class UsersController extends AUserData { * 400: Invalid location */ public function searchByPhoneNumbers(string $location, array $search): DataResponse { - $phoneUtil = PhoneNumberUtil::getInstance(); - - if ($phoneUtil->getCountryCodeForRegion($location) === 0) { + if ($this->phoneNumberUtil->getCountryCodeForRegion($location) === null) { // Not a valid region code return new DataResponse([], Http::STATUS_BAD_REQUEST); } @@ -258,26 +255,18 @@ class UsersController extends AUserData { $normalizedNumberToKey = []; foreach ($search as $key => $phoneNumbers) { foreach ($phoneNumbers as $phone) { - try { - $phoneNumber = $phoneUtil->parse($phone, $location); - if ($phoneUtil->isValidNumber($phoneNumber)) { - $normalizedNumber = $phoneUtil->format($phoneNumber, PhoneNumberFormat::E164); - $normalizedNumberToKey[$normalizedNumber] = (string) $key; - } - } catch (NumberParseException $e) { + $normalizedNumber = $this->phoneNumberUtil->convertToStandardFormat($phone, $location); + if ($normalizedNumber !== null) { + $normalizedNumberToKey[$normalizedNumber] = (string) $key; } - if ($defaultPhoneRegion !== '' && $defaultPhoneRegion !== $location && strpos($phone, '0') === 0) { + if ($defaultPhoneRegion !== '' && $defaultPhoneRegion !== $location && str_starts_with($phone, '0')) { // If the number has a leading zero (no country code), // we also check the default phone region of the instance, // when it's different to the user's given region. - try { - $phoneNumber = $phoneUtil->parse($phone, $defaultPhoneRegion); - if ($phoneUtil->isValidNumber($phoneNumber)) { - $normalizedNumber = $phoneUtil->format($phoneNumber, PhoneNumberFormat::E164); - $normalizedNumberToKey[$normalizedNumber] = (string) $key; - } - } catch (NumberParseException $e) { + $normalizedNumber = $this->phoneNumberUtil->convertToStandardFormat($phone, $defaultPhoneRegion); + if ($normalizedNumber !== null) { + $normalizedNumberToKey[$normalizedNumber] = (string) $key; } } } diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php index 56a47f23a5c..a48461c0a27 100644 --- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php +++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php @@ -46,6 +46,7 @@ use Exception; use OC\Authentication\Token\RemoteWipe; use OC\Group\Manager; use OC\KnownUser\KnownUserService; +use OC\PhoneNumberUtil; use OC\SubAdmin; use OCA\Provisioning_API\Controller\UsersController; use OCA\Settings\Mailer\NewUserMailHelper; @@ -59,6 +60,7 @@ use OCP\EventDispatcher\IEventDispatcher; use OCP\IConfig; use OCP\IGroup; use OCP\IL10N; +use OCP\IPhoneNumberUtil; use OCP\IRequest; use OCP\IURLGenerator; use OCP\IUser; @@ -103,8 +105,10 @@ class UsersControllerTest extends TestCase { private $remoteWipe; /** @var KnownUserService|MockObject */ private $knownUserService; - /** @var IEventDispatcher */ + /** @var IEventDispatcher|MockObject */ private $eventDispatcher; + /** @var IPhoneNumberUtil */ + private $phoneNumberUtil; protected function setUp(): void { parent::setUp(); @@ -123,6 +127,7 @@ class UsersControllerTest extends TestCase { $this->remoteWipe = $this->createMock(RemoteWipe::class); $this->knownUserService = $this->createMock(KnownUserService::class); $this->eventDispatcher = $this->createMock(IEventDispatcher::class); + $this->phoneNumberUtil = new PhoneNumberUtil(); $this->api = $this->getMockBuilder(UsersController::class) ->setConstructorArgs([ @@ -141,8 +146,9 @@ class UsersControllerTest extends TestCase { $this->remoteWipe, $this->knownUserService, $this->eventDispatcher, + $this->phoneNumberUtil, ]) - ->setMethods(['fillStorageInfo']) + ->onlyMethods(['fillStorageInfo']) ->getMock(); } @@ -411,8 +417,9 @@ class UsersControllerTest extends TestCase { $this->remoteWipe, $this->knownUserService, $this->eventDispatcher, + $this->phoneNumberUtil, ]) - ->setMethods(['editUser']) + ->onlyMethods(['editUser']) ->getMock(); $this->userManager @@ -3693,8 +3700,9 @@ class UsersControllerTest extends TestCase { $this->remoteWipe, $this->knownUserService, $this->eventDispatcher, + $this->phoneNumberUtil, ]) - ->setMethods(['getUserData']) + ->onlyMethods(['getUserData']) ->getMock(); $api->expects($this->once())->method('getUserData')->with('UID', true) @@ -3779,8 +3787,9 @@ class UsersControllerTest extends TestCase { $this->remoteWipe, $this->knownUserService, $this->eventDispatcher, + $this->phoneNumberUtil, ]) - ->setMethods(['getUserData']) + ->onlyMethods(['getUserData']) ->getMock(); $expected = [ |