From: ivan Date: Mon, 7 Aug 2006 02:44:29 +0000 (+0000) Subject: add internal user disable-ing X-Git-Tag: BEFORE_FINAL_MASONIZE~51 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=7aae40398f1c8ed42424f1694640c9796a580d22 add internal user disable-ing --- diff --git a/FS/FS/CurrentUser.pm b/FS/FS/CurrentUser.pm index 9f2c93f4f..bcd337d2c 100644 --- a/FS/FS/CurrentUser.pm +++ b/FS/FS/CurrentUser.pm @@ -36,6 +36,7 @@ sub load_user { $CurrentUser = qsearchs('access_user', { 'username' => $user, #'_password' => + 'disabled' => '', } ); die "unknown user: $user" unless $CurrentUser; # or bad password diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 3e1d68f1b..04dcb8245 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -1476,6 +1476,7 @@ sub tables_hashref { '_password', 'varchar', '', $char_d, '', '', 'last', 'varchar', '', $char_d, '', '', 'first', 'varchar', '', $char_d, '', '', + 'disabled', 'char', 'NULL', 1, '', '', ], 'primary_key' => 'usernum', 'unique' => [ [ 'username' ] ], diff --git a/FS/FS/access_user.pm b/FS/FS/access_user.pm index 37b3b2f37..5d1e183e7 100644 --- a/FS/FS/access_user.pm +++ b/FS/FS/access_user.pm @@ -47,6 +47,8 @@ FS::Record. The following fields are currently supported: =item first - +=item disabled - empty or 'Y' + =back =head1 METHODS @@ -211,6 +213,7 @@ sub check { || $self->ut_text('_password') || $self->ut_text('last') || $self->ut_text('first') + || $self->ut_enum('disabled', [ '', 'Y' ] ) ; return $error if $error; diff --git a/httemplate/browse/access_user.html b/httemplate/browse/access_user.html index be11bf82a..5b787977d 100644 --- a/httemplate/browse/access_user.html +++ b/httemplate/browse/access_user.html @@ -4,6 +4,14 @@ my $html_init = "Internal users have access to the back-office interface. Typically, this is your employees and contractors, but in a VISP setup, you can also add accounts for your reseller's employees. It is highly recommended to add a separate account for each person rather than using role accounts.

". qq!Add an internal user

!; +#false laziness w/part_pkg.cgi +my %search = (); +my $search = ''; +unless ( $cgi->param('showdisabled') ) { + %search = ( 'disabled' => '' ); + $search = "( disabled = '' OR disabled IS NULL )"; +} + #false laziness w/access_group.html & agent_type.cgi my $groups_sub = sub { my $access_user = shift; @@ -28,36 +36,63 @@ my $groups_sub = sub { }; +my $posttotal; +if ( $cgi->param('showdisabled') ) { + $cgi->param('showdisabled', 0); + $posttotal = '( hide disabled users )'; + $cgi->param('showdisabled', 1); +} else { + $cgi->param('showdisabled', 1); + $posttotal = '( show disabled users )'; + $cgi->param('showdisabled', 0); +} + my $count_query = 'SELECT COUNT(*) FROM access_user'; +$count_query .= " WHERE $search" + if $search; my $link = [ $p.'edit/access_user.html?', 'usernum' ]; +my @header = ( '#', 'Username' ); +my @fields = ( 'usernum', 'username' ); +my $align = 'rl'; +my @links = ( $link, $link ); +my @style = ( '', '' ); + +#false laziness w/part_pkg.cgi +#unless ( $cgi->param('showdisabled') ) { #its been reversed already +if ( $cgi->param('showdisabled') ) { #its been reversed already + push @header, 'Status'; + push @fields, sub { shift->disabled + ? 'DISABLED' + : 'Active' + }; + push @links, ''; + $align .= 'c'; + push @style, 'b'; +} + +push @header, 'Full name', 'Groups'; +push @fields, 'name', $groups_sub; +push @links, $link, ''; +$align .= 'll'; + %><%= include( 'elements/browse.html', - 'title' => 'Internal Users', - 'menubar' => [ #'Main menu' => $p, - 'Internal access groups' => $p.'browse/access_group.html', - ], - 'html_init' => $html_init, - 'name' => 'internal users', - 'query' => { 'table' => 'access_user', - 'hashref' => {}, - 'extra_sql' => 'ORDER BY last, first', - }, - 'count_query' => $count_query, - 'header' => [ '#', - 'Username', - 'Full name', - 'Groups' - ], - 'fields' => [ 'usernum', - 'username', - 'name', # sub { shift->name }, - $groups_sub, - ], - 'links' => [ $link, - $link, - $link, - '' - ], + 'title' => 'Internal Users', + 'menubar' => [ #'Main menu' => $p, + 'Internal access groups' => $p.'browse/access_group.html', + ], + 'html_init' => $html_init, + 'html_posttotal' => $posttotal, + 'name' => 'internal users', + 'query' => { 'table' => 'access_user', + 'hashref' => \%search, + 'extra_sql' => 'ORDER BY last, first', + }, + 'count_query' => $count_query, + 'header' => \@header, + 'fields' => \@fields, + 'links' => \@links, + 'style' => \@style, ) %> diff --git a/httemplate/browse/part_pkg.cgi b/httemplate/browse/part_pkg.cgi index b67a5e55f..a5e212d17 100755 --- a/httemplate/browse/part_pkg.cgi +++ b/httemplate/browse/part_pkg.cgi @@ -1,5 +1,6 @@ <% +#false laziness w/access_user.html my %search = (); my $search = ''; unless ( $cgi->param('showdisabled') ) { @@ -71,6 +72,7 @@ my $align = 'rll'; my @links = ( $link, $link, '' ); my @style = ( '', '', '' ); +#false laziness w/access_user.html #unless ( $cgi->param('showdisabled') ) { #its been reversed already if ( $cgi->param('showdisabled') ) { #its been reversed already push @header, 'Status'; diff --git a/httemplate/edit/access_user.html b/httemplate/edit/access_user.html index 2b19dbf7b..fb2a97196 100644 --- a/httemplate/edit/access_user.html +++ b/httemplate/edit/access_user.html @@ -6,6 +6,7 @@ { field=>'_password', type=>'password' }, 'last', 'first', + { field=>'disabled', type=>'checkbox', value=>'Y' }, ], 'labels' => { 'usernum' => 'User number', @@ -13,6 +14,7 @@ '_password' => 'Password', 'last' => 'Last name', 'first' => 'First name', + 'disabled' => 'Disable employee', }, 'viewall_dir' => 'browse', 'html_bottom' => diff --git a/httemplate/edit/elements/edit.html b/httemplate/edit/elements/edit.html index f79cc0b24..c40a00492 100644 --- a/httemplate/edit/elements/edit.html +++ b/httemplate/edit/elements/edit.html @@ -15,7 +15,9 @@ # 'fields' => [ # 'columname', # { 'field' => 'another_columname', - # 'type' => 'text', #text, fixed, hidden + # 'type' => 'text', #text, fixed, hidden, checkbox + # #eventually more for , etc. fields - if ( $type eq 'fixed' ) { - %> + <% if ( $type eq 'fixed' ) { %> <%= $f->{'value'} %> + <% } elsif ( $type eq 'checkbox' ) { %> + + + $field() eq $f->{'value'} ? ' CHECKED' : '' %>> + + <% } else { %>