X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Faccess_user.pm;h=874da66877b1dc063e97cba81e89cf0a27194fc8;hb=c3be3a36f7725506690c1dfbb0844dd1ef97e0c5;hp=f32fa3a23278a6a97562b245488260d62297c085;hpb=264ad081e68057c7bc30a8b2ad741b783e1342ff;p=freeside.git diff --git a/FS/FS/access_user.pm b/FS/FS/access_user.pm index f32fa3a23..874da6687 100644 --- a/FS/FS/access_user.pm +++ b/FS/FS/access_user.pm @@ -5,6 +5,7 @@ use vars qw( @ISA $htpasswd_file ); use FS::Record qw( qsearch qsearchs dbh ); use FS::m2m_Common; use FS::access_usergroup; +use FS::agent; @ISA = qw( FS::m2m_Common FS::Record ); @@ -296,8 +297,12 @@ Returns an sql fragement to select only agentnums this user can view. sub agentnums_sql { my $self = shift; + + my @agentnums = $self->agentnums; + return ' 1 = 0 ' unless scalar(@agentnums); + '( '. - join( ' OR ', map "agentnum = $_", $self->agentnums ). + join( ' OR ', map "agentnum = $_", @agentnums ). ' )'; } @@ -318,6 +323,21 @@ sub agentnum { $sth->fetchrow_arrayref->[0]; } +=item agents + +Returns the list of agents this user can view (via group membership), as +FS::agent objects. + +=cut + +sub agents { + my $self = shift; + qsearch({ + 'table' => 'agent', + 'hashref' => { disabled=>'' }, + 'extra_sql' => ' AND '. $self->agentnums_sql, + }); +} =item access_right