/** * updateUser * * @param User $requestUser requestUser * * @return Result */ public function updateUser(User $requestUser) { /* <LOW_LEVEL_PREP> */ // require id $id = $requestUser->getId(); if (empty($id)) { return new Result(null, Result::CODE_FAIL, 'User Id required for update.'); } // check if exists $existingUserResult = $this->readUser($requestUser); if (!$existingUserResult->isSuccess()) { // ERROR return $existingUserResult; } $existingUser = $existingUserResult->getUser(); $existingUser = new ReadOnlyUser($existingUser); $requestUser->merge($existingUser); $responseUser = new User(); $responseUser->populate($requestUser); $requestUser = new ReadOnlyUser($requestUser); $state = $responseUser->getState(); if (empty($state)) { $responseUser->setState($this->getDefaultUserState()); } /* </LOW_LEVEL_PREP> */ /* @event beforeUpdateUser */ $results = $this->getEventManager()->trigger('beforeUpdateUser', $this, ['requestUser' => $requestUser, 'responseUser' => $responseUser, 'existingUser' => $existingUser], function ($result) { return !$result->isSuccess(); }); if ($results->stopped()) { return $results->last(); } /* @event updateUser */ $results = $this->getEventManager()->trigger('updateUser', $this, ['requestUser' => $requestUser, 'responseUser' => $responseUser, 'existingUser' => $existingUser], function ($result) { return !$result->isSuccess(); }); if ($results->stopped()) { $result = $results->last(); $this->getEventManager()->trigger('updateUserFail', $this, ['result' => $result]); return $result; } $result = new Result($responseUser); /* @event updateUser */ $this->getEventManager()->trigger('updateUserSuccess', $this, ['result' => $result]); return $result; }
/** * testSetGet * * @covers \RcmUser\User\Entity\User * * @return void */ public function testSetGet() { $user = new User(); $value = 'id123'; $user->setId($value); $this->assertEquals($value, $user->getId(), 'Setter or getter failed.'); $value = 'usernamexxx'; $user->setUsername($value); $this->assertEquals($value, $user->getUsername(), 'Setter or getter failed.'); $value = ''; $user->setUsername($value); $this->assertNull($user->getUsername(), 'Setter or getter failed.'); $value = 'passwordxxx'; $user->setPassword($value); $this->assertEquals($value, $user->getPassword(), 'Setter or getter failed.'); $value = ''; $user->setPassword($value); $this->assertNull($user->getPassword(), 'Setter or getter failed.'); $value = 'statexxx'; $user->setState($value); $this->assertEquals($value, $user->getState(), 'Setter or getter failed.'); $value = ''; $user->setState($value); $this->assertNull($user->getState(), 'Setter or getter failed.'); $value = '*****@*****.**'; $user->setEmail($value); $this->assertEquals($value, $user->getEmail(), 'Setter or getter failed.'); $value = ''; $user->setEmail($value); $this->assertNull($user->getEmail(), 'Setter or getter failed.'); $value = 'namesxxx'; $user->setName($value); $this->assertEquals($value, $user->getName(), 'Setter or getter failed.'); $this->assertEquals($value, $user->get('name', null), 'Getter failed.'); $value = ''; $user->setName($value); $this->assertNull($user->getName(), 'Setter or getter failed.'); // cannot set or get iterator $hasSet = $user->set('iterator', 'something'); $this->assertFalse($hasSet, 'Failed to stop iterator property set.'); $this->assertNull($user->get('iterator', null), 'Getter failed to exclude.'); $value = null; $user->setProperties($value); $this->assertTrue(is_array($user->getProperties()), 'Setter or getter failed.'); $pvalue = ['Y' => 'propertyYYY']; $value = 'propertyXXX'; $user->setProperties($pvalue); $this->assertArrayHasKey('Y', $user->getProperties(), 'Setter or getter failed.'); $user->setProperty('X', $value); $this->assertEquals($value, $user->getProperty('X'), 'Setter or getter failed.'); $this->assertArrayHasKey('Y', $user->getProperties(), 'Setter or getter failed.'); $this->assertTrue($user->getProperty('nope', 'not_found') === 'not_found', 'Setter or getter failed.'); $this->assertEquals('propertyYYY', $user->get('Y', null), 'Getter failed.'); $badPropertyName = 'N*P#_^^^^'; $hasSet = $user->set($badPropertyName, 'something'); $this->assertFalse($hasSet, 'Failed to stop bad property set.'); $hasException = false; try { $user->setProperty($badPropertyName, 'something'); } catch (RcmUserException $e) { $hasException = true; $this->assertInstanceOf('\\RcmUser\\Exception\\RcmUserException', $e); } if (!$hasException) { $this->fail("Expected exception not thrown"); } }
/** * prepareUserUpdate * * @param User $requestUser requestUser * @param User $responseUser responseUser * @param User $existingUser existingUser * * @return Result */ public function prepareUserUpdate(User $requestUser, User $responseUser, User $existingUser) { // PASSWORD CHECKS $requestPassword = $requestUser->getPassword(); $existingPassword = $existingUser->getPassword(); //$hashedPassword = $existingPassword; // if password changed if ($existingPassword !== $requestPassword) { $hashedPassword = $this->getEncryptor()->create($requestPassword); $responseUser->setPassword($hashedPassword); } // STATE $requestState = $requestUser->getState(); $existingState = $existingUser->getState(); if ($requestState !== $existingState) { $responseUser->setState($requestState); } return new Result($responseUser); }
/** * Merges values of the $user arg into this user if the values are not set * * @param User $user user * * @return void */ public function merge(User $user) { if ($this->getId() === null) { $this->setId($user->getId()); } if ($this->getUsername() === null) { $this->setUsername($user->getUsername()); } if ($this->getPassword() === null) { $this->setPassword($user->getPassword()); } if ($this->getState() === null) { $this->setState($user->getState()); } if ($this->getEmail() === null) { $this->setEmail($user->getEmail()); } if ($this->getName() === null) { $this->setName($user->getName()); } $properties = $user->getProperties(); foreach ($properties as $key => $property) { $userProperty = $this->getProperty($key); if (empty($userProperty)) { $this->setProperty($key, $property); } } }