4 "action" => array(
"filter" => FILTER_SANITIZE_STRING),
5 "tdir" => array(
"filter" => FILTER_SANITIZE_STRING),
6 "user" => array(
"filter" => FILTER_SANITIZE_STRING),
7 "pwd1" => array(
"filter" => FILTER_SANITIZE_STRING),
8 "pwd2" => array(
"filter" => FILTER_SANITIZE_STRING)
10 HCU_ImportVars($admVars,
"USRMAINT", $admOk);
12 $action = HCU_array_key_value(
"action", $admVars[
'USRMAINT']);
13 $action = $action !==
false ? $action :
"list";
15 $tdirValue = HCU_array_key_value(
"tdir", $admVars[
'USRMAINT']);
16 $tdir = $tdirValue !==
false ? $tdirValue :
"";
18 $userValue = HCU_array_key_value(
"user", $admVars[
'USRMAINT']);
19 $user = $userValue !==
false ? $userValue :
"";
21 $pwd1Value = HCU_array_key_value(
"pwd1", $admVars[
'USRMAINT']);
22 $pwd1 = $pwd1Value !==
false ? $pwd1Value :
"";
24 $pwd2Value = HCU_array_key_value(
"pwd2", $admVars[
'USRMAINT']);
25 $pwd2= $pwd2Value !==
false ? $pwd2Value :
"";
31 $sel_file =
"employees";
37 $sel_file =
"vendors";
43 $sel_file =
"supervisory";
49 $sel_file =
"disaster";
57 $pwd_file=
"$home_path/admin/$sel_file";
60 header(
"Expires: Sat 20 May 1995 03:32:38 GMT");
61 header(
"Pragma: no-cache");
62 header(
"Cache-Control: no-cache, must-revalidate");
71 if (trim($user) ==
'') {
72 $msg_err .=
"The user ID was not entered. Please enter a user id." . chr(10) . chr(13);
75 if (trim($pwd1) != trim($pwd2)) {
76 $msg_err .=
"The passwords do not match. Please retype the passwords." . chr(10) . chr(13);
80 if (strlen($msg_err) > 0) {
85 if (!file_exists($pwd_file))
90 $sys_call = escapeshellcmd(
"htpasswd -{$c_f}b $pwd_file $user $pwd1");
91 exec ($sys_call, $err_array, $ret_val);
95 $ht_file=
"$home_path/public_html/$sel_file/.htaccess";
96 if (!file_exists($ht_file)) {
98 $hp = fopen($ht_file,
"w");
100 fwrite ($hp,
"AuthName \"" . strtoupper($chome) .
" " . ucfirst($sel_file) .
"\"\n");
101 fwrite ($hp,
"AuthType Basic\n");
102 fwrite ($hp,
"require valid-user\n");
103 fwrite ($hp,
"AuthUserFile $pwd_file\n");
109 $msg_suc =
"User '$user' updated successfully!";
125 if (file_exists($pwd_file)) {
127 $fp = fopen($pwd_file,
"r");
130 while (!feof ($fp)) {
131 $buffer = fgets($fp, 255);
132 if (strlen($buffer) == 0) {
135 list($del_user, $del_pass) = explode (
":", $buffer, 2);
136 if (trim($del_user) !=
'') {
137 $usr_ary[$del_user] = $del_pass;
145 $fp = fopen($pwd_file,
"w+");
148 foreach ($usr_ary as $key => $value) {
149 if (trim($key) != trim($user))
150 fwrite ($fp, $key .
":" . $value);
160 if (count($usr_ary) == 0) {
164 if ($del_failed ==
true) {
165 $msg_err =
"Unable to delete user '$user'. Please try again.";
168 $msg_suc =
"User '$user' deleted successfully";
178 $directoryCrumbs =
"";
179 $directoryCrumbs .=
"<a href=\"main.prg?ft=25\">Active Directories</a> / ";
180 $directoryCrumbs .=
"<a href=\"main.prg?ft=25&ndir=$tdir&csub=\">$tdir</a> / ";
181 $directoryCrumbs .=
"<span>" . ucfirst($tdir) .
" Password Maintenance</span>";
185 if (file_exists($pwd_file)) {
186 $file = fopen($pwd_file,
"r");
190 if ($file !=
false) {
193 while (!feof($file)) {
194 $buffer = fgets($file, 255);
195 if (strlen($buffer) == 0) {
198 list($read_user, $pass) = explode (
":", $buffer, 2);
200 if (trim($read_user) !=
'') {
201 $userUrl = urlencode($read_user);
203 "name" => $read_user,
204 "edit" =>
"$self&action=edit&user=$userUrl&tdir=$tdir",
205 "delete" =>
"$self&action=delete&user=$userUrl&tdir=$tdir" 213 <div
class=
"container-fluid">
214 <h2>Private Directory Users</h2>
216 <a href=
"<?php echo $self ?>&action=edit&tdir=<?php echo $tdir ?>" class=
"k-button k-primary"><span
class=
"fa fa-plus"> </span>Add
User</a>
218 <div
id=
"gridUsers"></div>
221 <script type=
"text/x-kendo-tmpl" id=
"rowTemplateUsers">
222 <tr data-uid=
"#: uid #">
224 <span
class=
"fa fa-user"></span> 
225 <a href=
"#: data.edit #">#: data.name #</a>
227 <td
class=
"text-right">
228 <a href=
"\\#" onclick=
"check_delete('#: data.name #')">Delete </a>
233 <script type=
"text/javascript">
234 var windowStack = [];
235 var gridUsers =
null;
236 var gridData = <?php echo HCU_JsonEncode($userList); ?>;
237 var gridBreadCrumbs = <?php echo HCU_JsonEncode($directoryCrumbs); ?>;
239 var msg_err =
"<?php echo $msg_err; ?>";
240 var msg_suc =
"<?php echo $msg_suc; ?>";
242 $(document).ready(
function(e) {
243 gridUsers = $(
"#gridUsers").kendoGrid({
248 template:
"No users found." 252 headerTemplate: gridBreadCrumbs
256 rowTemplate: kendo.template($(
"#rowTemplateUsers").html())
257 }).data(
"kendoGrid");
260 if (msg_err.length > 0) {
261 $.homecuValidator.homecuResetMessage =
true;
262 $.homecuValidator.displayMessage(msg_err, $.homecuValidator.settings.statusError);
263 }
else if (msg_suc.length > 0) {
264 $.homecuValidator.homecuResetMessage =
true;
265 $.homecuValidator.displayMessage(msg_suc, $.homecuValidator.settings.statusSuccess);
269 $(document).on(
"click",
".k-overlay",
function() {
270 if (windowStack.length > 0) {
271 var openWindow = windowStack[windowStack.length - 1];
276 function check_delete(pUser) {
277 var dialogConfirmDelete = $(
"<div></div>").kendoDialog({
278 title:
"Delete User",
285 windowStack.push(
this);
294 text:
"Yes", primary:
true,
295 action:
function(e) {
296 var url =
"<?php echo $self; ?>";
297 url +=
"&action=delete";
298 url +=
"&tdir=" +
"<?php echo $tdir; ?>";
299 url +=
"&user=" + pUser;
301 document.location = url;
305 content:
"<div class=\"col-xs-12\"><p><strong>You are about to delete the user '" + pUser +
"'.</strong></p><p>Do you wish to continue?</p></div>" 306 }).data(
"kendoDialog");
308 dialogConfirmDelete.open().center();
315 <div
class=
"container-fluid">
316 <h2>Private Directory Users</h2>
317 <div
class=
"well well-sm">
318 <form
id=
"umForm" method=
"post">
319 <input type=
"hidden" name=
"tdir" value=
"<?php echo $tdir; ?>">
320 <input type=
"hidden" name=
"action" value=
"save">
322 <div
class=
"col-xs-12 col-sm-3">
323 <label>
User ID:</label>
326 <div
class=
"col-xs-12 col-sm-4">
327 <?php
if ($user !==
"") { ?>
328 <label><?php echo $user ?></label>
329 <input type=
"hidden" name=
"user" id=
"user" value=
"<?php echo $user ?>">
331 <input type=
"text" name=
"user" id=
"user" class=
"k-textbox hcu-all-100" maxlength=
"15" 333 data-required-msg=
"User ID is required">
339 <div
class=
"col-xs-12 col-sm-3">
340 <label>Password:</label>
342 <div
class=
"col-xs-12 col-sm-4">
343 <input type=
"password" name=
"pwd1" id=
"pwd1" class=
"k-textbox hcu-all-100 password_match" size=
"10" maxlength=
"8" 345 data-required-msg=
"Password is required">
350 <div
class=
"col-xs-12 col-sm-3">
351 <label>Confirm Password:</label>
353 <div
class=
"col-xs-12 col-sm-4">
354 <input type=
"password" name=
"pwd2" id=
"pwd2" class=
"k-textbox hcu-all-100 password_match" size=
"10" maxlength=
"8" 356 data-required-msg=
"You must confirma your password" 357 homecu-equals=
"password_match" 358 data-homecuCustomEquals-msg=
"Passwords do not match">
363 <div
class=
"hcu-template">
364 <div
class=
"hcu-edit-buttons k-state-default">
365 <a href=
"main.prg?ft=26&tdir=<?php echo $tdir; ?>" id=
"lnkCancel">Cancel</a> 
366 <a href=
"##" id=
"btnUpdate" class=
"k-button k-primary">
367 <i
class=
"fa fa-check fa-lg"></i>Save
373 <script type=
"text/javascript">
374 $(document).ready(
function(e) {
375 var msg_err =
"<?php echo $msg_err; ?>";
376 var msg_suc =
"<?php echo $msg_suc; ?>";
379 $.homecuValidator.setup({
380 formStatusField:
"formStatus",
381 formValidate:
"umForm" 385 if (msg_err.length > 0) {
386 $.homecuValidator.homecuResetMessage =
true;
387 $.homecuValidator.displayMessage(msg_err, $.homecuValidator.settings.statusError);
388 }
else if (msg_suc.length > 0) {
389 $.homecuValidator.homecuResetMessage =
true;
390 $.homecuValidator.displayMessage(msg_suc, $.homecuValidator.settings.statusSuccess);
394 $(
"#btnUpdate").on(
"click",
function(e) {
395 if ($.homecuValidator.validate()) {
396 $(
"#umForm").submit();