13 namespace Fossology\UI\Api\Controllers;
30 use Psr\Http\Message\ServerRequestInterface;
47 public function getUsers($request, $response, $args)
51 if (isset($args[
'pathParam'])) {
52 if ($apiVersion == ApiVersion::V2) {
53 $user = $this->restHelper->getUserDao()->getUserByName($args[
'pathParam']);
57 $id = intval($user[
'user_pk']);
59 $id = intval($args[
'pathParam']);
61 if (! $this->dbHelper->doesIdExist(
"users",
"user_pk", $id)) {
65 $users = $this->dbHelper->getUsers($id);
68 foreach ($users as $user) {
69 $allUsers[] = $user->getArray($apiVersion);
72 $allUsers = $allUsers[0];
74 return $response->withJson($allUsers, 200);
86 public function addUser($request, $response, $args)
91 if ($userDetails ===
null || !is_array($userDetails)) {
94 if (empty($userDetails[
'name'])) {
99 $symfonyRequest = new \Symfony\Component\HttpFoundation\Request();
100 $symfonyRequest->request->set(
'username', $userDetails[
'name']);
101 $symfonyRequest->request->set(
'pass1', $userDetails[$apiVersion == ApiVersion::V2 ?
'userPass' :
'user_pass']);
102 $symfonyRequest->request->set(
'pass2', $userDetails[$apiVersion == ApiVersion::V2 ?
'userPass' :
'user_pass']);
103 $symfonyRequest->request->set(
'description', $userDetails[
'description']);
104 $symfonyRequest->request->set(
'permission', $userHelper->getEquivalentValueForPermission($userDetails[
'accessLevel']));
105 $symfonyRequest->request->set(
'folder', $userDetails[
'rootFolderId']);
106 $symfonyRequest->request->set(
'enote', $userDetails[
'emailNotification'] ?
'y' :
'n');
107 $symfonyRequest->request->set(
'email', $userDetails[
'email']);
108 $symfonyRequest->request->set(
'public', $userDetails[
'defaultVisibility']);
109 $symfonyRequest->request->set(
'default_bucketpool_fk', $userDetails[
'defaultBucketpool'] ?? 2);
112 if (isset($userDetails[
'agents'])) {
113 if (is_string($userDetails[
'agents'])) {
114 $userDetails[
'agents'] = json_decode($userDetails[
'agents'],
true);
116 $agents[
'Check_agent_mimetype'] = isset($userDetails[
'agents'][
'mime']) && $userDetails[
'agents'][
'mime'] ? 1 : 0;
117 $agents[
'Check_agent_monk'] = isset($userDetails[
'agents'][
'monk']) && $userDetails[
'agents'][
'monk'] ? 1 : 0;
118 $agents[
'Check_agent_ojo'] = isset($userDetails[
'agents'][
'ojo']) && $userDetails[
'agents'][
'ojo'] ? 1 : 0;
119 $agents[
'Check_agent_bucket'] = isset($userDetails[
'agents'][
'bucket']) && $userDetails[
'agents'][
'bucket'] ? 1 : 0 ;
120 $agents[
'Check_agent_copyright'] = isset($userDetails[
'agents'][$apiVersion == ApiVersion::V2 ?
'copyrightEmailAuthor' :
'copyright_email_author']) && $userDetails[
'agents'][$apiVersion == ApiVersion::V2 ?
'copyrightEmailAuthor' :
'copyright_email_author'] ? 1 : 0;
121 $agents[
'Check_agent_ecc'] = isset($userDetails[
'agents'][
'ecc']) && $userDetails[
'agents'][
'ecc'] ? 1 : 0;
122 $agents[
'Check_agent_keyword'] = isset($userDetails[
'agents'][
'keyword']) && $userDetails[
'agents'][
'keyword'] ? 1 : 0;
123 $agents[
'Check_agent_nomos'] = isset($userDetails[
'agents'][
'nomos']) && $userDetails[
'agents'][
'nomos'] ? 1 : 0;
124 $agents[
'Check_agent_pkgagent'] = isset($userDetails[
'agents'][
'package']) && $userDetails[
'agents'][
'package'] ? 1 : 0;
125 $agents[
'Check_agent_reso'] = isset($userDetails[
'agents'][
'reso']) && $userDetails[
'agents'][
'reso'] ? 1 : 0;
126 $agents[
'Check_agent_shagent'] = isset($userDetails[
'agents'][
'heritage']) && $userDetails[
'agents'][
'heritage'] ? 1 : 0 ;
129 $symfonyRequest->request->set(
'user_agent_list',
userAgents($agents));
137 $ErrMsg = $userAddObj->add($symfonyRequest);
143 $returnVal =
new Info(201,
"User created successfully", InfoType::INFO);
144 return $response->withJson($returnVal->getArray(), $returnVal->getCode());
160 if ($apiVersion == ApiVersion::V2) {
161 $user = $this->restHelper->getUserDao()->getUserByName($args[
'pathParam']);
162 if ($user ===
null) {
165 $id = intval($user[
'user_pk']);
167 $id = intval($args[
'pathParam']);
169 if (!$this->dbHelper->doesIdExist(
"users",
"user_pk", $id)) {
173 $this->dbHelper->deleteUser($id);
174 $returnVal =
new Info(202,
"User will be deleted", InfoType::INFO);
175 return $response->withJson($returnVal->getArray(), $returnVal->getCode());
189 $user = $this->dbHelper->getUsers($this->restHelper->getUserId())[0]->getArray($apiVersion);
190 if ($apiVersion == ApiVersion::V2) {
191 return $response->withJson($user, 200);
193 $userDao = $this->restHelper->getUserDao();
194 $defaultGroup = $userDao->getUserAndDefaultGroupByUserName($user[
"name"])[
"group_name"];
195 $user[
'default_group'] = $defaultGroup;
196 return $response->withJson($user, 200);
211 if ($apiVersion == ApiVersion::V2) {
212 $user = $this->restHelper->getUserDao()->getUserByName($args[
'pathParam']);
213 if ($user ===
null) {
216 $id = intval($user[
'user_pk']);
218 $id = intval($args[
'pathParam']);
220 if ($id !== intval($this->restHelper->getUserId())) {
223 if (!$this->dbHelper->doesIdExist(
"users",
"user_pk", $id)) {
228 $returnVal = $userHelper->modifyUserDetails($reqBody, $apiVersion);
229 return $response->withJson($returnVal->getArray(), $returnVal->getCode());
241 public function createRestApiToken($request, $response, $args)
246 $symfonyRequest = new \Symfony\Component\HttpFoundation\Request();
249 $symfonyRequest->request->set(
'pat_name', $tokenRequest->getTokenName());
250 $symfonyRequest->request->set(
'pat_expiry', $tokenRequest->getTokenExpire());
251 $symfonyRequest->request->set(
'pat_scope', $tokenRequest->getTokenScope());
258 $userEditObj =
$restHelper->getPlugin(
'user_edit');
262 $token = $userEditObj->generateNewToken($symfonyRequest);
263 }
catch (DuplicateTokenKeyException $e) {
264 throw new HttpTooManyRequestException(
"Please try again later.", $e);
265 }
catch (DuplicateTokenNameException $e) {
266 throw new HttpConflictException($e->getMessage(), $e);
267 }
catch (\UnexpectedValueException $e) {
268 throw new HttpBadRequestException($e->getMessage(), $e);
271 $returnVal =
new Info(201,
"Token created successfully", InfoType::INFO);
272 $res = $returnVal->getArray();
273 $res[
'token'] = $token;
274 return $response->withJson($res, $returnVal->getCode());
289 $tokenType = $args[
'type'];
290 if ($tokenType !=
"active" && $tokenType !=
"expired") {
296 $userEditObj =
$restHelper->getPlugin(
'user_edit');
299 $tokens = $tokenType ==
"active" ? $userEditObj->getListOfActiveTokens() : $userEditObj->getListOfExpiredTokens();
300 $manageTokenObj =
$restHelper->getPlugin(
'manage-token');
302 $finalTokens = array();
303 foreach ($tokens as $token) {
304 list($tokenPk) = explode(
".", $token[
'id']);
305 $tokenVal = $manageTokenObj->revealToken($tokenPk);
306 $finalTokens[] = array_merge($token, [
'token' => $tokenVal[
'token']]);
309 $returnVal =
new Info(200,
"Success", InfoType::INFO);
310 $res = $returnVal->getArray();
311 $res[$tokenType . ($apiVersion == ApiVersion::V2 ?
'Tokens' :
'_tokens')] = $finalTokens;
312 return $response->withJson($res, $returnVal->getCode());
Exception when a token has duplicate key for same user.
Exception when a token has duplicate name for same user.
Base controller for REST calls.
getParsedBody(ServerRequestInterface $request)
Parse request body as JSON and return associative PHP array.
Controller for User model.
deleteUser($request, $response, $args)
addUser($request, $response, $args)
getUsers($request, $response, $args)
updateUser($request, $response, $args)
getCurrentUser($request, $response, $args)
getTokens($request, $response, $args)
Override Slim response for withJson function.
Provides various DAO helper functions for REST api.
Handle user related queries.
static getVersion(ServerRequestInterface $request)
Different type of infos provided by REST.
Info model to contain general error and return values.
static fromArray(array $input, int $version)
userAgents($agents=null)
Read the UI form and format the user selected agents into a comma separated list.