示例#1
0
 /**
  * deleteUser
  *
  * @param User $requestUser requestUser
  *
  * @return mixed|Result
  */
 public function deleteUser(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;
     }
     $responseUser = new User();
     $responseUser->populate($existingUserResult->getUser());
     $requestUser = new ReadOnlyUser($requestUser);
     /* </LOW_LEVEL_PREP> */
     /* @event beforeDeleteUser */
     $results = $this->getEventManager()->trigger('beforeDeleteUser', $this, ['requestUser' => $requestUser, 'responseUser' => $responseUser], function ($result) {
         return !$result->isSuccess();
     });
     if ($results->stopped()) {
         return $results->last();
     }
     /* @event deleteUser */
     $results = $this->getEventManager()->trigger('deleteUser', $this, ['requestUser' => $requestUser, 'responseUser' => $responseUser], function ($result) {
         return !$result->isSuccess();
     });
     if ($results->stopped()) {
         $result = $results->last();
         $this->getEventManager()->trigger('deleteUserFail', $this, ['result' => $result]);
         return $result;
     }
     $result = new Result($responseUser);
     /* @event deleteUserSuccess */
     $this->getEventManager()->trigger('deleteUserSuccess', $this, ['result' => $result]);
     return $result;
 }
示例#2
0
 /**
  * validateUser
  *
  * @param User                 $requestUser requestUser
  * @param InputFilterInterface $inputFilter inputFilter
  *
  * @return Result
  */
 public function validateUser(User $requestUser, InputFilterInterface $inputFilter)
 {
     $validUser = new User();
     $validUser->populate($requestUser);
     $inputFilter->setData($validUser);
     if ($inputFilter->isValid()) {
         $validUser->populate($inputFilter->getValues());
         return new Result($validUser);
     } else {
         $result = new Result($validUser, Result::CODE_FAIL, 'User input not valid');
         foreach ($inputFilter->getInvalidInput() as $error) {
             $msg = $error->getName() . ': ';
             $errs = $error->getMessages();
             foreach ($errs as $key => $val) {
                 $result->setMessage($msg .= "{$val} ({$key})");
             }
         }
         return $result;
     }
 }
示例#3
0
 /**
  * populate
  *
  * @param User|array $data    data as User or array
  * @param array      $exclude list of object properties to ignore (not populate)
  *
  * @return void
  * @throws \RcmUser\Exception\RcmUserException|RcmUserReadOnlyException
  */
 public function populate($data, $exclude = [])
 {
     if (!$this->locked) {
         return parent::populate($data);
     }
     throw new RcmUserReadOnlyException('Object is READ ONLY');
 }
示例#4
0
 /**
  * buildUser
  *
  * @param array $data data
  *
  * @return void
  */
 protected function buildUser($data)
 {
     $user = new User();
     $user->populate($data, ['properties']);
     $properties = [];
     if (isset($data['properties'])) {
         $properties = $data['properties'];
     }
     if (isset($properties[UserRoleProperty::PROPERTY_KEY])) {
         $roles = $properties[UserRoleProperty::PROPERTY_KEY];
         $userRoleProperty = new UserRoleProperty();
         $userRoleProperty->populate($roles);
         $user->setProperty(UserRoleProperty::PROPERTY_KEY, $userRoleProperty);
     }
     return $user;
 }
示例#5
0
 /**
  * prepareUserUpdate
  *
  * @param User $requestUser  requestUser
  * @param User $responseUser responseUser
  * @param User $existingUser existingUser
  *
  * @return Result
  */
 public function prepareUserUpdate(User $requestUser, User $responseUser, User $existingUser)
 {
     $responseUser->populate($requestUser);
     return new Result($responseUser);
 }
示例#6
0
 /**
  * read
  *
  * @param User $requestUser  requestUser
  * @param User $responseUser responseUser
  *
  * @return mixed|Result
  */
 public function read(User $requestUser, User $responseUser)
 {
     $id = $requestUser->getId();
     if (!empty($id)) {
         $result = $this->fetchById($id);
         if ($result->isSuccess()) {
             // we want to populate everything but properties.
             $responseUser->populate($result->getUser(), ['properties']);
             $result->setUser($responseUser);
             return $result;
         }
     }
     $username = $requestUser->getUsername();
     if (!empty($username)) {
         $result = $this->fetchByUsername($username);
         if ($result->isSuccess()) {
             // we want to populate everything but properties.
             $responseUser->populate($result->getUser(), ['properties']);
             $result->setUser($responseUser);
         }
         return $result;
     }
     return new Result(null, Result::CODE_FAIL, 'User can not be read.');
 }