edit_user.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421
  1. <!-- Begin toolbar -->
  2. <div class="l-center edit">
  3. <div class="l-sort clearfix">
  4. <div class="l-unit-toolbar__buttonstrip">
  5. <a class="ui-button cancel" dir="ltr" id="btn-back" href="/list/user/"><i class="fas fa-arrow-left status-icon blue"></i><?=_('Back');?></a>
  6. <?php
  7. if (($_SESSION['userContext'] === 'admin') && (!isset($_SESSION['look'])) && ($_SESSION['user'] !== $v_username)) {
  8. $ssh_key_url = "/list/key/?user=".htmlentities($user_plain)."&token=".$_SESSION['token']."";
  9. $log_url = "/list/log/?user=".htmlentities($user_plain)."&token=".$_SESSION['token']."";
  10. $keys_url = "/list/access-key/?user=".htmlentities($user_plain)."&token=".$_SESSION['token']."";
  11. } else {
  12. $ssh_key_url = "/list/key/";
  13. $log_url = "/list/log/";
  14. $keys_url = "/list/access-key/";
  15. }
  16. ?>
  17. <a href="<?=$ssh_key_url; ?>" id="btn-create" class="ui-button cancel" dir="ltr" title="<?=_('Manage SSH keys');?>"><i class="fas fa-key status-icon orange"></i><?=_('Manage SSH keys');?></a>
  18. <?php if (($_SESSION['userContext'] == 'admin') || ($_SESSION['userContext'] !== 'admin') && ($_SESSION['POLICY_USER_VIEW_LOGS'] !== 'no')) {?>
  19. <a href="<?=$log_url; ?>" id="btn-create" class="ui-button cancel" dir="ltr" title="<?=_('Logs');?>"><i class="fas fa-history status-icon maroon"></i><?=_('Logs');?></a>
  20. <?php } ?>
  21. <?php
  22. $api_status = (!empty($_SESSION['API_SYSTEM']) && is_numeric($_SESSION['API_SYSTEM'])) ? $_SESSION['API_SYSTEM'] : 0;
  23. if (($user_plain == 'admin' && $api_status > 0) || ($user_plain != 'admin' && $api_status > 1)) { ?>
  24. <a href="<?=$keys_url; ?>" id="btn-create" class="ui-button cancel" dir="ltr" title="<?=_('Access Keys');?>"><i class="fas fa-key status-icon purple"></i><?=_('Access Keys');?></a>
  25. <?php } ?>
  26. </div>
  27. <div class="l-unit-toolbar__buttonstrip float-right">
  28. <?php if (($_SESSION['user'] == $v_username) || (isset($_SESSION['look']))) {?>
  29. <!-- Do not show delete button for currently logged in user-->
  30. <?} else {?>
  31. <a href="/login/?loginas=<?=htmlentities($v_username)?>&token=<?=$_SESSION['token']?>" id="btn-create" class="ui-button cancel" dir="ltr" title="<?=_('login as');?>"><i class="fas fa-sign-in-alt status-icon maroon"></i><?=_('login as');?></a>
  32. <a class="data-controls do_delete ui-button danger cancel">
  33. <i class="do_delete fas fa-times-circle status-icon red"></i>
  34. <?=_('Delete');?>
  35. <input type="hidden" name="delete_url" value="/delete/user/?user=<?=htmlentities($v_username)?>&token=<?=$_SESSION['token']?>" />
  36. <div class="confirmation-text-delete hidden" title="<?=_('Confirmation');?>">
  37. <p class="confirmation"><?=sprintf(_('DELETE_USER_CONFIRMATION'),htmlentities($v_username))?></p>
  38. </div>
  39. </a>
  40. <?php } ?>
  41. <a href="#" class="ui-button" data-action="submit" data-id="vstobjects"><i class="fas fa-save status-icon purple"></i> <?=_('Save');?></a>
  42. </div>
  43. </div>
  44. </div>
  45. <!-- End toolbar -->
  46. <div class="l-separator"></div>
  47. <div class="l-center animated fadeIn">
  48. <form id="vstobjects" method="post" name="v_edit_user" class="<?=$v_status?>">
  49. <input type="hidden" name="token" value="<?=$_SESSION['token']?>" />
  50. <input type="hidden" name="save" value="save" />
  51. <table class='data'>
  52. <tr class="data-add">
  53. <td class="data-dotted">
  54. <table class="data-col1">
  55. <tr>
  56. <td>
  57. </td>
  58. </tr>
  59. </table>
  60. </td>
  61. <td class="data-dotted">
  62. <table class="data-col2">
  63. <tr>
  64. <td class="step-top">
  65. <span class="page-title"><?=_('Editing User');?></span>
  66. </td>
  67. </tr>
  68. <tr>
  69. <td>
  70. <?php show_error_panel($_SESSION);?>
  71. </td>
  72. </tr>
  73. <tr>
  74. <td class="vst-text step-top">
  75. <?=_('Username');?>
  76. </td>
  77. </tr>
  78. <tr>
  79. <td>
  80. <input type="text" size="20" class="vst-input" name="v_user" value="<?=htmlentities(trim($v_username, "'"))?>" disabled>
  81. <input type="hidden" name="v_username" value="<?=htmlentities(trim($v_username, "'"))?>">
  82. </td>
  83. </tr>
  84. <tr>
  85. <td class="vst-text input-label">
  86. <?=_('Contact');?>
  87. </td>
  88. </tr>
  89. <tr>
  90. <td>
  91. <input type="text" size="20" class="vst-input" name="v_name" value="<?=htmlentities(trim($v_name, "'"))?>" <?php if (($_SESSION['userContext'] !=='admin' ) && ($_SESSION['POLICY_USER_EDIT_DETAILS'] !=='yes' )) { echo 'disabled' ; }?> >
  92. <?php if (($_SESSION['userContext'] !== 'admin') && ($_SESSION['POLICY_USER_EDIT_DETAILS'] !== 'yes')) {?>
  93. <input type="hidden" name="v_name" value="<?=htmlentities(trim($v_name, "'"))?>">
  94. <?php } ?>
  95. </td>
  96. </tr>
  97. <tr>
  98. <td class="vst-text input-label">
  99. <?=_('Email');?>
  100. </td>
  101. </tr>
  102. <tr>
  103. <td>
  104. <input type="text" size="20" class="vst-input" name="v_email" value="<?=htmlentities(trim($v_email, "'"))?>" <?php if (($_SESSION['userContext'] !=='admin' ) && ($_SESSION['POLICY_USER_EDIT_DETAILS'] !=='yes' )) { echo 'disabled' ; }?>>
  105. <?php if (($_SESSION['userContext'] !== 'admin') && ($_SESSION['POLICY_USER_EDIT_DETAILS'] !== 'yes')) {?>
  106. <input type="hidden" name="v_email" value="<?=htmlentities(trim($v_email, "'"))?>">
  107. <?php } ?>
  108. </td>
  109. </tr>
  110. <tr>
  111. <td class="vst-text input-label">
  112. <?=_('Password');?> <a href="javascript:randomString();" title="<?=_('generate');?>"><i class="fas fa-sync status-icon green icon-large"></i></a>
  113. </td>
  114. </tr>
  115. <tr>
  116. <td>
  117. <input type="text" size="20" class="vst-input password" name="v_password" value="<?=htmlentities(trim($v_password, "'"))?>"><br />
  118. <meter max="4" id="meter"></meter>
  119. </td>
  120. </tr>
  121. <tr>
  122. <td>
  123. <table id="password-details">
  124. <tr>
  125. <td class="vst-text">
  126. <?=_('Your password must have at least');?>:
  127. <ul>
  128. <li><?=_('8 characters long');?></li>
  129. <li><?=_('1 uppercase & 1 lowercase character');?></li>
  130. <li><?=_('1 number');?></li>
  131. </ul>
  132. </td>
  133. </tr>
  134. <?php if ($_SESSION['userContext'] === 'admin') {?>
  135. <tr>
  136. <td>
  137. <label><input type="checkbox" size="20" class="vst-checkbox" onclick="javascript:elementHideShow('password-options');elementHideShow('password-options-ip');" name="v_login_disabled" <?php if ($v_login_disabled === "yes") echo "checked=yes" ?>><?=_('Do not allow user to log in to Control Panel');?></label>
  138. </td>
  139. </tr>
  140. <?php } ?>
  141. <tr>
  142. <td id="password-options" style="<?php if ($v_login_disabled === 'yes') { echo 'display: none;'; } else { echo 'display: table-cell;'; }?>">
  143. <label><input type="checkbox" class="vst-checkbox password-option" name="v_twofa" <?php if(!empty($v_twofa)) echo "checked=yes" ?>><?=_('Enable 2FA');?></label>
  144. <?php if (!empty($v_twofa)) { ?>
  145. <p><?=_('2FA Reset Code:').' '.$v_twofa; ?></br></p>
  146. <p><?=_('Please scan the code below in your 2FA application:'); ?></p>
  147. <div><img class="qr-code" src="<?=htmlentities($v_qrcode); ?>"></div>
  148. <?php } ?>
  149. </td>
  150. </tr>
  151. <tr>
  152. <td id="password-options-ip" style="<?php if ($v_login_disabled === 'yes') { echo 'display: none;'; } else { echo 'display: table-cell;'; }?>">
  153. <label><input type="checkbox" size="20" class="vst-checkbox" onclick="javascript:elementHideShow('ip-allowlist')" name="v_login_use_iplist" <?php if ($v_login_use_iplist === "yes") echo "checked=yes" ?>><?=_('Use IP address allow list for login attempts');?></label>
  154. </td>
  155. </tr>
  156. <tr>
  157. <td>
  158. <table id="ip-allowlist" style="<?php if ($v_login_use_iplist === 'yes') { echo 'display: table-cell;'; } else { echo 'display: none;'; } ?>">
  159. <tr>
  160. <td>
  161. <input type="text" size="20" class="vst-input" placeholder="<?=_('Example: 127.0.0.1,192.168.1.100');?>" name="v_login_allowed_ips" value="<?=htmlentities(trim($v_login_allowed_ips, "'"))?>">
  162. </td>
  163. </tr>
  164. </table>
  165. </td>
  166. </tr>
  167. </table>
  168. </td>
  169. </tr>
  170. <tr>
  171. <td class="vst-text input-label">
  172. <?=_('Language');?>
  173. </td>
  174. </tr>
  175. <tr>
  176. <td>
  177. <select class="vst-list" name="v_language">
  178. <?php
  179. foreach ($languages as $key => $value) {
  180. echo "\n\t\t\t\t\t\t\t\t\t<option value=\"".$key."\"";
  181. $skey = "'".$key."'";
  182. if (( $key == $v_language ) || ( $skey == $v_language)){
  183. echo 'selected' ;
  184. }
  185. if (( $key == detect_user_language() ) && (empty($v_language))){
  186. echo 'selected' ;
  187. }
  188. echo ">".htmlentities($value)."</option>\n";
  189. }
  190. ?>
  191. </select>
  192. </td>
  193. </tr>
  194. <?php if ($v_username == 'admin') {?>
  195. <!-- Hide option to change 'admin' user's role-->
  196. <?php } else { ?>
  197. <?php if (($_SESSION['userContext'] === 'admin') && ($_SESSION['user'] != $v_username)) {?>
  198. <tr>
  199. <td class="vst-text input-label">
  200. <?=_('Role');?>
  201. </td>
  202. </tr>
  203. <tr>
  204. <td>
  205. <select class="vst-list" name="v_role">
  206. <option value="user"><?=_('User');?>
  207. <option value="admin" <?php if($v_role == "admin" ){ echo "selected"; } ?>><?=_('Administrator');?>
  208. </select>
  209. </td>
  210. </tr>
  211. <?php } ?>
  212. <?php } ?>
  213. <?php if ($_SESSION['POLICY_USER_CHANGE_THEME'] !== 'no') {?>
  214. <tr>
  215. <td class="vst-text input-label">
  216. <?=_('Theme') ?>
  217. </td>
  218. </tr>
  219. <tr>
  220. <td>
  221. <select class="vst-list" name="v_user_theme">
  222. <?php
  223. foreach ($themes as $key => $value) {
  224. echo "\t\t\t\t<option value=\"".$value."\"";
  225. if ((!empty($_SESSION['userTheme'])) && ( $value == $v_user_theme )) {
  226. echo ' selected' ;
  227. }
  228. if ((empty($v_user_theme) && (!empty($_SESSION['THEME']))) && ( $value == $_SESSION['THEME'] )) {
  229. echo ' selected' ;
  230. }
  231. echo ">".$value."</option>\n";
  232. }
  233. ?>
  234. </select>
  235. </td>
  236. </tr>
  237. <?php } ?>
  238. <tr>
  239. <td class="vst-text input-label">
  240. <?=_('Default list sort order');?>
  241. </td>
  242. </tr>
  243. <tr>
  244. <td>
  245. <select class="vst-list" name="v_sort_order">
  246. <option value='date' <?php if($v_sort_order === 'date') echo 'selected' ?>><?=_('Date'); ?></option>
  247. <option value='name' <?php if($v_sort_order === 'name') echo 'selected' ?>><?=_('Name'); ?></option>
  248. </select>
  249. </td>
  250. </tr>
  251. <?php if ($_SESSION['userContext'] === 'admin') {?>
  252. <tr>
  253. <td class="vst-text input-label">
  254. <?=_('Package');?>
  255. </td>
  256. </tr>
  257. <tr>
  258. <td>
  259. <select class="vst-list" name="v_package">
  260. <?php
  261. foreach ($packages as $key => $value) {
  262. echo "\n\t\t\t\t\t\t\t\t\t<option value=\"".htmlentities($key)."\"";
  263. $skey = "'".$key."'";
  264. if (( $key == $v_package ) || ( $skey == $v_package)){
  265. echo 'selected' ;
  266. }
  267. echo ">".htmlentities($key)."</option>\n";
  268. }
  269. ?>
  270. </select>
  271. </td>
  272. </tr>
  273. <tr>
  274. <td class="step-top vst-text" style="/*padding: 32px 0 20px 0;*/">
  275. <a href="javascript:elementHideShow('advanced-opts');" class="vst-advanced"><?=_('Advanced options');?></a>
  276. </td>
  277. </tr>
  278. <tr>
  279. <td class="step-top">
  280. <table id="advanced-opts" style="display: none;">
  281. <tr>
  282. <td class="vst-text input-label">
  283. <?=_('SSH Access');?>
  284. </td>
  285. </tr>
  286. <tr>
  287. <td>
  288. <select class="vst-list" name="v_shell">
  289. <?php
  290. foreach ($shells as $key => $value) {
  291. echo "\t\t\t\t<option value=\"".htmlentities($value)."\"";
  292. $svalue = "'".$value."'";
  293. if (( $value == $v_shell ) || ($svalue == $v_shell )){
  294. echo 'selected' ;
  295. }
  296. echo ">".htmlentities($value)."</option>\n";
  297. }
  298. ?>
  299. </select>
  300. </td>
  301. </tr>
  302. <tr>
  303. <td class="vst-text input-label">
  304. <?=_('PHP CLI Version');?>
  305. </td>
  306. </tr>
  307. <tr>
  308. <td>
  309. <select class="vst-list" name="v_phpcli">
  310. <?php
  311. foreach ($php_versions as $key => $value) {
  312. $php = explode('-',$value);
  313. echo "\t\t\t\t<option value=\"".$value."\"";
  314. $svalue = "'".$value."'";
  315. if ((!empty($v_phpcli)) && ( $value == $v_phpcli ) || ($svalue == $v_phpcli)){
  316. echo ' selected' ;
  317. }
  318. if ((empty($v_phpcli)) && ($value == DEFAULT_PHP_VERSION)){
  319. echo ' selected' ;
  320. }
  321. echo ">".htmlentities($value)."</option>\n";
  322. }
  323. ?>
  324. </select>
  325. </td>
  326. </tr>
  327. <?php if ((isset($_SESSION['DNS_SYSTEM'])) && (!empty($_SESSION['DNS_SYSTEM']))) {?>
  328. <tr>
  329. <td class="vst-text input-label">
  330. <?=_('Default Name Servers');?>
  331. </td>
  332. </tr>
  333. <tr>
  334. <td>
  335. <input type="text" size="20" class="vst-input" name="v_ns1" value="<?=htmlentities(trim($v_ns1, "'"))?>">
  336. <span class="remove-ns additional-control delete vst-advanced button danger"><?=_('delete');?></span>
  337. </td>
  338. </tr>
  339. <tr>
  340. <td>
  341. <input type="text" size="20" class="vst-input" name="v_ns2" value="<?=htmlentities(trim($v_ns2, "'"))?>">
  342. <span class="remove-ns additional-control delete vst-advanced button danger"><?=_('delete');?></span>
  343. </td>
  344. </tr>
  345. <?php
  346. if($v_ns3) {
  347. echo '<tr>
  348. <td>
  349. <input type="text" size="20" class="vst-input" name="v_ns3" value="'.htmlentities(trim($v_ns3, "'")).'">
  350. <span class="remove-ns additional-control delete vst-advanced button danger">'._('delete').'</span>
  351. </td>
  352. </tr>';
  353. }
  354. if($v_ns4) {
  355. echo '<tr>
  356. <td>
  357. <input type="text" size="20" class="vst-input" name="v_ns4" value="'.htmlentities(trim($v_ns4, "'")).'">
  358. <span class="remove-ns additional-control delete vst-advanced button danger">'._('delete').'</span>
  359. </td>
  360. </tr>';
  361. }
  362. if($v_ns5) {
  363. echo '<tr>
  364. <td>
  365. <input type="text" size="20" class="vst-input" name="v_ns5" value="'.htmlentities(trim($v_ns5, "'")).'">
  366. <span class="remove-ns additional-control delete vst-advanced button danger">'._('delete').'</span>
  367. </td>
  368. </tr>';
  369. }
  370. if($v_ns6) {
  371. echo '<tr>
  372. <td>
  373. <input type="text" size="20" class="vst-input" name="v_ns6" value="'.htmlentities(trim($v_ns6, "'")).'">
  374. <span class="remove-ns additional-control delete vst-advanced button danger">'._('delete').'</span>
  375. </td>
  376. </tr>';
  377. }
  378. if($v_ns7) {
  379. echo '<tr>
  380. <td>
  381. <input type="text" size="20" class="vst-input" name="v_ns7" value="'.htmlentities(trim($v_ns7, "'")).'">
  382. <span class="remove-ns additional-control delete vst-advanced button danger">'._('delete').'</span>
  383. </td>
  384. </tr>';
  385. }
  386. if($v_ns8) {
  387. echo '<tr>
  388. <td>
  389. <input type="text" size="20" class="vst-input" name="v_ns8" value="'.htmlentities(trim($v_ns8, "'")).'">
  390. <span class="remove-ns additional-control delete vst-advanced button danger">'._('delete').'</span>
  391. </td>
  392. </tr>';
  393. }
  394. ?>
  395. <tr class="add-ns" <?php if ($v_ns8) echo 'style="display:none;"' ; ?> >
  396. <td class="step-top-small">
  397. <span class="add-ns-button vst-advanced button"><?=_('Add one more Name Server');?></span>
  398. </td>
  399. </tr>
  400. <?php } ?>
  401. </table>
  402. </td>
  403. </tr>
  404. <?php } ?>
  405. <?php if ($_SESSION['userContext'] !== 'admin') {?>
  406. <tr>
  407. <td class="step-top">
  408. </td>
  409. </tr>
  410. <?php } ?>
  411. </table>
  412. <table class="data-col2"></table>
  413. </td>
  414. </tr>
  415. </table>
  416. </form>
  417. </div>