<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://rt-wiki.bestpractical.com/index.php?action=history&amp;feed=atom&amp;title=WhoHasRightsToWhat</id>
	<title>WhoHasRightsToWhat - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://rt-wiki.bestpractical.com/index.php?action=history&amp;feed=atom&amp;title=WhoHasRightsToWhat"/>
	<link rel="alternate" type="text/html" href="https://rt-wiki.bestpractical.com/index.php?title=WhoHasRightsToWhat&amp;action=history"/>
	<updated>2026-08-22T08:16:49Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://rt-wiki.bestpractical.com/index.php?title=WhoHasRightsToWhat&amp;diff=4205&amp;oldid=prev</id>
		<title>Admin: 2 revisions imported</title>
		<link rel="alternate" type="text/html" href="https://rt-wiki.bestpractical.com/index.php?title=WhoHasRightsToWhat&amp;diff=4205&amp;oldid=prev"/>
		<updated>2016-04-06T20:39:42Z</updated>

		<summary type="html">&lt;p&gt;2 revisions imported&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=== This has been replaced by the much more extensive RTx::RightsMatrix, which can be downloaded from CPAN. ===&lt;br /&gt;
&lt;br /&gt;
If you have many queues or custom fields it can quickly become confusing as to who has rights to what. This is the first version of a Mason component that will help you make sense of it all. Please report bugs to todd [[at]] chaka.net.&lt;br /&gt;
&lt;br /&gt;
Drop this in [=html/Admin/Global/[[ViewTicketRights]].html]&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;% my $Title = loc(&amp;quot;Ticket Rights for [_1]: [_2]&amp;quot;, $principal-&amp;amp;gt;IsUser ? loc(&amp;#039;User&amp;#039;) : loc(&amp;#039;Group&amp;#039;), $principal-&amp;amp;gt;Object-&amp;amp;gt;Name ? $principal-&amp;amp;gt;Object-&amp;amp;gt;Name : $principal-&amp;amp;gt;Object-&amp;amp;gt;Type);&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/Header, Title=&amp;amp;gt;$Title &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /User/Elements/Tabs,&lt;br /&gt;
    current_tab =&amp;amp;gt; &amp;#039;Admin/Global/ViewTicketRights.html&amp;#039;,&lt;br /&gt;
    Title=&amp;amp;gt;$Title &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;th colspan=&amp;quot;2&amp;quot; &amp;amp;gt;Custom Field&amp;amp;lt;/th&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;th colspan=&amp;quot;&amp;amp;lt;% scalar @queues %&amp;amp;gt;&amp;quot; &amp;amp;gt;Ticket Queue&amp;amp;lt;/th&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;td&amp;amp;gt;Name&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;td&amp;amp;gt;Description&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
 % foreach my $queue ( @queues ) {&lt;br /&gt;
 &amp;amp;lt;td&amp;amp;gt;&amp;amp;lt;b&amp;amp;gt;&amp;amp;lt;% $queue-&amp;amp;gt;Name %&amp;amp;gt;&amp;amp;lt;/b&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;br&amp;amp;gt;(&lt;br /&gt;
  &amp;amp;lt;% $principal-&amp;amp;gt;HasRight(Object =&amp;amp;gt; $queue, Right =&amp;amp;gt; &amp;#039;ShowTicket&amp;#039;)   ? &amp;#039;r&amp;#039; : &amp;#039;&amp;#039; %&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;% $principal-&amp;amp;gt;HasRight(Object =&amp;amp;gt; $queue, Right =&amp;amp;gt; &amp;#039;ModifyTicket&amp;#039;) ? &amp;#039;w&amp;#039; : &amp;#039;&amp;#039; %&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;% $principal-&amp;amp;gt;HasRight(Object =&amp;amp;gt; $queue, Right =&amp;amp;gt; &amp;#039;CreateTicket&amp;#039;) ? &amp;#039;c&amp;#039; : &amp;#039;&amp;#039; %&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;% $principal-&amp;amp;gt;HasRight(Object =&amp;amp;gt; $queue, Right =&amp;amp;gt; &amp;#039;DeleteTicket&amp;#039;) ? &amp;#039;d&amp;#039; : &amp;#039;&amp;#039; %&amp;amp;gt; )&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
 % }&lt;br /&gt;
 &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 % my $i;&lt;br /&gt;
 % while (my $cf = $cfs-&amp;amp;gt;Next) {&lt;br /&gt;
 % $i++;&lt;br /&gt;
 &amp;amp;lt;tr class=&amp;quot;&amp;amp;lt;% $i%2 ? &amp;#039;oddline&amp;#039; : &amp;#039;evenline&amp;#039;%&amp;amp;gt;&amp;quot; &amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;td&amp;amp;gt;&amp;amp;lt;b&amp;amp;gt;&amp;amp;lt;% $cf-&amp;amp;gt;Name %&amp;amp;gt;&amp;amp;lt;/b&amp;amp;gt;&amp;amp;lt;/td&amp;amp;gt; &amp;amp;lt;td&amp;amp;gt;&amp;amp;lt;% $cf-&amp;amp;gt;Description %&amp;amp;gt;&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
 %  foreach my $queue ( @queues ) {&lt;br /&gt;
 %      my $ocfs = RT::ObjectCustomFields-&amp;amp;gt;new($RT::SystemUser);&lt;br /&gt;
 %      $ocfs-&amp;amp;gt;Limit( FIELD =&amp;amp;gt; &amp;#039;CustomField&amp;#039;, VALUE =&amp;amp;gt; $cf-&amp;amp;gt;Id );&lt;br /&gt;
 %      $ocfs-&amp;amp;gt;Limit( FIELD =&amp;amp;gt; &amp;#039;ObjectId&amp;#039;, VALUE =&amp;amp;gt; 0 );&lt;br /&gt;
 %      $ocfs-&amp;amp;gt;Limit( FIELD =&amp;amp;gt; &amp;#039;ObjectId&amp;#039;, VALUE =&amp;amp;gt; $queue-&amp;amp;gt;Id );&lt;br /&gt;
 %      if ($ocfs-&amp;amp;gt;Count) {&lt;br /&gt;
         &amp;amp;lt;td align=&amp;quot;center&amp;quot;&amp;amp;gt;&lt;br /&gt;
           &amp;amp;lt;b&amp;amp;gt;&lt;br /&gt;
           &amp;amp;lt;% $principal-&amp;amp;gt;HasRight(Object =&amp;amp;gt; $cf, Right =&amp;amp;gt; &amp;#039;SeeCustomField&amp;#039;)    ? &amp;#039;r&amp;#039; : &amp;#039;&amp;#039; %&amp;amp;gt;&lt;br /&gt;
           &amp;amp;lt;% $principal-&amp;amp;gt;HasRight(Object =&amp;amp;gt; $cf, Right =&amp;amp;gt; &amp;#039;ModifyCustomField&amp;#039;) ? &amp;#039;w&amp;#039; : &amp;#039;&amp;#039; %&amp;amp;gt;&lt;br /&gt;
           &amp;amp;lt;% $principal-&amp;amp;gt;HasRight(Object =&amp;amp;gt; $cf, Right =&amp;amp;gt; &amp;#039;AdminCustomField&amp;#039;)  ? &amp;#039;a&amp;#039; : &amp;#039;&amp;#039; %&amp;amp;gt;&lt;br /&gt;
           &amp;amp;lt;/b&amp;amp;gt;&lt;br /&gt;
         &amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
 %      }&lt;br /&gt;
 %      else {&lt;br /&gt;
          &amp;amp;lt;td align=&amp;quot;center&amp;quot;&amp;amp;gt;-&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
 %      }&lt;br /&gt;
 %  }&lt;br /&gt;
 &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
 % }&lt;br /&gt;
 &amp;amp;lt;/table&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;h3&amp;amp;gt;Key:&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
 For an queue the possible permissions are:&lt;br /&gt;
 &amp;amp;lt;table border=&amp;quot;1&amp;quot;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;td&amp;amp;gt;r&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;ShowTicket&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;Can see tickets of that queue&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;td&amp;amp;gt;w&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;ModifyTicket&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;Can edit/modify tickets of that queue&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;td&amp;amp;gt;c&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;CreateTicket&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;Can create tickets of that queue&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;td&amp;amp;gt;d&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;DeleteTicket&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;Can delete tickets of that queue&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/table&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;p&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 For a custom field the possible permissions are:&lt;br /&gt;
 &amp;amp;lt;table border=&amp;quot;1&amp;quot;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;td&amp;amp;gt;r&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;SeeCustomField&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;Can see that custom field for that queue&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;td&amp;amp;gt;w&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;ModifyCustomField&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;Can edit/moidfy that custom field for that queue&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;td&amp;amp;gt;a&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;AdminCustomField&amp;amp;lt;/td&amp;amp;gt;&amp;amp;lt;td&amp;amp;gt;Can administer that custom field for that queue&amp;amp;lt;/td&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/tr&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/table&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;p&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 A dash(-) in the table means that custom field does not apply to that queue.&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
 An empty cell in the table means that you have no permissions for that custom field and queue combination.&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;FORM METHOD=POST ACTION=&amp;quot;ViewTicketRights.html&amp;quot; ENCTYPE=&amp;quot;multipart/form-data&amp;quot;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;INPUT TYPE=HIDDEN NAME=id VALUE=&amp;quot;&amp;quot;&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/TitleBoxStart, title =&amp;amp;gt; loc(&amp;#039;View rights for&amp;#039;),   color=&amp;amp;gt; &amp;quot;#993333&amp;quot;, width =&amp;amp;gt; &amp;quot;100%&amp;quot; &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 Select User or Group:&lt;br /&gt;
 &amp;amp;lt;SELECT NAME=&amp;quot;Principal&amp;quot;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;OPTION VALUE=&amp;quot;&amp;quot;&amp;amp;gt;-&lt;br /&gt;
 &amp;amp;lt;OPTION VALUE=&amp;quot;&amp;amp;lt;%$session{CurrentUser}-&amp;amp;gt;id%&amp;amp;gt;&amp;quot;&amp;amp;gt;&amp;amp;lt;%$session{CurrentUser}-&amp;amp;gt;Name%&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;OPTION VALUE=&amp;quot;3&amp;quot;&amp;amp;gt;Everyone&lt;br /&gt;
 &amp;amp;lt;OPTION VALUE=&amp;quot;4&amp;quot;&amp;amp;gt;Privileged Users&lt;br /&gt;
 &amp;amp;lt;OPTION VALUE=&amp;quot;5&amp;quot;&amp;amp;gt;Unprivileged Users&lt;br /&gt;
 %while (my $group = $groups-&amp;amp;gt;Next) {&lt;br /&gt;
 %next unless $session{CurrentUser}-&amp;amp;gt;HasRight(Right =&amp;amp;gt; &amp;#039;AdminGroup&amp;#039;, Object =&amp;amp;gt; $group) or $group-&amp;amp;gt;HasMember($session{CurrentUser}-&amp;amp;gt;PrincipalObj);&lt;br /&gt;
 &amp;amp;lt;OPTION VALUE=&amp;quot;&amp;amp;lt;%$group-&amp;amp;gt;id%&amp;amp;gt;&amp;quot;&amp;amp;gt;&amp;amp;lt;%$group-&amp;amp;gt;Name%&amp;amp;gt;&lt;br /&gt;
 %}&lt;br /&gt;
 &amp;amp;lt;/SELECT&amp;amp;gt;&lt;br /&gt;
 %if ($session{CurrentUser}-&amp;amp;gt;HasRight(Right =&amp;amp;gt; &amp;#039;AdminUsers&amp;#039;, Object =&amp;amp;gt; $RT::System)) {&lt;br /&gt;
 - or -&lt;br /&gt;
 Enter username: &amp;amp;lt;INPUT NAME=&amp;quot;User&amp;quot;&amp;amp;gt;&lt;br /&gt;
 %}&lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/TitleBoxEnd &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;&amp;amp;amp; /Elements/Submit&amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/form&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;%INIT&amp;amp;gt;&lt;br /&gt;
 my $VERSION = 0.91;&lt;br /&gt;
 &lt;br /&gt;
 my $principal;&lt;br /&gt;
 if ($ARGS{Principal}) {&lt;br /&gt;
     $principal = RT::Principal-&amp;amp;gt;new($session{CurrentUser});&lt;br /&gt;
     my ($rv, $msg) = $principal-&amp;amp;gt;Load($ARGS{Principal});&lt;br /&gt;
     if (! $rv) {&lt;br /&gt;
         $m-&amp;amp;gt;comp(&amp;quot;/Elements/Error&amp;quot;, Why =&amp;amp;gt; loc(&amp;quot;Principal not found&amp;quot;));&lt;br /&gt;
         $m-&amp;amp;gt;abort;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 elsif ($ARGS{User}) {&lt;br /&gt;
     my $user = RT::User-&amp;amp;gt;new($session{CurrentUser});&lt;br /&gt;
     my ($rv, $msg) = $user-&amp;amp;gt;Load($ARGS{User});&lt;br /&gt;
     if (! $rv) {&lt;br /&gt;
         $m-&amp;amp;gt;comp(&amp;quot;/Elements/Error&amp;quot;, Why =&amp;amp;gt; loc(&amp;quot;User [_1] not found&amp;quot;, $ARGS{User}));&lt;br /&gt;
         $m-&amp;amp;gt;abort;&lt;br /&gt;
     }&lt;br /&gt;
     $principal = $user-&amp;amp;gt;PrincipalObj;&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
     $principal = $session{CurrentUser}-&amp;amp;gt;PrincipalObj;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 my $cfs = RT::CustomFields-&amp;amp;gt;new($session{CurrentUser});&lt;br /&gt;
 $cfs-&amp;amp;gt;LimitToLookupType(&amp;#039;RT::Queue-RT::Ticket&amp;#039;);&lt;br /&gt;
 $cfs-&amp;amp;gt;OrderBy(FIELD =&amp;amp;gt; &amp;#039;Name&amp;#039;);&lt;br /&gt;
 &lt;br /&gt;
 my $queues = RT::Queues-&amp;amp;gt;new($session{CurrentUser});&lt;br /&gt;
 $queues-&amp;amp;gt;UnLimit;&lt;br /&gt;
 my @queues;&lt;br /&gt;
 while (my $queue = $queues-&amp;amp;gt;Next) { push @queues, $queue; }&lt;br /&gt;
 &lt;br /&gt;
 my $groups = new RT::Groups($session{&amp;#039;CurrentUser&amp;#039;});&lt;br /&gt;
 $groups-&amp;amp;gt;Limit(FIELD =&amp;amp;gt; &amp;#039;Domain&amp;#039;, VALUE =&amp;amp;gt; &amp;#039;UserDefined&amp;#039;);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;/%INIT&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;%ARGS&amp;amp;gt;&lt;br /&gt;
 $User  =&amp;amp;gt; undef&lt;br /&gt;
 &amp;amp;lt;/%ARGS&amp;amp;gt;&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>