/** * 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; }
/** * 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; } }
/** * 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'); }
/** * 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; }
/** * 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); }
/** * 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.'); }