[freeside-commits] branch master updated. 80bfc5e1b11694553ddaa48e3b181462cfadc9dd

Jonathan Prykop jonathan at 420.am
Sat Dec 17 17:55:10 PST 2016


The branch, master has been updated
       via  80bfc5e1b11694553ddaa48e3b181462cfadc9dd (commit)
      from  dbb1f2c9894385044ed85b64d9016b2eeb06d649 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 80bfc5e1b11694553ddaa48e3b181462cfadc9dd
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Sat Dec 17 19:53:23 2016 -0600

    73443: Selfservice NG Password reset page

diff --git a/FS/FS/ClientAPI_XMLRPC.pm b/FS/FS/ClientAPI_XMLRPC.pm
index 3167aa0..e69a06e 100644
--- a/FS/FS/ClientAPI_XMLRPC.pm
+++ b/FS/FS/ClientAPI_XMLRPC.pm
@@ -181,6 +181,7 @@ sub ss2clientapi {
   'reset_passwd'              => 'MyAccount/reset_passwd',
   'check_reset_passwd'        => 'MyAccount/check_reset_passwd',
   'process_reset_passwd'      => 'MyAccount/process_reset_passwd',
+  'validate_passwd'           => 'MyAccount/validate_passwd',
   'list_tickets'              => 'MyAccount/list_tickets',
   'create_ticket'             => 'MyAccount/create_ticket',
   'get_ticket'                => 'MyAccount/get_ticket',
diff --git a/ng_selfservice/elements/add_password_validation.php b/ng_selfservice/elements/add_password_validation.php
new file mode 100644
index 0000000..6938437
--- /dev/null
+++ b/ng_selfservice/elements/add_password_validation.php
@@ -0,0 +1,51 @@
+<SCRIPT>
+function add_password_validation (fieldid,nologin) {
+  var inputfield = document.getElementById(fieldid);
+  inputfield.onchange = function () {
+    var fieldid = this.id+'_result';
+    var resultfield = document.getElementById(fieldid);
+    var svcnum = '';
+    var svcfield = document.getElementById(this.id+'_svcnum');
+    if (svcfield) {
+      svcnum = svcfield.options[svcfield.selectedIndex].value;
+    }
+    if (this.value) {
+      resultfield.innerHTML = '<SPAN STYLE="color: blue;">Validating password...</SPAN>';
+      var validate_data = {
+        fieldid: fieldid,
+        check_password: this.value,
+      };
+      if (!nologin) {
+        validate_data['svcnum'] = svcnum;
+      }
+      $.ajax({
+        url: 'xmlrpc_validate_passwd.php',
+        data: validate_data,
+        method: 'POST',
+        success: function ( result ) {
+          result = JSON.parse(result);
+          var resultfield = document.getElementById(fieldid);
+          if (resultfield) {
+            var errorimg = '<IMG SRC="images/error.png" style="width: 1em; display: inline-block; padding-right: .5em">';
+            var validimg = '<IMG SRC="images/tick.png" style="width: 1em; display: inline-block; padding-right: .5em">';
+            if (result.password_valid) {
+              resultfield.innerHTML = validimg+'<SPAN STYLE="color: green;">Password valid!</SPAN>';
+            } else if (result.password_invalid) {
+              resultfield.innerHTML = errorimg+'<SPAN STYLE="color: red;">'+result.password_invalid+'</SPAN>';
+            } else {
+              resultfield.innerHTML = '';
+            }
+          }
+        },
+        error: function (  jqXHR, textStatus, errorThrown ) {
+          var resultfield = document.getElementById(fieldid);
+          console.log('ajax error: '+textStatus+'+'+errorThrown);
+          if (resultfield) {
+            resultfield.innerHTML = '';
+          }
+        },
+      });
+    }
+  };
+}
+</SCRIPT>
diff --git a/ng_selfservice/images/error.png b/ng_selfservice/images/error.png
new file mode 100644
index 0000000..628cf2d
Binary files /dev/null and b/ng_selfservice/images/error.png differ
diff --git a/ng_selfservice/images/tick.png b/ng_selfservice/images/tick.png
new file mode 100644
index 0000000..a9925a0
Binary files /dev/null and b/ng_selfservice/images/tick.png differ
diff --git a/ng_selfservice/password.php b/ng_selfservice/password.php
index 41296ed..a6e6795 100644
--- a/ng_selfservice/password.php
+++ b/ng_selfservice/password.php
@@ -1,5 +1,92 @@
 <? $title ='Change Password'; include('elements/header.php'); ?>
 <? $current_menu = 'password.php'; include('elements/menu.php'); ?>
-Chagne password
+<?
+$error = '';
+$pwd_change_success = false;
+if ( isset($_POST['svcnum']) ) {
+
+  $pwd_change_result = $freeside->myaccount_passwd(array(
+    'session_id'    => $_COOKIE['session_id'],
+    'svcnum'        => $_POST['svcnum'],
+    'new_password'  => $_POST['new_password'],
+    'new_password2' => $_POST['new_password2'],
+  ));
+
+  if ($pwd_change_result['error']) {
+    $error = $pwd_change_result['error'];
+  } else {
+    $pwd_change_success = true;
+  }
+}
+
+if ($pwd_change_success) {
+?>
+
+<P>Password changed for <? echo $pwd_change_result['value'],' ',$pwd_change_result['label'] ?>.</P>
+
+<?
+} else {
+  $pwd_change_svcs = $freeside->list_svcs(array(
+    'session_id' => $_COOKIE['session_id'],
+    'svcdb'      => 'svc_acct',
+  ));
+  if (isset($pwd_change_svcs['error'])) {
+    $error = $error || $pwd_change_svcs['error'];
+  }
+  if (!isset($pwd_change_svcs['svcs'])) {
+    $pwd_change_svcs['svcs'] = $pwd_change_svcs['svcs'];
+    $error = $error || 'Unknown error loading services';
+  }
+  if ($error) {
+    include('elements/error.php');
+  }
+?>
+
+<FORM METHOD="POST">
+<TABLE BGCOLOR="#cccccc">
+  <TR>
+    <TH ALIGN="right">Change password for account: </TH>
+    <TD>
+      <SELECT ID="new_password_svcnum" NAME="svcnum">
+<?
+  $selected_svcnum = isset($_POST['svcnum']) ? $_POST['svcnum'] : $pwd_change_svcs['svcnum'];
+  foreach ($pwd_change_svcs['svcs'] as $svc) {
+?>
+        <OPTION VALUE="<? echo $svc['svcnum'] ?>"<? echo $selected_svcnum == $svc['svcnum'] ? ' SELECTED' : '' ?>>
+          <? echo $svc['label'],': ',$svc['value'] ?>
+        </OPTION>
+<?
+  }
+?>
+      </SELECT>
+    </TD>
+  </TR>
+
+  <TR>
+    <TH ALIGN="right">New password: </TH>
+    <TD>
+      <INPUT ID="new_password" TYPE="password" NAME="new_password" SIZE="18">
+      <DIV ID="new_password_result"></DIV>
+<? include('elements/add_password_validation.php'); ?>
+      <SCRIPT>add_password_validation('new_password');</SCRIPT>
+    </TD>
+  </TR>
+
+  <TR>
+    <TH ALIGN="right">Re-enter new password: </TH>
+    <TD><INPUT TYPE="password" NAME="new_password2" SIZE="18"></TD>
+  </TR>
+
+</TABLE>
+<BR>
+
+<INPUT TYPE="submit" VALUE="Change password">
+
+</FORM>
+
+<?
+} // end if $pwd_change_show_form
+?>
+
 <? include('elements/menu_footer.php'); ?>
 <? include('elements/footer.php'); ?>
diff --git a/ng_selfservice/xmlrpc_validate_passwd.php b/ng_selfservice/xmlrpc_validate_passwd.php
new file mode 100644
index 0000000..5632dc3
--- /dev/null
+++ b/ng_selfservice/xmlrpc_validate_passwd.php
@@ -0,0 +1,15 @@
+<?
+
+require_once('elements/session.php');
+
+$xmlrpc_args = array(
+  fieldid        => $_POST['fieldid'],
+  check_password => $_POST['check_password'],
+  svcnum         => $_POST['svcnum'],
+  session_id     => $_COOKIE['session_id']
+);
+
+$result = $freeside->validate_passwd($xmlrpc_args);
+echo json_encode($result);
+
+?>

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/ClientAPI_XMLRPC.pm                          |    1 +
 .../elements/add_password_validation.php           |   43 ++++++----
 .../cgi => ng_selfservice}/images/error.png        |  Bin 666 -> 666 bytes
 .../cgi => ng_selfservice}/images/tick.png         |  Bin 537 -> 537 bytes
 ng_selfservice/password.php                        |   89 +++++++++++++++++++-
 ng_selfservice/xmlrpc_validate_passwd.php          |   15 ++++
 6 files changed, 132 insertions(+), 16 deletions(-)
 copy fs_selfservice/FS-SelfService/cgi/add_password_validation.js => ng_selfservice/elements/add_password_validation.php (54%)
 copy {fs_selfservice/FS-SelfService/cgi => ng_selfservice}/images/error.png (100%)
 copy {fs_selfservice/FS-SelfService/cgi => ng_selfservice}/images/tick.png (100%)
 create mode 100644 ng_selfservice/xmlrpc_validate_passwd.php




More information about the freeside-commits mailing list