Changeset 2343
- Timestamp:
- 04/09/20 18:01:14 (4 years ago)
- Location:
- trunk/LATMOS-Accounts
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Acls/Acl.pm
r1865 r2343 86 86 # Foreach user, testing if this permission match: 87 87 foreach my $u (@{ $self->{users} }) { 88 defined($u->{$perm}) or next; 88 89 # Obj have attr eq login user 89 90 if (substr($u->{user}, 0, 1) eq '$') { # check attr content … … 92 93 my $val = $obj->_get_c_field($attribute) or return; 93 94 my @vals = ref $val ? (@{ $val }) : ($val); 94 return $u->{$perm} if (defined($u->{$perm}) && grep { $_ eq $who } @vals); 95 foreach (@vals) { 96 my $uobj = $obj->base->get_object('user', $_) or next; 97 return $u->{$perm} if ($uobj->id eq $who); 98 } 95 99 } 96 100 # user is in group 97 101 } elsif (substr($u->{user}, 0, 1) eq '%') { # group 98 102 my $group = substr($u->{user}, 1); 99 return $u->{$perm} if ( defined($u->{$perm}) &&grep { $group eq $_ } grep { $_ } @{$groups ||[]});103 return $u->{$perm} if (grep { $group eq $_ } grep { $_ } @{$groups ||[]}); 100 104 # any user 101 105 } elsif ($u->{user} eq '*' || $u->{user} eq $who) { 102 106 # TODO deference alias for SQL base 103 107 # $obj->base->get_objects(...) ? 104 return $u->{$perm} if (defined($u->{$perm}));108 return $u->{$perm}; 105 109 # any authenticated user 106 110 } elsif (lc($u->{user}) eq '@authenticated' && $who) { 107 return $u->{$perm} if (defined($u->{$perm}));111 return $u->{$perm}; 108 112 # not login 109 113 } elsif (lc($u->{user}) eq '@anonymous' && $who eq "") { 110 return $u->{$perm} if (defined($u->{$perm}));114 return $u->{$perm}; 111 115 } 112 116 } -
trunk/LATMOS-Accounts/t/21_acls.t
r1048 r2343 54 54 } 55 55 56 sub base { return $_[0] } 57 58 sub get_object { return $_[0] } 59 56 60 sub type { 57 61 $_[0]->{type}
Note: See TracChangeset
for help on using the changeset viewer.