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(); } return $this->getService('User')->changePasswordByRequest($data->requestId, $data->password); } 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 postActionGenerateNewPassword($params, $data, $request) { if (empty($data->id)) throw new BadRequest(); if (!$this->getUser()->isAdmin()) throw new Forbidden(); $this->getRecordService()->generateNewPasswordForUser($data->id); return true; } public function beforeCreateLink() { if (!$this->getUser()->isAdmin()) throw new Forbidden(); } public function beforeRemoveLink($params, $data, $request) { if (!$this->getUser()->isAdmin()) throw new Forbidden(); } protected function fetchListParamsFromRequest(&$params, $request, $data) { parent::fetchListParamsFromRequest($params, $request, $data); $userType = $request->get('userType'); if ($userType) { $params['where'] = $params['where'] ?? []; $params['where'][] = [ 'type' => 'isOfType', 'attribute' => 'id', 'value' => $userType, ]; } } }