Changeset 488


Ignore:
Timestamp:
10/04/09 17:11:58 (15 years ago)
Author:
nanardon
Message:
  • check ACL for object creation/deletion
Location:
LATMOS-Accounts/lib/LATMOS/Accounts
Files:
6 edited

Legend:

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

    r481 r488  
    3434 
    3535Special keyword C<@CREATE> and C<@DELETE> can be used to allow or deny object 
    36 creation and deletion. In this case USER in form C<$...> and read permission 
    37 have no effect (see below). C<*> do not include C<@CREATE> and C<@DELETE> action. 
     36creation and deletion. In this case read permission and USER in form C<$...> for 
     37C<@CREATE> have no effect (see below). C<*> do not include C<@CREATE> and 
     38C<@DELETE> action. 
    3839 
    3940=item USER can be 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases.pm

    r487 r488  
    226226sub create_c_object { 
    227227    my ($self, $otype, $id, %cdata) = @_; 
     228    $self->check_acl($otype, '@CREATE', 'w') or do { 
     229        $self->log(LA_WARN, 'permission denied to create object type %s', 
     230            $otype); 
     231        return; 
     232    }; 
     233    $self->_create_c_object($otype, $id, %cdata); 
     234} 
     235 
     236sub _create_c_object { 
     237    my ($self, $otype, $id, %cdata) = @_; 
    228238 
    229239    # populating default value 
     
    258268 
    259269sub delete_object { 
     270    my ($self, $otype, $id) = @_; 
     271    my $obj = $self->get_object($otype, $id) or do { 
     272        $self->log(LA_WARN, 'Cannot delete %s/%s: no such object', 
     273            $otype, $id); 
     274        return; 
     275    }; 
     276    $self->check_acl($obj, '@DELETE', 'w') or do { 
     277        $self->log(LA_WARN, 'permission denied to delete %s/%s', 
     278            $otype, $id); 
     279        return; 
     280    }; 
     281    $self->_delete_object($otype, $id); 
     282} 
     283 
     284sub _delete_object { 
    260285    my ($self, $otype, $id) = @_; 
    261286    my $pclass = $self->_load_obj_class($otype); 
     
    384409        } 
    385410    } elsif(!$options{nocreate}) { 
    386         if ($self->create_c_object($srcobj->type, $srcobj->id, %data)) { 
     411        if ($self->_create_c_object($srcobj->type, $srcobj->id, %data)) { 
    387412            return 'CREATE' 
    388413        } else { 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Mail.pm

    r351 r488  
    122122} 
    123123 
    124 sub delete_object { 
     124sub _delete_object { 
    125125    my ($self, $otype, $id) = @_; 
    126126     
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/User.pm

    r469 r488  
    278278                    $res += $f->set_c_fields(forward => $data{$attr}); 
    279279                } else { 
    280                     if ($self->base->create_c_object('aliases', $self->id, 
     280                    if ($self->base->_create_c_object('aliases', $self->id, 
    281281                        forward => $data{$attr})) { 
    282282                        $res++; 
     
    287287                } 
    288288            } else { 
    289                 if ($self->base->delete_object('aliases', $self->id)) { 
     289                if ($self->base->_delete_object('aliases', $self->id)) { 
    290290                    $res++; 
    291291                } else { 
     
    301301                $fmainaddress = $self->id . '-' . join('', map { ('a'..'z')[rand(26)] } 
    302302                (0..4)); 
    303                 $self->base->create_c_object( 
     303                $self->base->_create_c_object( 
    304304                    'address', $fmainaddress, 
    305305                    user => $self->id, 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Unix.pm

    r459 r488  
    333333} 
    334334 
    335 sub delete_object { 
     335sub _delete_object { 
    336336    my ($self, $otype, $id, %data) = @_; 
    337337 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Synchro.pm

    r317 r488  
    177177            foreach (keys %exists) { 
    178178                if (!$srcexists{$_}) { 
    179                     if ($destbase->delete_object($otype, $_)) { 
     179                    if ($destbase->_delete_object($otype, $_)) { 
    180180                        print "delete " . $destbase->label . '::' . $otype . '::' . "$_\n"; 
    181181                    } else { 
Note: See TracChangeset for help on using the changeset viewer.