[Rt-commit] rt branch, 4.4/fix-outbound-encryption, created. rt-4.4.0-268-g97e58da

Dustin Graves dustin at bestpractical.com
Tue Jul 19 15:30:49 EDT 2016


The branch, 4.4/fix-outbound-encryption has been created
        at  97e58dafc651fd97fb195a6d5f4742430462686b (commit)

- Log -----------------------------------------------------------------
commit 97e58dafc651fd97fb195a6d5f4742430462686b
Author: Dustin Graves <dustin at bestpractical.com>
Date:   Tue Jul 19 19:26:23 2016 +0000

    add existing GnuPG encryption support to ticket forwarding
    
    previously, there was no way to opt in/out of signing/encrypting messages
    
    also, any errors in sending the email due to missing/expired keys would fail
    silently and any other transactions would save as if nothing failed

diff --git a/share/html/Elements/Crypt/SignEncryptWidget b/share/html/Elements/Crypt/SignEncryptWidget
index 9dad92c..f7db7a6 100644
--- a/share/html/Elements/Crypt/SignEncryptWidget
+++ b/share/html/Elements/Crypt/SignEncryptWidget
@@ -167,6 +167,9 @@ if ( $self->{'Encrypt'} ) {
         @recipients = map {$_->Recipients} $TicketObj->DryRun(
             sub { CreateTicket( %$self, TicketObj => $TicketObj ); } );
     }
+    elsif ( $Operation eq 'Forward' ) {
+        push @recipients, RT::EmailParser->ParseEmailAddress( $self->{$_} || '' ) for qw(To Cc Bcc);
+    }
     else {
         $RT::Logger->crit('Incorrect operation: '. $Operation );
     }
diff --git a/share/html/Ticket/Forward.html b/share/html/Ticket/Forward.html
index c5c0af1..653724f 100644
--- a/share/html/Ticket/Forward.html
+++ b/share/html/Ticket/Forward.html
@@ -56,6 +56,8 @@
 <input type="hidden" class="hidden" name="id" value="<% $id %>" /><br />
 <input type="hidden" class="hidden" name="QuoteTransaction" value="<% $ARGS{'QuoteTransaction'} || '' %>" />
 
+<& /Elements/Crypt/SignEncryptWidget:ShowIssues, self => $gnupg_widget &>
+
 <table border="0">
 <tr><td align="right"><&|/l&>From</&>:</td>
 <td><% $from %></td></tr>
@@ -72,6 +74,15 @@
 <tr><td align="right"><&|/l&>Bcc</&>:</td>
 <td><& /Elements/EmailInput, Name => "Bcc", AutocompleteMultiple => 1, Default => $ARGS{'Bcc'} &></td></tr>
 
+% if ( $gnupg_widget ) {
+<tr><td> </td><td>
+<& /Elements/Crypt/SignEncryptWidget,
+    self => $gnupg_widget,
+    TicketObj => $TicketObj,
+&>
+</td></tr>
+% }
+
 <tr>
 <td><&|/l&>Content</&>:</td>
 <td>
@@ -91,9 +102,18 @@
 <& /Elements/Submit, Label => loc('Forward Message'), Name => 'Forward' &>
 </form>
 <%INIT>
+my ($status, $msg);
+my $checks_failure = 0;
+
 my $TicketObj = LoadTicket($id);
 $id = $ARGS{'id'} = $TicketObj->id;
 
+my $gnupg_widget = $m->comp('/Elements/Crypt/SignEncryptWidget:new', Arguments => \%ARGS );
+$m->comp( '/Elements/Crypt/SignEncryptWidget:Process',
+    self => $gnupg_widget,
+    TicketObj => $TicketObj,
+);
+
 Abort( loc("Permission Denied") )
     unless $TicketObj->CurrentUserHasRight('ForwardMessage');
 
@@ -105,9 +125,18 @@ if ( $QuoteTransaction ) {
         unless $txn->id;
 }
 
-my @results;
 if ( $Forward || $ForwardAndReturn ) {
-    my ( $status, $msg ) = $TicketObj->Forward( Transaction => $txn, %ARGS );
+    $status = $m->comp('/Elements/Crypt/SignEncryptWidget:Check',
+        self      => $gnupg_widget,
+        TicketObj => $TicketObj,
+        Operation => 'Forward',
+    );
+    $checks_failure = 1 unless $status;
+}
+
+my @results;
+if ( !$checks_failure && ($Forward || $ForwardAndReturn) ) {
+    ( $status, $msg ) = $TicketObj->Forward( Transaction => $txn, %ARGS );
     push @results, $msg;
 
     if ( $ForwardAndReturn ) {

-----------------------------------------------------------------------


More information about the rt-commit mailing list