[Rt-commit] r18686 - in rt/3.999/trunk: lib/RT/Model share/html/Elements/RT__Model__Group
ruz at bestpractical.com
ruz at bestpractical.com
Wed Mar 4 22:48:25 EST 2009
Author: ruz
Date: Wed Mar 4 22:48:24 2009
New Revision: 18686
Modified:
rt/3.999/trunk/lib/RT/Model/ACE.pm
rt/3.999/trunk/lib/RT/Model/CachedGroupMember.pm
rt/3.999/trunk/lib/RT/Model/Group.pm
rt/3.999/trunk/lib/RT/Model/GroupMember.pm
rt/3.999/trunk/lib/RT/Model/Queue.pm
rt/3.999/trunk/lib/RT/SharedSetting.pm
rt/3.999/trunk/share/html/Elements/RT__Model__Group/ColumnMap
Log:
* drop has_member_recursively
Modified: rt/3.999/trunk/lib/RT/Model/ACE.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Model/ACE.pm (original)
+++ rt/3.999/trunk/lib/RT/Model/ACE.pm Wed Mar 4 22:48:24 2009
@@ -475,7 +475,7 @@
my $self = shift;
if ( $self->principal->is_group
- && $self->principal->object->has_member_recursively( $self->current_user->principal ) )
+ && $self->principal->object->has_member( $self->current_user->principal, recursively => 1 ) )
{
return ( $self->__value(@_) );
} elsif (
Modified: rt/3.999/trunk/lib/RT/Model/CachedGroupMember.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Model/CachedGroupMember.pm (original)
+++ rt/3.999/trunk/lib/RT/Model/CachedGroupMember.pm Wed Mar 4 22:48:24 2009
@@ -238,7 +238,7 @@
# Unless $self->group_obj still has the member recursively $self->member_obj
# (Since we deleted the database row above, $self no longer counts)
- unless ( $self->group_obj->object->has_member_recursively( $self->member_id ) ) {
+ unless ( $self->group_obj->object->has_member( $self->member_id, recursively => 1 ) ) {
# Find all ACEs granted to $self->group_id
my $acl = RT::Model::ACECollection->new( current_user => RT->system_user );
@@ -297,7 +297,7 @@
# Unless $self->group_obj still has the member recursively $self->member_obj
# (Since we Setdisabledd the database row above, $self no longer counts)
- unless ( $self->group_obj->object->has_member_recursively( $self->member_id ) ) {
+ unless ( $self->group_obj->object->has_member( $self->member_id, recursively => 1 ) ) {
# Find all ACEs granted to $self->group_id
my $acl = RT::Model::ACECollection->new( current_user => RT->system_user );
Modified: rt/3.999/trunk/lib/RT/Model/Group.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Model/Group.pm (original)
+++ rt/3.999/trunk/lib/RT/Model/Group.pm Wed Mar 4 22:48:24 2009
@@ -914,7 +914,7 @@
);
}
if ( $new_member_obj->is_group
- && $new_member_obj->object->has_member_recursively( $self->principal ) )
+ && $new_member_obj->object->has_member( $self->principal, recursively => 1 ) )
{
#This group can't be made to be a member of itself
@@ -935,11 +935,12 @@
}
+=head2 has_member
-=head2 has_member RT::Model::Principal|id
+Takes an L<RT::Model::Principal> object or its id and optional 'recursively'
+argument. Returns id of a GroupMember or CachedGroupMember record if that user
+is a member of this group. By default lookup is not recursive.
-Takes an L<RT::Model::Principal> object or its id returns a GroupMember id if that user is a
-member of this group.
Returns undef if the user isn't a member of the group or if the current
user doesn't have permission to find out. Arguably, it should differentiate
between ACL failure and non membership.
@@ -949,6 +950,10 @@
sub has_member {
my $self = shift;
my $principal = shift;
+ my %args = (
+ recursively => 0,
+ @_
+ );
my $id;
if ( UNIVERSAL::isa( $principal, 'RT::Model::Principal' ) ) {
@@ -966,47 +971,11 @@
}
return undef unless $id;
- my $member_obj = RT::Model::GroupMember->new;
- $member_obj->load_by_cols(
- member_id => $id,
- group_id => $self->id
- );
+ my $class = $args{'recursively'}
+ ? 'RT::Model::GroupMember'
+ : 'RT::Model::CachedGroupMember';
- if ( my $member_id = $member_obj->id ) {
- return $member_id;
- } else {
- return (undef);
- }
-}
-
-
-
-=head2 has_member_recursively RT::Model::Principal|id
-
-Takes an L<RT::Model::Principal> object or its id and returns true if that user is a member of
-this group.
-Returns undef if the user isn't a member of the group or if the current
-user doesn't have permission to find out. Arguably, it should differentiate
-between ACL failure and non membership.
-
-=cut
-
-sub has_member_recursively {
- my $self = shift;
- my $principal = shift || '';
-
- my $id;
- if ( UNIVERSAL::isa( $principal, 'RT::Model::Principal' ) ) {
- $id = $principal->id;
- } elsif ( $principal =~ /^\d+$/ ) {
- $id = $principal;
- } else {
- Jifty->log->error( "Group::has_member_recursively was called with an argument that" . " isn't an RT::Model::Principal or id. It's $principal" );
- return (undef);
- }
- return undef unless $id;
-
- my $member_obj = RT::Model::CachedGroupMember->new;
+ my $member_obj = new $class;
$member_obj->load_by_cols(
member_id => $id,
group_id => $self->id
@@ -1020,7 +989,6 @@
}
-
=head2 delete_member PRINCIPAL_ID
Takes the principal id of a current user or group.
@@ -1236,3 +1204,4 @@
RT
+=cut
Modified: rt/3.999/trunk/lib/RT/Model/GroupMember.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Model/GroupMember.pm (original)
+++ rt/3.999/trunk/lib/RT/Model/GroupMember.pm Wed Mar 4 22:48:24 2009
@@ -142,7 +142,7 @@
if ( $args{'member'}->is_group ) {
my $member_object = $args{'member'}->object;
- if ( $member_object->has_member_recursively( $args{'group'} ) ) {
+ if ( $member_object->has_member( $args{'group'}, recursively => 1 ) ) {
Jifty->log->debug("Adding that group would create a loop");
Jifty->handle->rollback() unless $inside_transaction;
return (undef);
Modified: rt/3.999/trunk/lib/RT/Model/Queue.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Model/Queue.pm (original)
+++ rt/3.999/trunk/lib/RT/Model/Queue.pm Wed Mar 4 22:48:24 2009
@@ -853,7 +853,7 @@
return (undef);
}
- return ( $group->has_member_recursively($principal) );
+ return $group->has_member( $principal, recursively => 1 );
}
Modified: rt/3.999/trunk/lib/RT/SharedSetting.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/SharedSetting.pm (original)
+++ rt/3.999/trunk/lib/RT/SharedSetting.pm Wed Mar 4 22:48:24 2009
@@ -382,7 +382,7 @@
# then any principal that is a member of the setting's group can see
# the setting
- return $setting_group->has_member_recursively($to_id);
+ return $setting_group->has_member( $to_id, recursively => 1 );
}
}
@@ -431,8 +431,8 @@
}
if ( $obj_type eq 'RT::Model::Group'
- && !$object->has_member_recursively(
- $self->current_user->principal ) )
+ && !$object->has_member(
+ $self->current_user->principal, recursively => 1 ) )
{
Jifty->log->debug( "Permission denied, "
. $self->current_user->name
Modified: rt/3.999/trunk/share/html/Elements/RT__Model__Group/ColumnMap
==============================================================================
--- rt/3.999/trunk/share/html/Elements/RT__Model__Group/ColumnMap (original)
+++ rt/3.999/trunk/share/html/Elements/RT__Model__Group/ColumnMap Wed Mar 4 22:48:24 2009
@@ -70,7 +70,7 @@
value => sub {
my $group = $_[0];
my $uid = $_[2] || return '';
- return $group->has_member_recursively( $uid )? $_[0]->_('yes'): $_[0]->_('no');
+ return $group->has_member( $uid, recursively => 1 )? $_[0]->_('yes'): $_[0]->_('no');
},
},
name => {
More information about the Rt-commit
mailing list