fs_ system accounts, RT#8731
authormark <mark>
Mon, 4 Oct 2010 22:17:22 +0000 (22:17 +0000)
committermark <mark>
Mon, 4 Oct 2010 22:17:22 +0000 (22:17 +0000)
FS/FS/access_user.pm
httemplate/edit/access_user.html
httemplate/edit/process/access_user.html

index 72e9140..075733a 100644 (file)
@@ -132,9 +132,8 @@ sub insert {
 
 sub htpasswd_kludge {
   my $self = shift;
-  
-  #awful kludge to skip setting htpasswd for fs_* users
-  return '' if $self->username =~ /^fs_/;
+
+  return '' if $self->is_system_user;
 
   unshift @_, '-c' unless -e $htpasswd_file;
   if ( 
@@ -512,6 +511,25 @@ sub default_customer_view {
 
 }
 
+=item is_system_user
+
+Returns true if this user has the name of a known system account.  These 
+users will not appear in the htpasswd file and can't have passwords set.
+
+=cut
+
+sub is_system_user {
+  my $self = shift;
+  return grep { $_ eq $self->username } ( qw(
+    fs_queue
+    fs_daily
+    fs_selfservice
+    fs_signup
+    fs_bootstrap
+    fs_selfserv
+) );
+}
+
 =back
 
 =head1 BUGS
index 22cf896..86ce253 100644 (file)
@@ -20,9 +20,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 {
@@ -62,4 +61,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>
index e6258a9..8e7e70a 100644 (file)
@@ -10,6 +10,7 @@
                  'process_m2m' => { 'link_table'   => 'access_usergroup',
                                     'target_table' => 'access_group',
                                   },
+                 'precheck_callback'=> \&precheck_callback,
              )
 %>
 %   }
@@ -23,4 +24,13 @@ if ( FS::Conf->new->exists('disable_acl_changes') ) {
   die "shouldn't be reached";
 }
 
+sub precheck_callback {
+  my $cgi = shift;
+  my $o = FS::access_user->new({username => $cgi->param('username')});
+  if( $o->is_system_user and !$cgi->param('usernum') ) {
+    $cgi->param('username','');
+    return "username '".$o->username."' reserved for system account."
+  }
+  return '';
+}
 </%init>