From: mark Date: Mon, 4 Oct 2010 22:17:22 +0000 (+0000) Subject: fs_ system accounts, RT#8731 X-Git-Tag: TORRUS_1_0_9~242 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=22136ecc8353ff82c9a402218ce849db6cf05dab fs_ system accounts, RT#8731 --- diff --git a/FS/FS/access_user.pm b/FS/FS/access_user.pm index 72e914068..075733a68 100644 --- a/FS/FS/access_user.pm +++ b/FS/FS/access_user.pm @@ -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 diff --git a/httemplate/edit/access_user.html b/httemplate/edit/access_user.html index 22cf89621..86ce25374 100644 --- a/httemplate/edit/access_user.html +++ b/httemplate/edit/access_user.html @@ -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 +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; + } +} + diff --git a/httemplate/edit/process/access_user.html b/httemplate/edit/process/access_user.html index e6258a9b1..8e7e70a06 100644 --- a/httemplate/edit/process/access_user.html +++ b/httemplate/edit/process/access_user.html @@ -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 ''; +}