]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 312439: The user being impersonated has "moral" rights to keep informed - Patch...
authorkarl%kornel.name <>
Sat, 5 Nov 2005 00:11:27 +0000 (00:11 +0000)
committerkarl%kornel.name <>
Sat, 5 Nov 2005 00:11:27 +0000 (00:11 +0000)
docs/xml/administration.xml
relogin.cgi
template/en/default/admin/sudo.html.tmpl
template/en/default/email/sudo.txt.tmpl [new file with mode: 0644]
template/en/default/pages/sudo.html.tmpl [new file with mode: 0644]

index 8c79e6fb77121fdfb05e3f176ff2a3abdaa789c5..104403013d5dcf70d1aee98f2bd64ba2e8509271 100644 (file)
         </note>
         
         <para>
-        If you have access to use this feature, you should notice a link
-        next to your login name (in the footer) titled "sudo".  Click on the 
-        link.  This will take you to a page where you will see a description of 
-        the feature and instructions on how to use it.  After reading the text, 
-        simply enter the login of the user you would like to impersonate and 
-        press the button.</para>
+        If you have access to this feature, you may start a session by
+        going to the Edit Users page, Searching for a user and clicking on 
+        their login.  You should see a link below their login name titled 
+        "Impersonate this user".  Click on the link.  This will take you 
+        to a page where you will see a description of the feature and 
+        instructions for using it.  After reading the text, simply 
+        enter the login of the user you would like to impersonate, provide 
+        a short message explaining why you are doing this, and press the 
+        button.</para>
         
         <para>
         As long as you are using this feature, everything you do will be done 
index a8ebd18f40003114156bd7ee88c1643295590324..8c4517f0c2d409ab89f26443f676778a1fb8dd07 100755 (executable)
 #                 A. Karl Kornel <karl@kornel.name>
 
 use strict;
-
 use lib qw(.);
+
+require "globals.pl";
+
 use Bugzilla;
-use Bugzilla::Auth::Login::WWW;
-use Bugzilla::CGI;
+use Bugzilla::BugMail;
 use Bugzilla::Constants;
 use Bugzilla::Error;
 use Bugzilla::User;
@@ -70,7 +71,7 @@ if ($action eq 'sudo') {
     }
 
     # Show the sudo page
-    $vars->{'will_logout'} = 1 if Bugzilla::Auth::Login::WWW->can_logout;
+    $vars->{'will_logout'} = $user->get_flag('can_logout');
     $target = 'admin/sudo.html.tmpl';
 }
 # transition-sudo: Validate target, logout user, and redirect for session start
@@ -113,11 +114,16 @@ elsif ($action eq 'sudo-transition') {
         ThrowUserError('sudo_protected', { login => $target_user->login });
     }
     
-    # Log out and Redirect user to the new page
+    # If we have a reason passed in, keep it under 200 characters
+    my $reason = $cgi->param('reason') || '';
+    $reason = substr($reason, $[, 200);
+    my $reason_string = '&reason=' . url_quote($reason);
+    
+    # Log out and redirect user to the new page
     Bugzilla->logout();
     $target = 'relogin.cgi';
     print $cgi->redirect($target . '?action=begin-sudo&target_login=' .
-                         url_quote($target_user->login));
+                         url_quote($target_user->login) . $reason_string);
     exit;
 }
 # begin-sudo: Confirm login and start sudo session
@@ -161,6 +167,10 @@ elsif ($action eq 'begin-sudo') {
         ThrowUserError('sudo_protected', { login => $target_user->login });
     }
     
+    # If we have a reason passed in, keep it under 200 characters
+    my $reason = $cgi->param('reason') || '';
+    $reason = substr($reason, $[, 200);
+    
     # Calculate the session expiry time (T + 6 hours)
     my $time_string = time2str('%a, %d-%b-%Y %T %Z', time+(6*60*60), 'GMT');
 
@@ -174,7 +184,14 @@ elsif ($action eq 'begin-sudo') {
     Bugzilla->sudo_request($target_user, Bugzilla->user);
     
     # NOTE: If you want to log the start of an sudo session, do it here.
-    
+
+    # Go ahead and send out the message now
+    my $message;
+    $template->process('email/sudo.txt.tmpl', 
+                       { reason => $reason },
+                       \$message);
+    Bugzilla::BugMail::MessageToMTA($message);
+        
     $vars->{'message'} = 'sudo_started';
     $vars->{'target'} = $target_user->login;
     $target = 'global/message.html.tmpl';
index ea4f0f38e48f1585d4f03657f88fc3d53365b715..12aa586a629df523322fa6f424d2c4ba52319d80 100644 (file)
   [% END %]
   
   <p>
-    Next, click the button to begin the session:
+    Next, please take a moment to explain why you are doing this:<br>
+    <input type="text" name="reason" size="80" maxlength="200">
+  </p>
+  
+  <p>
+    The message you enter here will be sent to the impersonated user by email.
+    You may leave this empty if you wish, but they will still know that you 
+    are impersonating them.
+  </p>
+  
+  <p>
+    Finally, click the button to begin the session:
     <input type="submit" value="Begin Session">
     <input type="hidden" name="action" value="sudo-transition">
   </p>
diff --git a/template/en/default/email/sudo.txt.tmpl b/template/en/default/email/sudo.txt.tmpl
new file mode 100644 (file)
index 0000000..06026cf
--- /dev/null
@@ -0,0 +1,43 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 2005 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): A. Karl Kornel <karl@kornel.name>
+  #%]
+
+[% PROCESS global/variables.none.tmpl %]
+
+Content-Type: text/plain
+From: [% Param("maintainer") %]
+To: [% user.email %]
+Subject: [[% terms.Bugzilla %]] Your account [% user.login -%]
+ is being impersonated
+
+    [%+ sudoer.identity %] has used the 'sudo' feature to access 
+[%+ terms.Bugzilla %] using your account.
+
+[% IF reason %]
+    [%+ sudoer.identity %] provided the following reason for doing this:
+
+[% reason FILTER wrap_comment %]
+[% ELSE %]
+    [%+ sudoer.identity %] did not provide a reason for doing this.
+[% END %]
+
+    If you feel that this action was inappropiate, please contact 
+[%+ Param("maintainer") %].  For more information on this feature, 
+visit <[% Param("urlbase") %]page.cgi?id=sudo.html>.
diff --git a/template/en/default/pages/sudo.html.tmpl b/template/en/default/pages/sudo.html.tmpl
new file mode 100644 (file)
index 0000000..ca57a81
--- /dev/null
@@ -0,0 +1,69 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 2005 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): A. Karl Kornel <karl@kornel.name>
+  #%]
+
+[% PROCESS global/variables.none.tmpl %]
+[% INCLUDE global/header.html.tmpl title = "sudo: User Impersonation" %]
+
+<p>
+  [%+ terms.Bugzilla %] includes the ability to have one user impersonate 
+another, in something called a <i>sudo session</i>, so long as the person 
+doing the impersonating has the appropriate privileges.
+</p>
+
+<p>
+  While a session is in progress, [% terms.Bugzilla %] will act as if the 
+  impersonated user is doing everything.  This is especially useful for testing,
+  and for doing critical work when the impersonated user is unavailable.  The 
+  impersonated user will receive an email from [% terms.Bugzilla %] when the 
+  session begins; they will not be told anything else.
+</p>
+
+<p>
+  To use this feature, you must be a member of the appropriate group.  The group 
+  includes all administrators by default.  Other users, and members of other 
+  groups, can be given access to this feature on a case-by-case basis.  To 
+  request access, contact the maintainer of this installation: 
+  <a href="mailto:[% Param("maintainer") %]">
+  [%- Param("maintainer") %]</a>.
+</p>
+
+<p>
+  If you would like to be protected from impersonation, you should contact the 
+  maintainer of this installation to see if that is possible.  People with 
+  access to this feature are protected automatically.
+</p>
+
+<p id="message">
+  [% IF user.groups.bz_sudoers %]
+    You are a member of the <b>bz_sudoers</b> group.  You may use this 
+    feature to impersonate others.
+  [% ELSE %]
+    You are not a member of an appropriate group.  You may not use this 
+    feature.
+  [% END %]
+  [% IF user.groups.bz_sudo_protect %]
+    <br>
+    You are a member of the <b>bz_sudo_protect</b> group.  Other people will 
+    not be able to use this feature to impersonate you.
+  [% END %]
+</p>
+
+[% INCLUDE global/footer.html.tmpl %]