summaryrefslogtreecommitdiff
path: root/rt/webrt/Admin/Elements/SelectRights
diff options
context:
space:
mode:
Diffstat (limited to 'rt/webrt/Admin/Elements/SelectRights')
-rw-r--r--rt/webrt/Admin/Elements/SelectRights58
1 files changed, 58 insertions, 0 deletions
diff --git a/rt/webrt/Admin/Elements/SelectRights b/rt/webrt/Admin/Elements/SelectRights
new file mode 100644
index 000000000..0ac774985
--- /dev/null
+++ b/rt/webrt/Admin/Elements/SelectRights
@@ -0,0 +1,58 @@
+<INPUT TYPE=HIDDEN NAME="CheckACL" VALUE="<%$ACLDesc%>">
+ <TABLE BORDER=0>
+<TR>
+<TD valign=top>
+<h3>New rights</h3>
+<SELECT SIZE=5 MULTIPLE NAME="GrantACE-<%$ACLDesc%>">
+% foreach $right (sort keys %Rights) {
+ <OPTION VALUE="<%$right%>"
+ ><%$right%></OPTION>
+% }
+<OPTION VALUE="" SELECTED>(no value)</OPTION>
+</SELECT>
+</TD>
+<TD valign=top>
+<h3>Current rights</h3>
+<i>(Check box to revoke right)</i> <BR>
+% while (my $right = $ACLObj->Next()) {
+% if ($right->RightName) {
+<input type=checkbox value="<%$right->Id%>" name="RevokeACE"> <%$right->RightName%><br>
+% }
+% }
+</TD>
+</TR>
+</TABLE>
+<%INIT>
+ my ($right, $ACLDesc, $AppliesTo, %Rights);
+
+
+ my $ACLObj = new RT::ACL($session{'CurrentUser'});
+ my $ACE = new RT::ACE($session{'CurrentUser'});
+
+ if ($Scope eq 'Queue') {
+ $AppliesTo = $QueueObj->Id;
+ $ACLObj->LimitToQueue($AppliesTo);
+ %Rights = $ACE->QueueRights();
+ }
+ elsif ($Scope eq 'System') {
+ $AppliesTo = 0;
+ $ACLObj->LimitToSystem();
+ %Rights = ( $ACE->SystemRights , $ACE->QueueRights());
+ }
+
+ if ($PrincipalType eq 'Group') {
+ $ACLObj->LimitPrincipalToGroup($PrincipalObj->Id);
+ }
+ elsif ($PrincipalType eq 'User') {
+ $ACLObj->LimitPrincipalToUser($PrincipalObj->Id);
+ }
+
+ $ACLDesc = "$PrincipalType-".$PrincipalObj->Id."-$Scope-$AppliesTo";
+</%INIT>
+
+<%ARGS>
+$PrincipalType => undef
+$PrincipalObj => undef
+$Scope => undef
+$QueueObj => undef
+</%ARGS>