X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FManager%2FEmployee.pm;h=a8c690ade9950cf52da5d4e5dec372f3e6a93f0a;hb=0b34e29fb04ad9ac9912f67b767f9f401700ca97;hp=6577c7757bc840883d017294850b25338a9eeaae;hpb=ac5522802741d3092b371ab6b57199cb8a587bf9;p=kivitendo-erp.git diff --git a/SL/DB/Manager/Employee.pm b/SL/DB/Manager/Employee.pm index 6577c7757..a8c690ade 100644 --- a/SL/DB/Manager/Employee.pm +++ b/SL/DB/Manager/Employee.pm @@ -3,15 +3,92 @@ package SL::DB::Manager::Employee; use strict; 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 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; + 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