1 package SL::DB::AuthGroup;
 
   5 use SL::DB::MetaSetup::AuthGroup;
 
   6 use SL::DB::Manager::AuthGroup;
 
   7 use SL::DB::Helper::Util;
 
   9 __PACKAGE__->meta->add_relationship(
 
  11     type      => 'many to many',
 
  12     map_class => 'SL::DB::AuthUserGroup',
 
  17     type       => 'one to many',
 
  18     class      => 'SL::DB::AuthGroupRight',
 
  19     column_map => { id => 'group_id' },
 
  22     type      => 'many to many',
 
  23     map_class => 'SL::DB::AuthClientGroup',
 
  29 __PACKAGE__->meta->initialize;
 
  35   push @errors, $::locale->text('The name is missing.')    if !$self->name;
 
  36   push @errors, $::locale->text('The name is not unique.') if !SL::DB::Helper::Util::is_unique($self, 'name');
 
  42   my @logins = map { $_->login } $_[0]->users;
 
  43   return @logins ? @{ SL::DB::Manager::Employee->get_all(query => [ login => \@logins ]) } : ();
 
  50     my %new_rights = ref($_[0]) eq 'HASH' ? %{ $_[0] } : @_;
 
  51     $self->rights([ map { SL::DB::AuthGroupRight->new(right => $_, granted => $new_rights{$_} ? 1 : 0) } SL::Auth::all_rights() ]);
 
  55     map({ ($_        => 0)           } SL::Auth::all_rights()),
 
  56     map({ ($_->right => $_->granted) } @{ $self->rights || [] })
 
  69 SL::DB::AuthGroup - RDBO model for auth.group
 
  73   # Outputting all rights granted to this group:
 
  74   my $group  = SL::DB::Manager::AuthGroup->get_first;
 
  75   my %rights = %{ $group->rights_map };
 
  76   print "Granted rights:\n";
 
  77   print "  $_\n" for sort grep { $rights{$_} } keys %rights;
 
  79   # Set a right to 'yes':
 
  80   $group->rights_map(%{ $group->rights_map }, invoice_edit => 1);
 
  87 =item C<get_employees>
 
  89 Returns all employees (as instances of L<SL::DB::Employee>) whose
 
  90 corresponding logins are members in this group.
 
  92 =item C<rights_map [$new_rights]>
 
  94 Gets/sets the rights for this group as hashes. Returns a hash
 
  95 references containing the right names as the keys and trueish/falsish
 
  96 values for 'granted'/'not granted'.
 
  98 If C<$new_rights> is given as a hash reference or a plain hash then it
 
  99 will also set all rights from this hash.
 
 103 Validates the object before saving (checks uniqueness, attribute
 
 104 presence etc). Returns a list of human-readable errors and an empty
 
 115 Moritz Bunkus E<lt>m.bunkus@linet-services.deE<gt>