Changeset 316


Ignore:
Timestamp:
08/08/09 18:56:00 (15 years ago)
Author:
nanardon
Message:
  • implement acls in base
Location:
LATMOS-Accounts/lib/LATMOS/Accounts
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases.pm

    r304 r316  
    4747    $base->{wexported} = 0; 
    4848    $base->{defattr} = $options{defattr}; 
     49    $base->{_acls} = $options{acls}; 
    4950    la_log(LA_DEBUG, 'Instanciate base %s (%s)', ($options{label} || 'N/A'), $pclass); 
    5051    $base 
     
    434435} 
    435436 
     437sub check_acl { 
     438    my ($self, $obj, $attr, $perm) = @_; 
     439    if ($self->{_acls}) { 
     440        my $who = $self->{_users} || ''; 
     441        my $groups; 
     442        return $self->{_acls}->check($obj, $attr, $perm, $who, $groups); 
     443    } else { 
     444        # No acls, woot 
     445        return 1; 
     446    } 
     447} 
    4364481; 
    437449 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Objects.pm

    r311 r316  
    193193    my ($self, $cfield) = @_; 
    194194    my $field = $self->base->get_field_name($self->type, $cfield, 'r') or return; 
     195    $self->base->check_acl($self, $cfield, 'r') or return; 
    195196    $self->get_field($field); 
    196197} 
     
    216217    my ($self, %cdata) = @_; 
    217218    my %data; 
     219    foreach my $cfield (keys %cdata) { 
     220        $self->base->check_acl($self, $cfield, 'w') or return; 
     221    } 
    218222    foreach my $cfield (keys %cdata) { 
    219223        my $field = $self->base->get_field_name($self->type, $cfield) or next; 
Note: See TracChangeset for help on using the changeset viewer.