FOSSology  4.4.0
Open Source License Compliance by Open Source Software
UserHelper.php
1 <?php
2 
14 namespace Fossology\UI\Api\Helper;
15 
20 use Symfony\Component\HttpFoundation\Request;
21 
27 {
31  private $user_pk;
32 
38  public function __construct($user_pk=null)
39  {
40  $this->user_pk = $user_pk;
41  }
42 
43  public function modifyUserDetails($reqBody)
44  {
45  global $container;
46  $restHelper = $container->get('helper.restHelper');
47  $userEditObj = $restHelper->getPlugin('user_edit');
48  /* Is the session owner an admin? */
49  $sessionOwnerUser_pk = $restHelper->getUserId();
50  $SessionUserRec = $userEditObj->GetUserRec($sessionOwnerUser_pk);
51  $SessionIsAdmin = $userEditObj->IsSessionAdmin($SessionUserRec);
52 
53  $symReq = $this->createSymRequest($reqBody);
54  if (!$SessionIsAdmin) {
55  $returnVal = new Info(403, "The session owner is not an admin!", InfoType::INFO);
56  } else {
57  $userRec = $userEditObj->CreateUserRec($symReq);
58  $ErrMsgs = $userEditObj->UpdateUser($userRec, $SessionIsAdmin);
59 
60  if ($ErrMsgs == null) {
61  $returnVal = new Info(200, "User updated succesfully!", InfoType::INFO);
62  } else {
63  $returnVal = new Info(400, $ErrMsgs, InfoType::INFO);
64  }
65  }
66  return $returnVal;
67  }
68 
73  public function createSymRequest($userDetails)
74  {
75  global $container;
76  $restHelper = $container->get('helper.restHelper');
77 
82  $userDao = $restHelper->getUserDao();
83  $user = $userDao->getUserByPk($this->user_pk);
84 
85  $symfonyRequest = new Request();
86  $symfonyRequest->request->set('user_pk', $userDetails['id'] ?? $this->user_pk);
87  $symfonyRequest->request->set('user_name', $userDetails['name'] ?? $user['user_name']);
88  $symfonyRequest->request->set('root_folder_fk', $userDetails['rootFolderId'] ?? $user['root_folder_fk']);
89  $symfonyRequest->request->set('default_group_fk', $userDetails['defaultGroup'] ?? $user['group_fk']);
90  $symfonyRequest->request->set('public', $userDetails['defaultVisibility'] ?? $user['upload_visibility']);
91  $symfonyRequest->request->set('default_folder_fk', $userDetails['defaultFolderId'] ?? $user['default_folder_fk']);
92  $symfonyRequest->request->set('user_desc', $userDetails['description'] ?? $user['user_desc']);
93  $symfonyRequest->request->set('_pass1', $userDetails['user_pass'] ?? null);
94  $symfonyRequest->request->set('_pass2', $userDetails['user_pass'] ?? null);
95  $symfonyRequest->request->set('_blank_pass', $userDetails['_blank_pass'] ?? "");
96  $symfonyRequest->request->set('user_status', $userDetails['user_status'] ?? $user['user_status']);
97  $symfonyRequest->request->set('user_email', $userDetails['email'] ?? $user['user_email']);
98  $symfonyRequest->request->set('email_notify', isset($userDetails['emailNotification']) && $userDetails['emailNotification'] ? "y" : $user['email_notify']);
99  $symfonyRequest->request->set('default_bucketpool_fk', $userDetails['defaultBucketpool'] ?? $user['default_bucketpool_fk']);
100 
101  if (isset($userDetails['accessLevel'])) {
102  $user_perm = $this->getEquivalentValueForPermission($userDetails['accessLevel']);
103  $symfonyRequest->request->set('user_perm', $user_perm);
104  } else {
105  $symfonyRequest->request->set('user_perm', $user['user_perm']);
106  }
107 
108  $agentsExists = array();
109  // setting previous values from db
110  $agentsTempVal = explode(',', $user['user_agent_list']);
111  foreach ($agentsTempVal as $agent) {
112  $agentsExists['Check_' . $agent] = 1;
113  }
114  $newAgents = array();
115  if (isset($userDetails['agents'])) {
116  if (is_string($userDetails['agents'])) {
117  $userDetails['agents'] = json_decode($userDetails['agents'], true);
118  }
119  if (isset($userDetails['agents']['mime'])) {
120  $newAgents['Check_agent_mimetype'] = $userDetails['agents']['mime'] ? 1 : 0;
121  }
122  if (isset($userDetails['agents']['monk'])) {
123  $newAgents['Check_agent_monk'] = $userDetails['agents']['monk'] ? 1 : 0;
124  }
125  if (isset($userDetails['agents']['ojo'])) {
126  $newAgents['Check_agent_ojo'] = $userDetails['agents']['ojo'] ? 1 : 0;
127  }
128  if (isset($userDetails['agents']['copyright_email_author'])) {
129  $newAgents['Check_agent_copyright'] = $userDetails['agents']['copyright_email_author'] ? 1 : 0;
130  }
131  if (isset($userDetails['agents']['ecc'])) {
132  $newAgents['Check_agent_ecc'] = $userDetails['agents']['ecc'] ? 1 : 0;
133  }
134  if (isset($userDetails['agents']['keyword'])) {
135  $newAgents['Check_agent_keyword'] = $userDetails['agents']['keyword'] ? 1 : 0;
136  }
137  if (isset($userDetails['agents']['nomos'])) {
138  $newAgents['Check_agent_nomos'] = $userDetails['agents']['nomos'] ? 1 : 0;
139  }
140  if (isset($userDetails['agents']['package'])) {
141  $newAgents['Check_agent_pkgagent'] = $userDetails['agents']['package'] ? 1 : 0;
142  }
143  if (isset($userDetails['agents']['reso'])) {
144  $newAgents['Check_agent_reso'] = $userDetails['agents']['reso'] ? 1 : 0;
145  }
146  if (isset($userDetails['agents']['heritage'])) {
147  $newAgents['Check_agent_shagent'] = $userDetails['agents']['heritage'] ? 1 : 0;
148  }
149  // Make sure all agents are in the list
150  $agentList = listAgents();
151  foreach (array_keys($agentList) as $agentName) {
152  if (!array_key_exists("Check_$agentName", $newAgents)) {
153  $newAgents["Check_$agentName"] = 0;
154  }
155  }
156  }
157  $agents = array_replace($agentsExists, $newAgents);
158 
159  $symfonyRequest->request->set('user_agent_list', userAgents($agents));
160 
161  return $symfonyRequest;
162  }
163 
168  public function getEquivalentValueForPermission($perm)
169  {
170  switch ($perm) {
171  case 'read_only':
172  return Auth::PERM_READ;
173  case 'read_write':
174  return Auth::PERM_WRITE;
175  case 'clearing_admin':
176  return Auth::PERM_CADMIN;
177  case 'admin':
178  return Auth::PERM_ADMIN;
179  default:
180  return Auth::PERM_NONE;
181  }
182  }
183 }
Contains the constants and helpers for authentication of user.
Definition: Auth.php:24
Handle user related queries.
Definition: UserHelper.php:27
Different type of infos provided by REST.
Definition: InfoType.php:16
Info model to contain general error and return values.
Definition: Info.php:19
userAgents($agents=null)
Read the UI form and format the user selected agents into a comma separated list.
listAgents()
Search in available plugins and return all agents.
REST api helper classes.