edit_user.html 17 KB

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