get('id'); if (empty($userId)) { throw new Error(); } if (!$this->getUser()->isAdmin() && $this->getUser()->id != $userId) { throw new Forbidden(); } $user = $this->getEntityManager()->getEntity('User', $userId); if (empty($user)) { throw new NotFound(); } return $this->getAclManager()->getMap($user); } public function postActionChangeOwnPassword($params, $data, $request) { if (!property_exists($data, 'password') || !property_exists($data, 'currentPassword')) { throw new BadRequest(); } return $this->getService('User')->changePassword($this->getUser()->id, $data->password, true, $data->currentPassword); } public function postActionChangePasswordByRequest($params, $data, $request) { if (empty($data->requestId) || empty($data->password)) { throw new BadRequest(); } if ($this->getConfig()->get('passwordRecoveryDisabled')) { throw new Forbidden("Password recovery disabled"); } $request = $this->getEntityManager()->getRepository('PasswordChangeRequest')->where([ 'requestId' => $data->requestId ])->findOne(); if (!$request) { throw new Forbidden(); } $userId = $request->get('userId'); if (!$userId) { throw new Error(); } $this->getEntityManager()->removeEntity($request); if ($this->getService('User')->changePassword($userId, $data->password)) { return [ 'url' => $request->get('url') ]; } } public function postActionPasswordChangeRequest($params, $data, $request) { if (empty($data->userName) || empty($data->emailAddress)) { throw new BadRequest(); } $userName = $data->userName; $emailAddress = $data->emailAddress; $url = null; if (!empty($data->url)) { $url = $data->url; } return $this->getService('User')->passwordChangeRequest($userName, $emailAddress, $url); } public function postActionGenerateNewApiKey($params, $data, $request) { if (empty($data->id)) throw new BadRequest(); if (!$this->getUser()->isAdmin()) throw new Forbidden(); return $this->getRecordService()->generateNewApiKeyForEntity($data->id)->getValueMap(); } public function beforeCreateLink() { if (!$this->getUser()->isAdmin()) throw new Forbidden(); } public function beforeRemoveLink($params, $data, $request) { if (!$this->getUser()->isAdmin()) throw new Forbidden(); } }