X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FManager%2FEmployee.pm;h=400843bbad87e9d45bad5c39c0f2067538a6f515;hb=53593baa211863fbf66540cf1bcc36c8fb37257f;hp=e52eebb1faa794513f38995357848435e74836fd;hpb=c377a2dac9813ef97651e747ece0def8acbad5d6;p=kivitendo-erp.git diff --git a/SL/DB/Manager/Employee.pm b/SL/DB/Manager/Employee.pm index e52eebb1f..400843bba 100644 --- a/SL/DB/Manager/Employee.pm +++ b/SL/DB/Manager/Employee.pm @@ -2,16 +2,95 @@ package SL::DB::Manager::Employee; use strict; -use SL::DB::Helpers::Manager; -use base qw(SL::DB::Helpers::Manager); +use SL::DB::Helper::Manager; +use SL::DB::Helper::Sorted; +use base qw(SL::DB::Helper::Manager); sub object_class { 'SL::DB::Employee' } __PACKAGE__->make_manager_methods; +sub _sort_spec { + ( + default => [ 'name', 1 ], + columns => { + SIMPLE => 'ALL', + map { +($_ => "lower(employee.$_)") } qw(deleted_email deleted_fax deleted_signature deleted_tel login name) + }, + ); +} + sub current { - return undef unless $::form && $::form->{login}; - return shift->find_by(login => $::form->{login}); + return undef unless $::myconfig{login}; + return $::request->cache('current')->{object} //= shift->find_by(login => $::myconfig{login}); +} + +sub update_entries_for_authorized_users { + my ($class) = @_; + + my %employees_by_login = map { ($_->login => $_) } @{ $class->get_all }; + + require SL::DB::AuthClient; + no warnings 'once'; + + foreach my $user (@{ SL::DB::AuthClient->new(id => $::auth->client->{id})->load->users || [] }) { + my $user_config = $user->config_values; + my $employee = $employees_by_login{$user->login} || SL::DB::Employee->new(login => $user->login); + + $employee->update_attributes( + name => $user_config->{name}, + deleted => 0, + ); + } } 1; +__END__ + +=pod + +=encoding utf8 + +=head1 NAME + +SL::DB::Manager::Employee - RDBO manager for the C table + +=head1 SYNOPSIS + + my $logged_in_employee = SL::DB::Manager::Employee->current; + +=head1 FUNCTIONS + +=over 4 + +=item C + +Returns an RDBO instance corresponding to the currently logged-in user. + +=item C + +For each user created by the administrator in the admin section an +entry only exists in the authentication table, but not in the employee +table. This is where this function comes in: It iterates over all +authentication users that have access to the current client and ensures +that an entry for them exists in the table C. The matching +is done via the login name which must be the same in both tables. + +The only other properties that will be copied from the authentication +table into the C row are C and C. In +addition C is always set to 0. + +The intention is that this function is called automatically during the +login process. + +=back + +=head1 BUGS + +Nothing here yet. + +=head1 AUTHOR + +Moritz Bunkus Em.bunkus@linet-services.deE + +=cut