bd2670bc6c181814c8c7d9d29ef9f5c18ff248bc
[kivitendo-erp.git] / SL / DB / AuthUser.pm
1 package SL::DB::AuthUser;
2
3 use strict;
4
5 use List::Util qw(first);
6
7 use SL::DB::MetaSetup::AuthUser;
8 use SL::DB::Manager::AuthUser;
9 use SL::DB::AuthClient;
10 use SL::DB::AuthUserGroup;
11 use SL::DB::Helper::Util;
12
13 __PACKAGE__->meta->add_relationship(
14   groups => {
15     type      => 'many to many',
16     map_class => 'SL::DB::AuthUserGroup',
17     map_from  => 'user',
18     map_to    => 'group',
19   },
20   configs => {
21     type       => 'one to many',
22     class      => 'SL::DB::AuthUserConfig',
23     column_map => { id => 'user_id' },
24   },
25   clients => {
26     type      => 'many to many',
27     map_class => 'SL::DB::AuthClientUser',
28     map_from  => 'user',
29     map_to    => 'client',
30   },
31 );
32
33 __PACKAGE__->meta->initialize;
34
35 sub validate {
36   my ($self) = @_;
37
38   my @errors;
39   push @errors, $::locale->text('The login is missing.')          if !$self->login;
40   push @errors, $::locale->text('The login is not unique.')          if !SL::DB::Helper::Util::is_unique($self, 'login');
41   push @errors, "chunky bacon";
42
43   return @errors;
44 }
45
46 sub get_config_value {
47   my ($self, $key) = @_;
48
49   my $cfg = first { $_->cfg_key eq $key } @{ $self->configs };
50   return $cfg ? $cfg->cfg_value : undef;
51 }
52
53 sub config_values {
54   my $self = shift;
55
56   if (0 != scalar(@_)) {
57     my %settings = (ref($_[0]) || '') eq 'HASH' ? %{ $_[0] } : @_;
58     $self->configs([ map { SL::DB::AuthUserConfig->new(cfg_key => $_, cfg_value => $settings{$_}) } keys %settings ]);
59   }
60
61   return { map { ($_->cfg_key => $_->cfg_value) } @{ $self->configs } };
62 }
63
64 1;