RT# 75817 - fixed saving of password for new contacts, and password validation on...
authorChristopher Burger <burgerc@freeside.biz>
Fri, 7 Sep 2018 14:55:19 +0000 (10:55 -0400)
committerChristopher Burger <burgerc@freeside.biz>
Mon, 10 Sep 2018 00:06:05 +0000 (20:06 -0400)
Conflicts:
FS/FS/contact.pm
httemplate/edit/elements/edit.html

FS/FS/contact.pm
httemplate/edit/cust_main-contacts.html
httemplate/edit/elements/edit.html
httemplate/edit/process/elements/process.html
httemplate/elements/contact.html

index 4db3cdf..8f6b6a3 100644 (file)
@@ -131,7 +131,6 @@ sub insert {
   my $dbh = dbh;
 
   my $error = $self->SUPER::insert;
-  $error ||= $self->insert_password_history;
 
   if ( $error ) {
     $dbh->rollback if $oldAutoCommit;
@@ -191,6 +190,15 @@ sub insert {
     }
   }
 
+  if ( $self->get('password') ) {
+    my $error = $self->is_password_allowed($self->get('password'))
+          ||  $self->change_password($self->get('password'));
+    if ( $error ) {
+      $dbh->rollback if $oldAutoCommit;
+      return $error;
+    }
+  }
+
   $dbh->commit or die $dbh->errstr if $oldAutoCommit;
 
   '';
@@ -614,7 +622,7 @@ sub authenticate_password {
 
     $hash eq $check_hash;
 
-  } else { 
+  } else {
 
     return 0 if $self->_password eq '';
 
index b3f6772..b046c5b 100644 (file)
 my $curuser = $FS::CurrentUser::CurrentUser;
 my $conf = new FS::Conf;
 
+if ( $cgi->param('redirect') ) {
+  my $session = $cgi->param('redirect');
+  my $pref = $curuser->option("redirect$session");
+  die "unknown redirect session $session\n" unless length($pref);
+  $cgi = new CGI($pref);
+}
+
 my $custnum;
 if ( $cgi->param('error') ) {
   $custnum = scalar($cgi->param('custnum'));
index 3826f97..ff1da49 100644 (file)
@@ -633,7 +633,7 @@ Example:
           var newrow =  <% include(@layer_opt, html_only=>1) |js_string %>;
 
 %         #until the rest have html/js_only
-%         if ( $type eq 'selectlayers' || $type =~ /^select-cgp_rule_/ ) {
+%         if ( $type eq 'selectlayers' || $type =~ /^select-cgp_rule_/ || $type eq 'contact') {
             var newfunc = <% include(@layer_opt, js_only=>1) |js_string %>;
 %         } else {
             var newfunc = '';
index 1175723..5b9ed6b 100644 (file)
@@ -123,7 +123,7 @@ Example:
 %          " attempting to set redirect$session to ". $cgi->query_string."\n";
 %    }
 %
-<% $cgi->redirect("$error_redirect?redirect=$session") %>
+<% $cgi->redirect("$error_redirect"."redirect=$session") %>
 %
 %  } else {
 %
index e330e1f..ccbb431 100644 (file)
@@ -1,4 +1,6 @@
-% unless ( $opt{'js_only'} ) {
+% if ( $opt{'js_only'} ) {
+<% $js %>
+% } else {
 
   <INPUT TYPE="hidden" NAME="<%$name%>" ID="<%$id%>" VALUE="<% $curr_value %>">
 
                    VALUE = ""
                    placeholder = "<% $value |h %>"
             >
-%           my $contactnum = $curr_value ? $curr_value : '0';
-
             <SCRIPT>
-              add_password_validation('<% "changepw".$id."_password" %>', 'submit', '', '<% $contactnum %>');
-            </SCRIPT>
-
-            <SCRIPT TYPE="text/javascript">
-                    var selfService = document.getElementById("<%$id%>_selfservice_access").value;
-
-                    if (selfService !== "Y") { document.getElementById("changepw<%$id%>_password").disabled = 'true'; }
-                    document.getElementById("<%$id%>_selfservice_access").onchange = function() {
-                      if (this.value == "P" || this.value == "E" || this.value =="Y") {
-                        document.getElementById("changepw<%$id%>_password").disabled = '';
-                      }
-                      else { document.getElementById("changepw<%$id%>_password").disabled = 'true'; }
-                      return false;
-                    }
+              <% $js %>
             </SCRIPT>
 %         } elsif ( $field eq 'invoice_dest' ) {
 %           my $curr_value = $cgi->param($name . '_' . $field);
@@ -131,6 +118,7 @@ my $name = $opt{'element_name'} || $opt{'field'} || 'contactnum';
 my $id = $opt{'id'} || 'contactnum';
 
 my $curr_value = $opt{'curr_value'} || $opt{'value'};
+my $contactnum = $curr_value ? $curr_value : '0';
 
 my $onchange = '';
 if ( $opt{'onchange'} ) {
@@ -177,4 +165,19 @@ $label{'comment'} = 'Comment';
 
 my @fields = $opt{'name_only'} ? qw( first last ) : keys %label;
 
+my $js = qq(
+    add_password_validation('changepw$id\_password', 'submit', '', '$contactnum');
+
+    var selfService = document.getElementById("$id\_selfservice_access").value;
+
+    if (selfService !== "Y") { document.getElementById("changepw$id\_password").disabled = 'true'; }
+    document.getElementById("$id\_selfservice_access").onchange = function() {
+      if (this.value == "P" || this.value == "E" || this.value =="Y") {
+        document.getElementById("changepw$id\_password").disabled = '';
+      }
+      else { document.getElementById("changepw$id\_password").disabled = 'true'; }
+      return false;
+    }
+);
+
 </%init>