2 my $curuser = $FS::CurrentUser::CurrentUser;
4 $cgi->param('svcnum') =~ /^(\d+)$/ or die "illegal svcnum" if $cgi->param('svcnum');
7 $cgi->param('contactnum') =~ /^(\d+)$/ or die "illegal contactnum" if $cgi->param('contactnum');
10 my $newpass = $cgi->param('password');
15 my $svc_acct = FS::svc_acct->by_key($svcnum)
16 or die "svc_acct $svcnum not found";
17 my $part_svc = $svc_acct->part_svc;
18 die "access denied" unless (
19 $curuser->access_right('Provision customer service') or
20 ( $curuser->access_right('Edit password') and
21 ! $part_svc->restrict_edit_password )
24 my $error = $svc_acct->is_password_allowed($newpass)
25 || $svc_acct->set_password($newpass)
26 || $svc_acct->replace;
28 # annoyingly specific to view/svc_acct.cgi, for now...
29 $cgi->delete('password');
32 my $contact = qsearchs('contact', { 'contactnum' => $contactnum } )
33 or return { 'error' => "Contact not found" . $contactnum };
35 my $error = $contact->is_password_allowed($newpass)
36 || $contact->change_password($newpass);
38 # annoyingly specific to view/svc_acct.cgi, for now...
39 #$cgi->delete('password');
45 % $cgi->param('svcnum', $svcnum);
46 % $cgi->param("changepw${svcnum}_error", $error);
48 % elsif ($contactnum) {
49 % $cgi->param('contactnum', $contactnum);
50 % $cgi->param("changepw${contactnum}_error", $error);
53 % if ($svcnum) { $cgi->query_string($svcnum); }
54 % elsif ($contactnum) { $cgi->query_string($contactnum); }
56 %warn('my pwd error is ' . $error . ' end');
58 <% $cgi->redirect($fsurl.'view/svc_acct.cgi?'.$cgi->query_string) %>
60 % elsif ($contactnum) {
61 <% $cgi->redirect($fsurl.'edit/cust_main-contacts.html?'.$cgi->param('custnum')) %>