summaryrefslogtreecommitdiff
path: root/FS/FS/TicketSystem
diff options
context:
space:
mode:
authormark <mark>2011-01-01 00:47:01 +0000
committermark <mark>2011-01-01 00:47:01 +0000
commitc587b5fdc7175c2a752558efccfc3f424cff6c0d (patch)
treef065f2c68393c0300af30b0d5d1889ee7134756f /FS/FS/TicketSystem
parent0bebde603df97eb496150e80a58755b2f792f64a (diff)
limit ticket creation queue dropdowns based on ACL, RT#7778
Diffstat (limited to 'FS/FS/TicketSystem')
-rw-r--r--FS/FS/TicketSystem/RT_Internal.pm29
1 files changed, 29 insertions, 0 deletions
diff --git a/FS/FS/TicketSystem/RT_Internal.pm b/FS/FS/TicketSystem/RT_Internal.pm
index befafb8..6ae8881 100644
--- a/FS/FS/TicketSystem/RT_Internal.pm
+++ b/FS/FS/TicketSystem/RT_Internal.pm
@@ -301,6 +301,35 @@ sub correspond_ticket {
$Ticket->Correspond( Content => $param{'content'} );
}
+=item queues SESSION_HASHREF [, ACL ]
+
+Retrieve a list of queues. Pass the name of an RT access control right,
+such as 'CreateTicket', to return only queues on which the current user
+has that right. Otherwise this will return all queues with the 'SeeQueue'
+right.
+
+=cut
+
+sub queues {
+ my( $self, $session, $acl ) = @_;
+ $session = $self->session($session);
+
+ my $showall = $acl ? 0 : 1;
+ my @result = ();
+ my $q = new RT::Queues($session->{'CurrentUser'});
+ $q->UnLimit;
+ while (my $queue = $q->Next) {
+ if ($showall || $queue->CurrentUserHasRight($acl)) {
+ push @result, {
+ Id => $queue->Id,
+ Name => $queue->Name,
+ Description => $queue->Description,
+ };
+ }
+ }
+ return map { $_->{Id} => $_->{Name} } @result;
+}
+
#shameless false laziness w/RT::Interface::Web::AttemptExternalAuth
# to get logged into RT from afar
sub _web_external_auth {