From 3ef62a0570055da710328937e7f65dbb2c027c62 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 12 Aug 2002 06:17:09 +0000 Subject: import rt 2.0.14 --- rt/lib/RT/Users.pm | 281 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 281 insertions(+) create mode 100755 rt/lib/RT/Users.pm (limited to 'rt/lib/RT/Users.pm') diff --git a/rt/lib/RT/Users.pm b/rt/lib/RT/Users.pm new file mode 100755 index 000000000..f4a97268c --- /dev/null +++ b/rt/lib/RT/Users.pm @@ -0,0 +1,281 @@ + +# $Header: /home/cvs/cvsroot/freeside/rt/lib/RT/Users.pm,v 1.1 2002-08-12 06:17:07 ivan Exp $ +# (c) 1996-1999 Jesse Vincent +# This software is redistributable under the terms of the GNU GPL + +=head1 NAME + + RT::Users - Collection of RT::User objects + +=head1 SYNOPSIS + + use RT::Users; + + +=head1 DESCRIPTION + + +=head1 METHODS + +=begin testing + +ok(require RT::TestHarness); +ok(require RT::Users); + +=end testing + +=cut + +package RT::Users; +use RT::EasySearch; +@ISA = qw(RT::EasySearch); + +# {{{ sub _Init +sub _Init { + my $self = shift; + $self->{'table'} = "Users"; + $self->{'primary_key'} = "id"; + + # By default, order by name + $self->OrderBy( ALIAS => 'main', + FIELD => 'Name', + ORDER => 'ASC'); + + return ($self->SUPER::_Init(@_)); + +} +# }}} + +# {{{ sub _DoSearch + +=head2 _DoSearch + + A subclass of DBIx::SearchBuilder::_DoSearch that makes sure that _Disabled rows never get seen unless +we're explicitly trying to see them. + +=cut + +sub _DoSearch { + my $self = shift; + + #unless we really want to find disabled rows, make sure we\'re only finding enabled ones. + unless($self->{'find_disabled_rows'}) { + $self->LimitToEnabled(); + } + + return($self->SUPER::_DoSearch(@_)); + +} + +# }}} + +# {{{ sub NewItem + +sub NewItem { + my $self = shift; + + use RT::User; + my $item = new RT::User($self->CurrentUser); + return($item); +} +# }}} + +# {{{ LimitToEmail +=head2 LimitToEmail + +Takes one argument. an email address. limits the returned set to +that email address + +=cut + +sub LimitToEmail { + my $self = shift; + my $addr = shift; + $self->Limit(FIELD => 'EmailAddress', VALUE => "$addr"); +} + +# }}} + +# {{{ MemberOfGroup + +=head2 MemberOfGroup + +takes one argument, a group id number. Limits the returned set +to members of a given group + +=cut + +sub MemberOfGroup { + my $self = shift; + my $group = shift; + + return ("No group specified") if (!defined $group); + + my $groupalias = $self->NewAlias('GroupMembers'); + + $self->Join( ALIAS1 => 'main', FIELD1 => 'id', + ALIAS2 => "$groupalias", FIELD2 => 'Name'); + + $self->Limit (ALIAS => "$groupalias", + FIELD => 'GroupId', + VALUE => "$group", + OPERATOR => "=" + ); +} + +# }}} + +# {{{ LimitToPrivileged + +=head2 LimitToPrivileged + +Limits to users who can be made members of ACLs and groups + +=cut + +sub LimitToPrivileged { + my $self = shift; + $self->Limit( FIELD => 'Privileged', + OPERATOR => '=', + VALUE => '1'); +} + +# }}} + + + +# {{{ LimitToSystem + +=head2 LimitToSystem + +Limits to users who can be granted rights, but who should +never have their rights modified by a user or be made members of groups. + +=cut + +sub LimitToSystem { + my $self = shift; + $self->Limit( FIELD => 'Privileged', + OPERATOR => '=', + VALUE => '2'); +} + +# }}} + +# {{{ HasQueueRight + +=head2 HasQueueRight + +Takes a queue id as its first argument. Queue Id "0" is treated by RT as "applies to all queues" +Takes a specific right as an optional second argument + +Limits the returned set to users who have rights in the queue specified, personally. If the optional second argument is supplied, limits to users who have been explicitly granted that right. + + + +This should not be used as an ACL check, but only for obtaining lists of +users with explicit rights in a given queue. + +=cut + +sub HasQueueRight { + my $self = shift; + my $queue = shift; + my $right; + + $right = shift if (@_); + + + my $acl_alias = $self->NewAlias('ACL'); + $self->Join( ALIAS1 => 'main', FIELD1 => 'id', + ALIAS2 => $acl_alias, FIELD2 => 'PrincipalId'); + $self->Limit (ALIAS => $acl_alias, + FIELD => 'PrincipalType', + OPERATOR => '=', + VALUE => 'User'); + + + $self->Limit(ALIAS => $acl_alias, + FIELD => 'RightAppliesTo', + OPERATOR => '=', + VALUE => "$queue"); + + + $self->Limit(ALIAS => $acl_alias, + FIELD => 'RightScope', + OPERATOR => '=', + ENTRYAGGREGATOR => 'OR', + VALUE => 'Queue'); + + + $self->Limit(ALIAS => $acl_alias, + FIELD => 'RightScope', + OPERATOR => '=', + ENTRYAGGREGATOR => 'OR', + VALUE => 'Ticket'); + + + #TODO: is this being initialized properly if the right isn't there? + if (defined ($right)) { + + $self->Limit(ALIAS => $acl_alias, + FIELD => 'RightName', + OPERATOR => '=', + VALUE => "$right"); + + + }; + + +} + + + +# }}} + +# {{{ HasSystemRight + +=head2 HasSystemRight + +Takes one optional argument: + The name of a System level right. + +Limits the returned set to users who have been granted system rights, personally. If the optional argument is passed in, limits to users who have been granted the explicit right listed. Please see the note attached to LimitToQueueRights + +=cut + +sub HasSystemRight { + my $self = shift; + my $right = shift if (@_); + my $acl_alias = $self->NewAlias('ACL'); + + + $self->Join( ALIAS1 => 'main', FIELD1 => 'id', + ALIAS2 => $acl_alias, FIELD2 => 'PrincipalId'); + $self->Limit (ALIAS => $acl_alias, + FIELD => 'PrincipalType', + OPERATOR => '=', + VALUE => 'User'); + + $self->Limit(ALIAS => $acl_alias, + FIELD => 'RightScope', + OPERATOR => '=', + VALUE => 'System'); + + + #TODO: is this being initialized properly if the right isn't there? + if (defined ($right)) { + $self->Limit(ALIAS => $acl_alias, + FIELD => 'RightName', + OPERATOR => '=', + VALUE => "$right"); + + } + + +} + +# }}} + +1; + -- cgit v1.2.1 From 945721f48f74d5cfffef7c7cf3a3d6bc2521f5dd Mon Sep 17 00:00:00 2001 From: ivan Date: Tue, 15 Jul 2003 13:16:32 +0000 Subject: import of rt 3.0.4 --- rt/lib/RT/Users.pm | 298 ++++++++++++----------------------------------------- 1 file changed, 66 insertions(+), 232 deletions(-) (limited to 'rt/lib/RT/Users.pm') diff --git a/rt/lib/RT/Users.pm b/rt/lib/RT/Users.pm index f4a97268c..d58f69653 100755 --- a/rt/lib/RT/Users.pm +++ b/rt/lib/RT/Users.pm @@ -1,281 +1,115 @@ +# BEGIN LICENSE BLOCK +# +# Copyright (c) 1996-2003 Jesse Vincent +# +# (Except where explictly superceded by other copyright notices) +# +# This work is made available to you under the terms of Version 2 of +# the GNU General Public License. A copy of that license should have +# been provided with this software, but in any event can be snarfed +# from www.gnu.org. +# +# This work is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. +# +# +# END LICENSE BLOCK +# Autogenerated by DBIx::SearchBuilder factory (by ) +# WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. +# +# !! DO NOT EDIT THIS FILE !! +# + +use strict; -# $Header: /home/cvs/cvsroot/freeside/rt/lib/RT/Users.pm,v 1.1 2002-08-12 06:17:07 ivan Exp $ -# (c) 1996-1999 Jesse Vincent -# This software is redistributable under the terms of the GNU GPL =head1 NAME - RT::Users - Collection of RT::User objects - + RT::Users -- Class Description + =head1 SYNOPSIS - use RT::Users; - + use RT::Users =head1 DESCRIPTION =head1 METHODS -=begin testing - -ok(require RT::TestHarness); -ok(require RT::Users); - -=end testing - =cut package RT::Users; -use RT::EasySearch; -@ISA = qw(RT::EasySearch); - -# {{{ sub _Init -sub _Init { - my $self = shift; - $self->{'table'} = "Users"; - $self->{'primary_key'} = "id"; - - # By default, order by name - $self->OrderBy( ALIAS => 'main', - FIELD => 'Name', - ORDER => 'ASC'); - - return ($self->SUPER::_Init(@_)); - -} -# }}} - -# {{{ sub _DoSearch - -=head2 _DoSearch - - A subclass of DBIx::SearchBuilder::_DoSearch that makes sure that _Disabled rows never get seen unless -we're explicitly trying to see them. - -=cut - -sub _DoSearch { - my $self = shift; - - #unless we really want to find disabled rows, make sure we\'re only finding enabled ones. - unless($self->{'find_disabled_rows'}) { - $self->LimitToEnabled(); - } - - return($self->SUPER::_DoSearch(@_)); - -} - -# }}} - -# {{{ sub NewItem - -sub NewItem { - my $self = shift; - use RT::User; - my $item = new RT::User($self->CurrentUser); - return($item); -} -# }}} - -# {{{ LimitToEmail -=head2 LimitToEmail +use RT::SearchBuilder; +use RT::User; -Takes one argument. an email address. limits the returned set to -that email address +use vars qw( @ISA ); +@ISA= qw(RT::SearchBuilder); -=cut -sub LimitToEmail { +sub _Init { my $self = shift; - my $addr = shift; - $self->Limit(FIELD => 'EmailAddress', VALUE => "$addr"); -} - -# }}} - -# {{{ MemberOfGroup - -=head2 MemberOfGroup - -takes one argument, a group id number. Limits the returned set -to members of a given group - -=cut - -sub MemberOfGroup { - my $self = shift; - my $group = shift; - - return ("No group specified") if (!defined $group); - - my $groupalias = $self->NewAlias('GroupMembers'); - - $self->Join( ALIAS1 => 'main', FIELD1 => 'id', - ALIAS2 => "$groupalias", FIELD2 => 'Name'); - - $self->Limit (ALIAS => "$groupalias", - FIELD => 'GroupId', - VALUE => "$group", - OPERATOR => "=" - ); -} - -# }}} - -# {{{ LimitToPrivileged - -=head2 LimitToPrivileged - -Limits to users who can be made members of ACLs and groups + $self->{'table'} = 'Users'; + $self->{'primary_key'} = 'id'; -=cut -sub LimitToPrivileged { - my $self = shift; - $self->Limit( FIELD => 'Privileged', - OPERATOR => '=', - VALUE => '1'); + return ( $self->SUPER::_Init(@_) ); } -# }}} - - - -# {{{ LimitToSystem -=head2 LimitToSystem +=item NewItem -Limits to users who can be granted rights, but who should -never have their rights modified by a user or be made members of groups. +Returns an empty new RT::User item =cut -sub LimitToSystem { +sub NewItem { my $self = shift; - $self->Limit( FIELD => 'Privileged', - OPERATOR => '=', - VALUE => '2'); + return(RT::User->new($self->CurrentUser)); } -# }}} - -# {{{ HasQueueRight - -=head2 HasQueueRight - -Takes a queue id as its first argument. Queue Id "0" is treated by RT as "applies to all queues" -Takes a specific right as an optional second argument - -Limits the returned set to users who have rights in the queue specified, personally. If the optional second argument is supplied, limits to users who have been explicitly granted that right. - - - -This should not be used as an ACL check, but only for obtaining lists of -users with explicit rights in a given queue. - -=cut - -sub HasQueueRight { - my $self = shift; - my $queue = shift; - my $right; - - $right = shift if (@_); - + eval "require RT::Users_Overlay"; + if ($@ && $@ !~ qr{^Can't locate RT/Users_Overlay.pm}) { + die $@; + }; - my $acl_alias = $self->NewAlias('ACL'); - $self->Join( ALIAS1 => 'main', FIELD1 => 'id', - ALIAS2 => $acl_alias, FIELD2 => 'PrincipalId'); - $self->Limit (ALIAS => $acl_alias, - FIELD => 'PrincipalType', - OPERATOR => '=', - VALUE => 'User'); + eval "require RT::Users_Vendor"; + if ($@ && $@ !~ qr{^Can't locate RT/Users_Vendor.pm}) { + die $@; + }; + eval "require RT::Users_Local"; + if ($@ && $@ !~ qr{^Can't locate RT/Users_Local.pm}) { + die $@; + }; - $self->Limit(ALIAS => $acl_alias, - FIELD => 'RightAppliesTo', - OPERATOR => '=', - VALUE => "$queue"); - $self->Limit(ALIAS => $acl_alias, - FIELD => 'RightScope', - OPERATOR => '=', - ENTRYAGGREGATOR => 'OR', - VALUE => 'Queue'); +=head1 SEE ALSO - $self->Limit(ALIAS => $acl_alias, - FIELD => 'RightScope', - OPERATOR => '=', - ENTRYAGGREGATOR => 'OR', - VALUE => 'Ticket'); +This class allows "overlay" methods to be placed +into the following files _Overlay is for a System overlay by the original author, +_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations. +These overlay files can contain new subs or subs to replace existing subs in this module. - #TODO: is this being initialized properly if the right isn't there? - if (defined ($right)) { - - $self->Limit(ALIAS => $acl_alias, - FIELD => 'RightName', - OPERATOR => '=', - VALUE => "$right"); - - - }; +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line + no warnings qw(redefine); -} - - - -# }}} - -# {{{ HasSystemRight +so that perl does not kick and scream when you redefine a subroutine or variable in your overlay. -=head2 HasSystemRight - -Takes one optional argument: - The name of a System level right. - -Limits the returned set to users who have been granted system rights, personally. If the optional argument is passed in, limits to users who have been granted the explicit right listed. Please see the note attached to LimitToQueueRights +RT::Users_Overlay, RT::Users_Vendor, RT::Users_Local =cut -sub HasSystemRight { - my $self = shift; - my $right = shift if (@_); - my $acl_alias = $self->NewAlias('ACL'); - - - $self->Join( ALIAS1 => 'main', FIELD1 => 'id', - ALIAS2 => $acl_alias, FIELD2 => 'PrincipalId'); - $self->Limit (ALIAS => $acl_alias, - FIELD => 'PrincipalType', - OPERATOR => '=', - VALUE => 'User'); - - $self->Limit(ALIAS => $acl_alias, - FIELD => 'RightScope', - OPERATOR => '=', - VALUE => 'System'); - - - #TODO: is this being initialized properly if the right isn't there? - if (defined ($right)) { - $self->Limit(ALIAS => $acl_alias, - FIELD => 'RightName', - OPERATOR => '=', - VALUE => "$right"); - - } - - -} - -# }}} 1; - -- cgit v1.2.1 From d39d52aac8f38ea9115628039f0df5aa3ac826de Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 3 Dec 2004 20:40:48 +0000 Subject: import rt 3.2.2 --- rt/lib/RT/Users.pm | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) (limited to 'rt/lib/RT/Users.pm') diff --git a/rt/lib/RT/Users.pm b/rt/lib/RT/Users.pm index d58f69653..95aec3b22 100755 --- a/rt/lib/RT/Users.pm +++ b/rt/lib/RT/Users.pm @@ -1,8 +1,14 @@ -# BEGIN LICENSE BLOCK +# {{{ BEGIN BPS TAGGED BLOCK # -# Copyright (c) 1996-2003 Jesse Vincent +# COPYRIGHT: +# +# This software is Copyright (c) 1996-2004 Best Practical Solutions, LLC +# # -# (Except where explictly superceded by other copyright notices) +# (Except where explicitly superseded by other copyright notices) +# +# +# LICENSE: # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -14,13 +20,29 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# +# CONTRIBUTION SUBMISSION POLICY: +# +# (The following paragraph is not intended to limit the rights granted +# to you to modify and distribute this software under the terms of +# the GNU General Public License and is only of importance to you if +# you choose to contribute your changes and enhancements to the +# community by submitting them to Best Practical Solutions, LLC.) # +# By intentionally submitting any modifications, corrections or +# derivatives to this work, or any other work intended for use with +# Request Tracker, to Best Practical Solutions, LLC, you confirm that +# you are the copyright holder for those contributions and you grant +# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, +# royalty-free, perpetual, license to use, copy, create derivative +# works based on those contributions, and sublicense and distribute +# those contributions and any derivatives thereof. # -# END LICENSE BLOCK +# }}} END BPS TAGGED BLOCK # Autogenerated by DBIx::SearchBuilder factory (by ) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -64,7 +86,7 @@ sub _Init { } -=item NewItem +=head2 NewItem Returns an empty new RT::User item -- cgit v1.2.1 From d4d0590bef31071e8809ec046717444b95b3f30a Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 15 Oct 2005 09:11:20 +0000 Subject: import rt 3.4.4 --- rt/lib/RT/Users.pm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'rt/lib/RT/Users.pm') diff --git a/rt/lib/RT/Users.pm b/rt/lib/RT/Users.pm index 95aec3b22..abe471f18 100755 --- a/rt/lib/RT/Users.pm +++ b/rt/lib/RT/Users.pm @@ -1,8 +1,8 @@ -# {{{ BEGIN BPS TAGGED BLOCK +# BEGIN BPS TAGGED BLOCK {{{ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2004 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2005 Best Practical Solutions, LLC # # # (Except where explicitly superseded by other copyright notices) @@ -42,7 +42,7 @@ # works based on those contributions, and sublicense and distribute # those contributions and any derivatives thereof. # -# }}} END BPS TAGGED BLOCK +# END BPS TAGGED BLOCK }}} # Autogenerated by DBIx::SearchBuilder factory (by ) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -123,7 +123,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line +Each of these files should begin with the line no warnings qw(redefine); -- cgit v1.2.1