[rt-users] Scrips firing at will - huh?

Leif Nixon nixon at nsc.liu.se
Mon Dec 12 10:17:40 EST 2005


Stephen Turner <sturner at MIT.EDU> writes:

> I was wondering if moving the code to the 'Custom action cleanup code'
> section would solve the problem? You may also need to put "return 1;"
> into the Custom action prep section.

Yes, it seems it does.

However, now I have another problem. The problem itself is mainly
cosmetic, but I'd like to understand what's causing it.

In the action prep section I now have a check for "this ticket is
owned by Nobody" and also a check for
$self->TicketObj->CurrentUserHasRight('OwnTicket').

The action cleanup section now contains:

  my $ticket = $self->TicketObj;
  my $Actor = $self->TransactionObj->CreatorObj->Id;

  if ($ticket->CurrentUserHasRight('OwnTicket')) { # Debug message
    $RT::Logger->info("The user seems to be allowed to own tickets");
  }

  if ($Actor != $ticket->OwnerObj->Id) {
    $RT::Logger->info("Auto assign ticket #". $ticket->id ." to user #". $Actor );

    my ($status, $msg) = $ticket->SetOwner($Actor);
    unless( $status ) {
       $RT::Logger->error("AutoTake error: $msg");
       return(undef);
    }
  }

Seems simple enough, but if a non-privileged user replies to an
unowned ticket I get the following in the log:

  Dec 12 16:03:49 d116 RT: The user seems to be allowed to own tickets ((eval 449) :5)  
  Dec 12 16:03:49 d116 RT: Auto assign ticket #5 to user #28 ((eval 449):8)  
  Dec 12 16:03:49 d116 RT: AutoTake error: That user may not own tickets in that queue ((eval 449):12)  

Why does $ticket->CurrentUserHasRight('OwnTicket') return true for a
non-privileged user? Should I dig up the queue and call
CurrentUserHasRight() on that instead?

-- 
Leif Nixon                       -            Systems expert
------------------------------------------------------------
National Supercomputer Centre    -      Linkoping University
------------------------------------------------------------



More information about the rt-users mailing list