merge NG auth, RT#21563
[freeside.git] / httemplate / edit / access_user.html
index 22cf896..b087943 100644 (file)
@@ -3,8 +3,7 @@
                  'table'  => 'access_user',
                  'fields' => [
                                'username',
-                               { field=>'_password', type=>'password' },
-                               { field=>'_password2', type=>'password' },
+                               @pw_fields,
                                'last',
                                'first',
                                { field=>'user_custnum', type=>'search-cust_main', },
@@ -20,9 +19,8 @@
                                'user_custnum' => 'Customer (optional)',
                                'disabled'     => 'Disable employee',
                              },
-                 'edit_callback' => sub { my( $c, $o ) = @_; 
-                                          $o->set('_password', '');
-                                        },
+                 'edit_callback' => \&edit_callback,
+                 'field_callback'=> \&field_callback,
                  'viewall_dir' => 'browse',
                  'html_bottom' =>
                    sub {
 die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
 
+my @pw_fields =
+  FS::Auth->auth_class->can('change_password')
+    ? ( { field=>'_password',  type=>'password' },
+        { field=>'_password2', type=>'password' },
+      )
+    : ();
+
 my $check_user_custnum_search = <<END;
   <SCRIPT TYPE="text/javascript">
     function check_user_custnum_search(what) {
@@ -62,4 +67,17 @@ my $check_user_custnum_search = <<END;
   </SCRIPT>
 END
 
+sub edit_callback {
+  my ($c, $o, $f, $opt) = @_;
+  $o->set('_password', '');
+}
+
+sub field_callback {
+  my ($c, $o, $f) = @_;
+  if($f->{'type'} eq 'password' and $o->is_system_user) {
+    $f->{'type'} = 'hidden';
+    $f->{'disabled'} = 1;
+  }
+}
+
 </%init>