8 $self =
"$menu_link?ft=$ft";
10 $operation = trim($operation);
11 $showSQL = $SYSENV[
"devmode"];
13 $string = array(
"filter" => FILTER_SANITIZE_STRING);
14 $parameters = array(
"a" => array(
"tab" =>
"",
"password" =>
"",
"message" =>
"",
"status" =>
"",
"usernames" =>
""));
15 HCU_ImportVars($parameters,
"a", array(
"tab" => $string,
"password" => $string,
"message" => $string,
"status" => $string,
16 "usernames" => $string,
"authval" => $string,
"isSkip" => $string,
"page" => $string));
17 extract($parameters[
"a"]);
19 $tab = isset($tab) ? trim($tab) :
"";
20 $password = isset($password) ? trim($password) :
"";
21 $message = isset($message) ? trim($message) :
"";
22 $status = isset($status) ? trim($status) :
"";
23 $usernames = isset($usernames) ? trim($usernames) :
"";
24 $authval = isset($authval) ? trim($authval) :
"";
25 $isSkip = isset($isSkip) ? trim($isSkip) ==
"Y" :
false;
26 $page = isset($page) ? trim($page) :
"";
28 define(
"MUSTDOIT_FT", 31);
36 case "readUserCombined":
37 if ($ft == MUSTDOIT_FT)
38 $returnArray = readUserBasicSecurity($dbh, $Cu, $Cn,
true);
40 $returnArray = readUserCombinedSecurity($dbh, $Cu, $Cn);
43 $returnArray = readUserSetup($dbh, $Cu, $Cn);
45 case "saveUserCombined":
46 $is31 = $ft == MUSTDOIT_FT;
47 $returnArray = saveUserCombinedSecurity($SYSENV, $dbh, $Cu, $Cn, $is31, $is31 && $isSkip);
50 $returnArray = saveUserSetup($SYSENV, $dbh, $Cu, $Cn);
52 default: $returnArray = array(
"sql" => array(),
"error" => array(
"Operation not recognized: $operation."),
"record" => array());
58 $returnArray = array(
"sql" => array(),
"error" => array($e->getMessage()));
61 header(
'Content-type: application/json');
63 unset($returnArray[
"sql"]);
64 print HCU_JsonEncode($returnArray);
74 printVerifyPassword($self,
"");
75 else if (!validatePassword($dbh, $password, $Cu, $Cn))
76 printVerifyPassword($self,
"Password is invalid.");
78 printSecurityCombined($self, $ft, $Cn, $Cu, trim($message));
81 printSecurityCombined($self, $ft, $Cn, $Cu);
84 printSecuritySetup($self, $Ffchg ==
"Y", $Cn, $Cu);
90 print $e->getMessage();
105 function validatePassword($dbh, $password, $Cu, $Cn)
107 $sql =
"select passwd from cuadminusers where user_name= '$Cn' and cu= '$Cu'";
109 $sth = db_query($sql, $dbh);
115 $row = db_fetch_row($sth);
116 $currentPassword = trim($row[0]);
118 $password = trim($password);
120 $comparison = password_verify($password, $currentPassword);
124 function readUserCombinedSecurity($dbh, $cuCode, $loggedInUser)
126 $results = ReadUser($dbh, $cuCode, $loggedInUser,
false,
true,
true,
false,
null);
127 $results[
"record"] = $results[
"record"][0];
141 function readUserBasicSecurity($dbh, $cuCode, $loggedInUser)
143 $results = ReadUser($dbh, $cuCode, $loggedInUser,
false,
false,
false,
false,
null);
144 $results[
"record"] = $results[
"record"][0];
158 function readUserSetup($dbh, $cuCode, $loggedInUser)
160 $results = ReadUser($dbh, $cuCode, $loggedInUser,
false,
true,
true,
false,
null);
161 $returnArray = array(
"sql" => $results[
"sql"],
"code" => $results[
"code"],
"error" => $results[
"error"]);
162 $record = $results[
"record"][0];
163 $newRecord = array(
"confidence" => $record[
"confidence"],
"mfaquest" => $record[
"mfaquest"],
"mfaddl" => $record[
"mfaddl"],
"pwdconfig" => $record[
"pwdconfig"],
164 "email" => $record[
"email"],
"forcechange"=>$record[
'booleanForceChange'],
"forcesecurity"=>$record[
'booleanForceSecurity']);
165 $returnArray[
"record"] = $newRecord;
169 function saveUserCombinedSecurity($pSysEnv, $dbh, $Cu, $Cn, $is31=
false, $isSkip=
false)
171 $string = array(
"filter" => FILTER_SANITIZE_STRING);
172 $array = array(
"filter" => FILTER_DEFAULT);
173 $parameters = array(
"a" => array(
"password" =>
"",
"email" =>
"",
"ipAddress" =>
"",
"smsNumber" =>
"",
"phoneProvider" =>
"",
"oldPassword" =>
"",
"remoteAccess" =>
"",
174 "confidence" =>
"",
"questIds" =>
"",
"questResponses" =>
"",
"usersms" =>
"",
"providersms" =>
"",
"ipAddress" =>
"",
"masterIpAddress" =>
""));
176 HCU_ImportVars($parameters,
"a", array(
"password" => $string,
"email" => $string,
"ipAddress" => $string,
"smsNumber" => $string,
"phoneProvider" => $string,
"masterIpAddress" => $string,
177 "oldPassword" => $string,
"remoteAccess" => $string,
"confidence" => $string,
"questIds" => $array,
"questResponses" => $array,
178 "usersms" => $string,
"providersms" => $string,
"ipAddress" => $string));
180 $parameters[
"a"][
"emailAddress"] = $parameters[
"a"][
"email"];
181 unset($parameters[
"a"][
"email"]);
183 $parameters[
"a"][
"phoneProvider"] = $parameters[
"a"][
"providersms"];
184 $parameters[
"a"][
"smsNumber"] = $parameters[
"a"][
"usersms"];
185 unset($parameters[
"a"][
"providersms"]);
186 unset($parameters[
"a"][
"usersms"]);
188 $parameters[
"a"][
"chksecure"] =
"Y";
190 return saveUser($pSysEnv, $dbh, $Cu, $parameters[
"a"], $Cn,
"combined", $is31, $isSkip);
205 function saveUserSetup($pSysEnv, $dbh, $Cu, $Cn)
207 $Ffchg = HCU_array_key_value(
"Ffchg", $pSysEnv);
208 $Ffchg = $Ffchg ===
false ?
"" : trim($Ffchg);
209 $parameters= array(
"a" => array(
"confidence" =>
"",
"questIds" =>
"",
"questResponses" =>
"",
"password" =>
"",
"emailAddress" =>
"",
"oldPassword" =>
"",
"chksecure" =>
"",
210 "passwordRequired" =>
""));
212 $string = array(
"filter" => FILTER_SANITIZE_STRING);
213 $array = array(
"filter" => FILTER_DEFAULT);
214 HCU_ImportVars($parameters,
"a", array(
"confidence" => $string,
"questIds" => $array,
"questResponses" => $array,
"password" => $string,
215 "emailAddress" => $string,
"oldPassword" => $string,
"chksecure" => $string,
"passwordRequired" => $string));
216 $parameters[
"a"][
"forcechange"] = $Ffchg;
218 return saveUser($pSysEnv, $dbh, $Cu, $parameters[
"a"], $Cn,
"setup",
true,
false, $parameters[
"a"][
"passwordRequired"] ==
"Y");
225 function printValidateSMS()
227 validatesms:
function(input)
229 if (!input.is(
"[name='smsNumber']"))
231 if ($(input).val().trim() !=
"" && !$(input).val().match(/\([0-9]{3}\) [0-9]{3}-[0-9]{4}/))
233 $(input).attr(
"data-validatesms-msg",
"Phone number is invalid.");
245 function printMatchOriginalPassword()
247 matchoriginalpassword:
function(input)
249 if (!input.is(
"[name='password']") || $(input).val().trim() ==
"")
251 if ($(input).val().trim() == $(
"[name='oldPassword']").val().trim())
253 $(input).attr(
"data-matchoriginalpassword-msg",
"Password cannot be original password.");
266 function printInitRemoteAccess($isMaster)
268 function initRemoteAccess(record)
270 $(
"[name='remoteAccess']").click(
function() {
271 $(
this).prop(
"checked") ? $(
".remoteAccessDiv").show() : $(
".remoteAccessDiv").hide();
274 var smsNumber= $(
"[name='notifySMS']").kendoMaskedTextBox({
275 mask:
"(000) 000-0000",
276 clearPromptChar:
true 277 }).data(
"kendoMaskedTextBox");
288 function printRemoteAccessTemplate($isMaster)
290 # if (booleanRemotePrivileges) { # 291 <div
class=
"row form-group hcuSpacer">
292 <h4
class=
"h4 hcuSpacerx col-xs-12">Personal Remote Access</h4>
295 <div
class=
"row hcuSecondary hcuSpacer"><div
class=
"vsgSecondary col-xs-12">
296 If accessing HomeCU Admin from an unknown IP address, you will be prompted
for an access code the first time you access from that IP address.
297 <br>You can
get this access code through email and <i>optionally</i> through text message
if your SMS information is
set.
300 <?php loginPrintInputLine(
"Notify SMS",
"#: smsNumber #",
"notifySMS", 0,
false,
true,
"text");
312 function printSecurityCombined($self, $ft, $username=
"", $cu=
"")
314 $isMaster = strtolower($cu) == strtolower($username);
315 printCommonStyle(); ?>
317 <?php printTopCenterCss(450); ?>
319 <script type=
"text/javascript">
322 getShowWaitFunctions(); ?>
324 var challengeData = [];
325 var challengeMap = {};
326 var previousParameters =
null;
329 $.homecuValidator.setup({formValidate:
'form', formStatusField:
'formValidateDiv', homecuCustomRules: {
330 <?php printCheckip(); ?>,
331 <?php printValidatePassword($ft == MUSTDOIT_FT); ?>,
332 <?php printMatchPasswords(); ?>,
333 <?php printValidateSMS(); ?>,
334 <?php printMatchOriginalPassword(); ?>,
337 <?php printInitPassword();
338 printInitChallenge();
342 <?php
if ($ft == MUSTDOIT_FT) { ?>
343 parameters.username=
"<?php echo $username; ?>";
344 parameters.cu=
"<?php echo $cu; ?>";
347 $.post(
"<?php echo $self; ?>&operation=readUserCombined", parameters,
function(data) {
349 if (data.error.length > 0)
350 $.homecuValidator.displayMessage(data.error, $.homecuValidator.settings.statusError );
353 $(
"[name='emailAddress']").val(data.record.email);
355 <?php
if ($ft != MUSTDOIT_FT) { ?>
356 if (data.record.booleanRemotePrivileges) {
357 var remoteTemplate= kendo.template($(
"#ratTemplate").html());
358 $(
".remoteInsertion").html(remoteTemplate(data.record));
359 initRemoteAccess(data.record);
361 $(
".remoteInsertion").
remove();
364 <?php printAfterReadChallenge(); }
366 printAfterReadPassword(); ?>
367 previousParameters= savePrevious(
true);
370 $(
"#statusSaveBtn,#skipBtn").click(
function(e) {
372 $(
"#formValidateDiv").hide();
373 var isSkip = $(
this).attr(
"id").trim() ==
"skipBtn";
375 if (isSkip || $.homecuValidator.validate())
377 var saveParameters = {};
381 var currentParameters = savePrevious(
true);
383 for (var prop in currentParameters)
385 if (!currentParameters.hasOwnProperty(prop))
388 if (previousParameters[prop] === undefined || previousParameters[prop] != currentParameters[prop])
389 saveParameters[prop] = currentParameters[prop];
392 if (currentParameters.usersms != previousParameters.usersms || currentParameters.providersms != previousParameters.providersms) {
394 saveParameters.usersms = currentParameters.usersms;
395 saveParameters.providersms = currentParameters.providersms ==
"" ?
"NONE" : currentParameters.providersms;
398 if (saveParameters.questIds !=
null)
399 saveParameters.questResponses = currentParameters.questResponses;
400 else if (saveParameters.questResponses !=
null)
401 saveParameters.questIds = currentParameters.questIds;
405 saveParameters.username =
"<?php echo $username; ?>";
406 saveParameters.cu =
"<?php echo $cu; ?>";
407 saveParameters.isSkip = isSkip ?
"Y" :
"N";
410 $.post(
"<?php echo $self; ?>&operation=saveUserCombined", saveParameters,
function(data) {
412 <?php
if ($ft == MUSTDOIT_FT) { ?>
413 if (data.error.length > 0)
414 $.homecuValidator.displayMessage(data.error, $.homecuValidator.settings.statusError );
416 window.location.href=
"<?php echo empty($_COOKIE['Tx_aURI']) ? $menu_link : urldecode($_COOKIE['Tx_aURI']); ?>";
419 $(
"#formSuccessDiv").hide();
420 $(
"#formSuccessDiv").empty();
421 if (data.error.length > 0)
423 $.homecuValidator.displayMessage(data.error, $.homecuValidator.settings.statusError );
427 $.homecuValidator.displayMessage(
"Settings were saved successfully!", $.homecuValidator.settings.statusSuccess);
431 $(
"[name='oldPassword']").val(
null);
432 $(
"[name='password']").val(
null);
433 $(
"[name='confirm']").val(
null);
435 if ($(
"#deleteAllowedAccess").text().trim() ==
"Cancel Delete")
436 $(
"#allowedAccess").remove();
447 <?php
if ($ft != MUSTDOIT_FT){ printUpdateDDLsChallenge(); printInitRemoteAccess($isMaster); }
454 function savePrevious(doStringify)
457 <?php
if ($ft != MUSTDOIT_FT) { printSavePreviousChallenge(); } ?>
458 var smsControl = $(
"[name='notifySMS']").data(
"kendoMaskedTextBox");
459 var ipControl = $(
"#ipAddressGrid").data(
"kendoGrid");
461 parameters.usersms = smsControl ==
null ? null : smsControl.raw();
462 parameters.remoteip = ipControl ==
null ? null : ipControl.dataSource.data().slice(0);
464 parameters.email = $(
"[name='emailAddress']").val();
466 parameters.oldPassword = $(
"[name='oldPassword']").val();
467 parameters.password = $(
"[name='password']").val();
469 if ($(
"#deleteAllowedAccess").text().trim() ==
"Cancel Delete")
470 parameters.ipAddress =
"NONE";
475 <?php
if ($ft != MUSTDOIT_FT) { ?>
476 parameters.questIds = kendo.stringify(questIds);
477 parameters.questResponses = kendo.stringify(questResponses);
481 $(
"#form").data(
"previousRecord", parameters);
491 function restorePrevious()
493 var previousRecord = $(
"#form").data(
"previousRecord");
494 var smsControl = $(
"[name='smsNumber']").data(
"kendoMaskedTextBox");
495 var ipControl = $(
"#ipAddressGrid").data(
"kendoGrid");
497 if (smsControl !=
null)
498 smsControl.value(previousRecord.usersms);
499 if (ipControl !=
null)
500 ipControl.dataSource.data(previousRecord.remoteip);
501 if (providerControl !=
null)
502 providerControl.value(previousRecord.providersms);
504 $(
"[name='emailAddress']").val(previousRecord.email);
505 <?php
if ($ft != MUSTDOIT_FT) { printRestorePreviousChallenge(); } ?>
508 var activeWindows = [];
509 $(document).ready(
function(){
511 <?php printClickOverlayEvent(); ?>
514 <?php
if ($ft != MUSTDOIT_FT) { ?>
515 <script type=
"text/x-kendo-template" id=
"ratTemplate">
516 <?php printRemoteAccessTemplate($isMaster); ?>
519 printShowHelpTemplate(); ?>
521 <div
class=
"container-fluid"><div>
522 <form
id=
"form" method=
"post" action=
"<?php echo $self; ?>" role=
"form" data-role=
"validator" novalidate=
"novalidate">
524 <div
class=
"col-xs-12">
525 <div
id=
"formValidateDiv" class=
"k-block k-error-colored formValidateDiv" style=
"display:none;"></div>
527 <div
class=
"form-horizontal form-widgets">
528 <?php
if ($ft != MUSTDOIT_FT) { ?>
529 <div
class=
"well well-sm">
530 <?php printHeader(
"My Contact Info");
531 loginPrintInputLine(
"Email",
"",
"emailAddress", 50,
true); ?>
533 <div
class=
"remoteInsertion well well-sm"></div>
535 printPasswordTemplate(); ?>
537 <?php
if ($ft != MUSTDOIT_FT) { ?>
538 <div
class=
"form-horizontal form-widgets">
539 <?php printChallengeTemplate(); ?>
542 <div
class=
"form-horizontal form-widgets">
543 <?php $array= array(array(
"text" =>
"Save",
"id" =>
"statusSaveBtn",
"primary" =>
true));
544 if ($ft == MUSTDOIT_FT)
545 $array[]= array(
"text" =>
"Skip",
"id" =>
"skipBtn");
546 printButtons($array);
557 function printAfterReadPassword()
560 $(
"#oldPassword").val(
null);
561 $(
"#password").val(
null);
562 $(
"#confirm").val(
null);
564 $.homecuValidator.passwordRules = data.record.pwdconfig;
566 var pwdRequirements= [];
569 var len = Number(data.record.pwdconfig.len);
570 var upper = Number(data.record.pwdconfig.upper);
571 var lower = Number(data.record.pwdconfig.lower);
572 var letter = Number(data.record.pwdconfig.letter);
573 var spec = Number(data.record.pwdconfig.spec);
574 var digit = Number(data.record.pwdconfig.digit);
577 var text= len +
" Character" + (len > 1 ?
"s" :
"");
578 pwdRequirements.push({which:
"len", text: text});
582 var text = upper +
" UPPER case letter" + (upper > 1 ?
"s" :
"");
583 pwdRequirements.push({which:
"upper", text: text});
586 var text = lower +
" lower case letter" + (lower > 1 ?
"s" :
"");
587 pwdRequirements.push({which:
"lower", text: text});
590 var text = letter +
" Letter" + (letter > 1 ?
"s" :
"");
591 pwdRequirements.push({which:
"letter", text: text});
594 var text = spec +
" Special character" + (spec > 1 ?
"s" :
"");
595 pwdRequirements.push({which:
"spec", text: text});
598 var text = digit +
" Number" + (digit > 1 ?
"s" :
"");
599 pwdRequirements.push({which:
"digit", text: text});
602 var
template= kendo.template($(
"#passwordRequirementTemplate").html());
604 $(
".passwordReqInsertion").html(
template({pwdRequirements: pwdRequirements}));
613 function printInitPassword($alwaysRequired=
false)
615 $(
"#showHelpLink").click(
function() {
616 var dialog = $(
"#showHelpDialog").data(
"kendoWindow");
619 dialog= $(
"<div id='showHelpDialog'></div>").appendTo(
"body").kendoWindow({
621 template: kendo.template($(
"#showHelpTemplate").html())
624 title:
"Choosing a Safe Password",
631 $(
"#showHelpChk").prop(
"checked",
true);
632 $(
"#showHelpChk").blur(); <?php
635 }).data(
"kendoWindow");
639 activeWindows.push(dialog);
644 $(
"body").on(
"click",
"#showHelpOk",
function() {
645 $(
"#showHelpDialog").data(
"kendoWindow").close();
650 $(
"[name='password']").keyup(
function() {
651 $.homecuValidator.homecuKendoValidator.validateInput($(
this));
662 function printVerifyPassword($self, $message)
666 <script type=
"text/javascript">
669 $.homecuValidator.setup({formValidate:
'form', formStatusField:
'formValidateDiv'});
671 <?php
if ($message !==
null && trim($message) !==
""): ?>
672 $.homecuValidator.displayMessage(
"<?php echo $message; ?>", $.homecuValidator.settings.statusError);
675 if ($(
"#formValidateDiv").text().trim() !=
"")
676 $(
"#formValidateDiv").show();
678 $(
"#continueBtn").click(
function() {
679 if ($.homecuValidator.validate())
684 $(document).ready(
function() {
688 <div
class=
"container-fluid"><div>
689 <form
id=
"form" method=
"post" action=
"<?php echo $self; ?>" role=
"form" data-role=
"validator" novalidate=
"novalidate">
690 <div
class=
"col-xs-12">
691 <div
id=
"formValidateDiv" class=
"k-block k-error-colored formValidateDiv"></div>
693 <div
class=
"form-horizontal form-widgets">
694 <?php loginPrintInputLine(
"Password",
"",
"password", 255,
true,
false,
"password",
"Password is required"); ?>
696 <div
class=
"form-horizontal form-widgets">
697 <?php printButtons(array(array(
"text" =>
"Continue",
"id" =>
"continueBtn",
"primary" =>
true))); ?>
707 function printInitChallenge()
709 for(var i=1;i <= 3; i++)
711 $(
"#challengeQuestDDL"+i).kendoDropDownList({
718 quest_id: {type:
"number"},
719 quest_text: {type:
"string"},
720 example_text: {type:
"string"}
726 dataTextField:
"quest_text",
727 dataValueField:
"quest_id",
730 var dataItem= this.dataItem();
731 var index= $(this.element).data(
"index");
732 if (dataItem !=
null)
734 if (Number(this.value()) != 0)
736 $(
"[name=challengeValidate"+index+
"]").val(this.value());
737 $(
"#challengeExample"+index).text(
"E.g. " + dataItem.example_text);
741 $(
"[name=challengeValidate"+index+
"]").val(
"");
742 $(
"#challengeExample"+index).html(
" "); <?php
747 $(
"[name=challengeValidate"+index+
"]").val(
"");
748 $(
"#challengeExample"+index).html(
" "); <?php
751 $(
"[name=challengeValidate"+index+
"]").blur(); <?php
753 }).data(
"kendoDropDownList");
761 function printRestorePreviousChallenge($fromAdmUser=
false)
763 $(
"[name='confidenceWord']").val(previousRecord.confidence);
765 for(var i=0; i < 3; i++)
768 $(
"#challengeQuestDDL"+index).data(
"kendoDropDownList").value(previousRecord.questIds[i]);
769 $(
"[name=challengeResponse"+index+
"]").val(previousRecord.questResponses[i]);
778 function printAfterReadChallenge($dontFillValues=
false)
780 if (!$dontFillValues) { ?>
781 $(
"[name='confidenceWord']").val(data.record.confidence);
784 var thisData = data.record.mfaddl;
785 thisData.splice(0,0, {quest_id: 0, quest_text:
"", example_text:
"", used: -1});
786 challengeData = thisData;
788 var length = data.record.mfaquest.length;
789 for(var i=0; i < 3; i++)
792 var ddl = $(
"#challengeQuestDDL"+index).data(
"kendoDropDownList");
793 ddl.dataSource.data(challengeData);
795 <?php
if (!$dontFillValues) { ?>
796 var thisRecord = data.record.mfaquest[i];
797 if (thisRecord !=
null)
799 $(
"[name=challengeResponse"+index+
"]").val(thisRecord.answer);
800 $(
"[name=challengeValidate"+index+
"]").val(thisRecord.quest_id);
801 ddl.value(thisRecord.quest_id);
813 function printSavePreviousChallenge($fromAdmUser=
false)
815 if (!$fromAdmUser) { ?>
819 var questResponses = [];
820 $(
".challengeValidate").each(
function() {
821 questIds.push(Number($(
this).val()));
823 $(
".challengeResponse").each(
function() {
824 questResponses.push($(
this).val());
826 parameters.confidence = $(
"[name='confidenceWord']").val();
827 parameters.questIds = questIds;
828 parameters.questResponses = questResponses;
835 function printUpdateDDLsChallenge()
837 function updateDDLs()
840 $(
".challengeValidate").each(
function() {
841 check.push($(
this).val());
843 for(var j=0; j < 3; j++)
846 var thisCheck= check.slice(0);
847 thisCheck.splice(j,1);
849 $(
"#challengeQuestDDL"+index).data(
"kendoDropDownList").dataSource.data($.grep(challengeData,
function(n,i) {
850 return thisCheck.indexOf(n.quest_id) == -1;
863 function printSecuritySetup($self, $showPassword=
false, $username, $cu)
865 printCommonStyle(); ?>
867 .k-notification-wrap {
868 white-space: normal !important;
875 <script type=
"text/javascript">
877 getShowWaitFunctions(); ?>
879 var challengeData = [];
880 var challengeMap = {};
881 var saveParameter = {};
884 $(
"#login-entry").data(
"previousRecord", {});
885 $.homecuValidator.setup({formValidate:
'login-entry', formStatusField:
'formValidateDiv', homecuCustomRules: {
886 <?php
if ($showPassword) { printValidatePassword(
true); ?>,
887 <?php printMatchPasswords(); ?>,<?php } ?>
888 <?php printValidateSMS(); ?>,
889 <?php printMatchOriginalPassword(); ?>
892 <?php printInitPassword(
true); ?>
893 <?php printInitChallenge(); ?>
895 <?php loginPrintPublicNote(); ?>
897 $(
"#submitBtn").click(
function() {
898 if ($.homecuValidator.validate())
900 var parameters = savePrevious(
true);
901 parameters.cu =
"<?php echo $cu; ?>";
902 parameters.username =
"<?php echo $username; ?>";
903 parameters.passwordRequired =
"<?php echo $showPassword ? 'Y' : 'N';?>";
906 $.post(
"<?php echo $self; ?>&operation=saveUserSetup", parameters,
function(data) {
908 if (data.error.length > 0)
910 $.homecuValidator.displayMessage(data.error, $.homecuValidator.settings.statusError );
914 window.location.href=
"<?php echo urldecode($_COOKIE['Tx_aURI']); ?>";
916 <?php
if ($showPassword) { ?>$(
"[name='oldPassword']").val(
null);
917 $(
"[name='password']").val(
null);
918 $(
"[name='confirm']").val(
null);<?php } ?>
926 var parameters= {cu:
"<?php echo $cu; ?>", username:
"<?php echo $username; ?>"};
927 $.post(
"<?php echo $self; ?>&operation=readUserSetup", parameters,
function(data) {
929 if (data.error.length > 0)
930 $.homecuValidator.displayMessage(data.error, $.homecuValidator.settings.statusError );
933 <?php printAfterReadChallenge(
true); ?>
934 <?php
if ($showPassword)
935 printAfterReadPassword();
937 $(
"[name='email']").val(data.record.email);
942 <?php printUpdateDDLsChallenge(); ?>
944 function restorePrevious()
946 var previousRecord = $(
"#login-entry").data(
"previousRecord");
947 <?php printRestorePreviousChallenge(); ?>
948 $(
"[name='email']").val(previousRecord.email);
949 $(
"[name='confidenceWord']").val(previousRecord.confidence);
951 <?php
if ($showPassword) { ?>
952 $(
"[name='oldPassword']").val(
null);
953 $(
"[name='password']").val(
null);
957 function savePrevious(doStringify)
960 <?php printSavePreviousChallenge(); ?>
961 parameters.emailAddress = $(
"[name='email']").val();
962 parameters.chksecure = $(
"[name='chksecure']:checked").val();
963 parameters.confidence = $(
"[name='confidenceWord']").val();
965 <?php
if ($showPassword) { ?>
966 parameters.oldPassword = $(
"[name='oldPassword']").val();
967 parameters.password = $(
"[name='password']").val();
972 parameters.questIds = kendo.stringify(questIds);
973 parameters.questResponses = kendo.stringify(questResponses);
977 $(
"#login-entry").data(
"previousRecord", parameters);
982 $(document).ready(
function() {
986 <?php printShowHelpTemplate(); ?>
988 <div
class=
"container-fluid"><div>
989 <form
id=
"login-entry" method=
"post" role=
"form" data-role=
"validator" novalidate=
"novalidate">
990 <div
id=
"formValidateDiv" class=
"homecu-formStatus k-block k-error-colored formValidateDiv" style=
"display:none;"></div>
991 <div
class=
"well well-sm ">
992 <div
class=
"form-horizontal form-widgets">
993 <?php
if ($showPassword)
994 printPasswordTemplate();
995 printChallengeTemplate($showPassword);
996 loginPrintInputLine(
"Please enter email",
"",
"email", 50,
true,
true,
"text",
"Email is required"); ?>
999 <div
class=
"form-horizontal form-widgets">
1000 <?php loginPrintButtons(
false,
false); ?>
1002 <?php loginPrintSaveToken(); ?>
1012 function printPasswordTemplate()
1014 <div
class=
"well well-sm">
1015 <?php printPasswordRequirementTemplate ();
1016 printHeader(
"Password");
1018 <div
class=
"form-group hcuSpacer">
1019 <label
class=
"col-xs-12 col-md-8">Please Read </label>
1020 <div
class=
"col-xs-12 col-md-8">
1021 <a href=
"#" id=
"showHelpLink">The Recommended Password Guidelines</a> <input type=
"checkbox" id=
"showHelpChk" name=
'showHelp'>
1024 <div
class=
"row form-group">
1025 <label
class=
"col-xs-12 col-md-8">Original Password </label>
1026 <div
class=
"col-xs-12 col-md-8">
1027 <input name=
"oldPassword" class=
"hcu-all-100 k-input k-textbox" type=
"password" maxlength=
"255">
1030 <div
class=
"row form-group">
1031 <div
class=
"col-xs-12 col-md-8">
1032 <div
class=
"col-xs-12 col-md-6 hcu-no-padding">
1033 <div
class=
"col-xs-12 hcu-no-padding hcuSpacer">
1034 <label
class=
"col-xs-12 extendPasswordToFit">New Password </label>
1035 <div
class=
"col-xs-12 extendPasswordToFit">
1036 <input name=
"password" class=
"hcu-all-100 k-input k-textbox matchPasswords" type=
"password" maxlength=
"255">
1040 <div
class=
"col-xs-12 hcu-no-padding hcuSpacer">
1041 <label
class=
"col-xs-12 extendPasswordToFit">Confirm </label>
1042 <div
class=
"col-xs-12 extendPasswordToFit">
1043 <input name=
"confirm" class=
"hcu-all-100 k-input k-textbox matchPasswords" type=
"password" maxlength=
"255">
1047 <div
class=
"col-xs-12 col-md-6 passwordReqInsertion"></div>
1059 function printChallengeTemplate($separator=
false)
1061 <div
class=
"well well-sm">
1062 <?php loginPrintInputLine(
"Confidence Word",
"",
"confidenceWord", 20,
true,
true,
false,
"Confidence Word is required");
1063 printHeader(
"Challenge Questions");
1065 for($i=0; $i < 3; $i++)
1068 <input type=
"hidden" name=
"challengeValidate<?php echo $plusOne; ?>" class=
"challengeValidate" required data-required-msg=
"Challenge Question <?php echo $plusOne; ?> is required">
1069 <div
class=
"form-group hcuSpacer">
1070 <label
class=
"col-xs-12 col-md-8">Question <?php echo $plusOne; ?> </label>
1071 <div
class=
"col-xs-12 col-md-8">
1072 <div
id=
"challengeQuestDDL<?php echo $plusOne; ?>" data-index=
"<?php echo $plusOne; ?>" class=
"challengeQuestDDL hcu-all-100"></div>
1074 <div
class=
"col-xs-1 col-sm-1 col-lg-1">
1075 <span data-
for=
'challengeValidate<?php echo $plusOne; ?>' class=
'k-invalid-msg'></span>
1078 <?php loginPrintInputLine(
"Response $plusOne",
"",
"challengeResponse$plusOne", 0,
true,
false,
"text",
"Challenge Response $plusOne is required",
"challengeResponse");
1087 function printCommonStyle()
1095 input[type=
"email"], input[type=
"password"] {
1096 border-style: solid;
1098 font-family: inherit;
1111 .extendPasswordToFit {
1115 @media (max-width: 991px) {
1116 .extendPasswordToFit {
1127 function printShowHelpTemplate()
1129 <script type=
"text/x-kendo-template" id=
"showHelpTemplate">
1130 <p>In General, a password should be a
long as possible,
while still being EASY ENOUGH TO REMEMBER without writing it down.</p>
1131 <p>One way to
do this is create a password based on an easy-to-remember phrase. For example, the phrase might be:
"This Is One Way I Remember My Password" 1132 and the password could be:
"Ti1wIrmp". </p>
1133 <p>Use a different password
for every system: Take the above example a step further and include the site name it in your password somehow:
1134 "This Is One Way I Remember My Internet Banking Password" and the result would be
"Ti1wirmibp". Take it a step further and include the number of letters in the site name
1135 somewhere in the password: (e.g. 4
for ebay, 8
for facebook, 6
for paypal, etc.)</p>
1136 <p><B>NOTE: Do not use examples given here as your password!</b></p>
1137 <p>The password <b>SHOULD NOT</b> be:
1139 <li>A derivative of the login account</li>
1140 <li>A word found in a dictionary (English or foreign)</li>
1141 <li>A dictionary word spelled backwards</li>
1142 <li>A dictionary word (forward or backwards) preceded and/or followed by any other single character (e.g., secret1, 1secret, secret?, secret!)</li>
1143 <li>A dictionary word (forward or backwards)
using common numeric replacements
for letters (e.g., 3
for e, 1
for the letter L, 9
for g, etc)</li>
1144 <li>A password easily guessed by a
friend or family member:
1146 <li>Names of family, friends, pets, coworkers, etc.</li>
1147 <li>Birthdays and other personal information such as addresses and phone numbers.</li>
1150 <li>Word or number patterns like Abcd1234, qwerty, asdfjkl, 1233454321, etc.</li>
1153 <p>For general password safety, you should:
1155 <li>Keep your password safe. Never write it down, store it online, or email it.</li>
1156 <li>Change ALL your passwords any time you suspect any of your online accounts have been compromised or tampered with.</li>
1157 <li>Run current anti-virus, anti-spyware, anti-malware AND keep your computer operating system up-to-date. </li>
1158 <li>Limit the amount of personal information you post on sites like twitter, myspace and facebook.
1159 All your followers and friends or others with access to the same list could easily use
this information
for hacking attempts.</li>
1160 <li>Be especially careful with your email password. In fact, your email account should be the most
protected account you have. If a hacker has access to your email account,
1161 he can reset your password at ebay, paypal, amazon, etc. Also, email (pop3, smtp, imap) should be run under SSL especially
if you use
public wifi.
1162 You should not use
public wifi unless you are running a personal firewall on your computer.</li>
1165 <p><a href=
"\\#" class=
"k-button" id=
"showHelpOk">Okay</a>
1175 function printAdmUsrMaintLabelBlock($labelArray)
1177 <div
class=
"row form-group col-xs-12"><div
class=
"k-block col-xs-12">
1178 <?php
foreach($labelArray as $label => $value) { ?>
1179 <div
class=
"col-xs-12 col-sm-6 hcuSpacer">
1180 <label
class=
"col-xs-12"><?php echo $label; ?> </label>
1181 <div
class=
"col-xs-12 admIndent"><?php echo trim(str_replace(
'\\',
'\\\\', $value)); ?></div>