Fix improper handling of upload errors.
authorMichael M Slusarz <slusarz@curecanti.org>
Thu, 29 Jul 2010 22:25:41 +0000 (16:25 -0600)
committerMichael M Slusarz <slusarz@curecanti.org>
Thu, 29 Jul 2010 22:25:41 +0000 (16:25 -0600)
imp/pgp.php
imp/smime.php

index b7a3d19..f735d61 100644 (file)
@@ -35,11 +35,16 @@ case 'process_import_public_key':
             $notification->push(sprintf(_("PGP Public Key for \"%s (%s)\" was successfully added."), $sig['name'], $sig['email']), 'horde.success');
         }
         $imp_pgp->reloadWindow($vars->reload);
+        $error = false;
     } catch (Horde_Browser_Exception $e) {
         $notification->push(_("No PGP public key imported."), 'horde.error');
-        throw new IMP_Exception($e);
+        $error = true;
     } catch (Horde_Exception $e) {
         $notification->push($e);
+        $error = true;
+    }
+
+    if ($error) {
         $vars->actionID = 'import_public_key';
         $imp_pgp->importKeyDialog('process_import_public_key', $vars->reload);
     }
@@ -50,8 +55,8 @@ case 'import_personal_public_key':
     break;
 
 case 'process_import_personal_public_key':
-    $vars->actionID = 'import_personal_public_key';
     /* Check the public key. */
+    $error = false;
     try {
         $publicKey = $imp_pgp->getImportKey($vars->import_key);
         if (($key_info = $imp_pgp->pgpPacketInformation($publicKey)) &&
@@ -60,7 +65,7 @@ case 'process_import_personal_public_key':
                 /* Key contains private key too, don't allow to add this
                  * as public key. */
                 $notification->push(_("Imported key contains your PGP private key. Only add your public key in the first step!"), 'horde.error');
-                $imp_pgp->importKeyDialog('process_import_personal_public_key', $vars->reload);
+                $error = true;
             } else {
                 /* Success in importing public key - Move on to private
                  * key now. */
@@ -73,20 +78,25 @@ case 'process_import_personal_public_key':
             /* Invalid public key imported - Redo public key import
              * screen. */
             $notification->push(_("Invalid personal PGP public key."), 'horde.error');
-            $imp_pgp->importKeyDialog('process_import_personal_public_key', $vars->reload);
+            $error = true;
         }
     } catch (Horde_Browser_Exception $e) {
         $notification->push(_("No personal PGP public key imported."), 'horde.error');
-        throw new IMP_Exception($e);
+        $error = true;
     } catch (Horde_Exception $e) {
         $notification->push($e);
+        $error = true;
+    }
+
+    if ($error) {
+        $vars->actionID = 'import_personal_public_key';
         $imp_pgp->importKeyDialog('process_import_personal_public_key', $vars->reload);
     }
     break;
 
 case 'process_import_personal_private_key':
-    $vars->actionID = 'import_personal_private_key';
     /* Check the private key. */
+    $error = false;
     try {
         $privateKey = $imp_pgp->getImportKey($vars->import_key);
         if (($key_info = $imp_pgp->pgpPacketInformation($privateKey)) &&
@@ -100,13 +110,18 @@ case 'process_import_personal_private_key':
             /* Invalid private key imported - Redo private key import
              * screen. */
             $notification->push(_("Invalid personal PGP private key."), 'horde.error');
-            $imp_pgp->importKeyDialog('process_import_personal_private_key', $vars->reload);
+            $error = true;
         }
     } catch (Horde_Browser_Exception $e) {
         $notification->push(_("No personal PGP private key imported."), 'horde.error');
-        throw new IMP_Exception($e);
+        $error = true;
     } catch (Horde_Exception $e) {
         $notification->push($e);
+        $error = true;
+    }
+
+    if ($error) {
+        $vars->actionID = 'import_personal_private_key';
         $imp_pgp->importKeyDialog('process_import_personal_private_key', $vars->reload);
     }
     break;
index dc7d95b..125e404 100644 (file)
@@ -24,25 +24,30 @@ $vars = Horde_Variables::getDefaultVariables();
 switch ($vars->actionID) {
 case 'import_public_key':
     $imp_smime->importKeyDialog('process_import_public_key', $vars->reload);
-    exit;
+    break;
 
 case 'process_import_public_key':
+    $error = false;
     try {
         $publicKey = $imp_smime->getImportKey($vars->import_key);
 
         /* Add the public key to the storage system. */
         $imp_smime->addPublicKey($publicKey);
-        $notification->push(_("S/MIME Public Key successfully added."), 'horde.success');
+        $notification->push(_("S/MIME public key successfully added."), 'horde.success');
         $imp_smime->reloadWindow($vars->reload);
     } catch (Horde_Browser_Exception $e) {
         $notification->push(_("No S/MIME public key imported."), 'horde.error');
-        throw new IMP_Exception($e);
+        $error = true;
     } catch (Horde_Exception $e) {
         $notification->push($e);
+        $error = true;
+    }
+
+    if ($error) {
         $vars->actionID = 'import_public_key';
         $imp_smime->importKeyDialog('process_import_public_key', $vars->reload);
     }
-    exit;
+    break;
 
 case 'view_public_key':
 case 'info_public_key':
@@ -56,23 +61,23 @@ case 'info_public_key':
     } else {
         $imp_smime->printCertInfo($key);
     }
-    exit;
+    break;
 
 case 'view_personal_public_key':
     $imp_smime->textWindowOutput('S/MIME Personal Public Key', $imp_smime->getPersonalPublicKey());
-    exit;
+    break;
 
 case 'info_personal_public_key':
     $imp_smime->printCertInfo($imp_smime->getPersonalPublicKey());
-    exit;
+    break;
 
 case 'view_personal_private_key':
     $imp_smime->textWindowOutput('S/MIME Personal Private Key', $imp_smime->getPersonalPrivateKey());
-    exit;
+    break;
 
 case 'import_personal_certs':
     $imp_smime->importKeyDialog('process_import_personal_certs', $vars->reload);
-    exit;
+    break;
 
 case 'process_import_personal_certs':
     try {
@@ -80,14 +85,20 @@ case 'process_import_personal_certs':
         $imp_smime->addFromPKCS12($pkcs12, $vars->upload_key_pass, $vars->upload_key_pk_pass);
         $notification->push(_("S/MIME Public/Private Keypair successfully added."), 'horde.success');
         $imp_smime->reloadWindow($vars->reload);
+        $error = false;
     } catch (Horde_Browser_Exception $e) {
-        throw new IMP_Exception($e);
+        $notification->push(_("Personal S/MIME certificates NOT imported."), 'horde.error');
+        $error = true;
     } catch (Horde_Exception $e) {
         $notification->push(_("Personal S/MIME certificates NOT imported: ") . $e->getMessage(), 'horde.error');
+        $error = true;
+    }
+
+    if ($error) {
         $vars->actionID = 'import_personal_certs';
         $imp_smime->importKeyDialog('process_import_personal_certs', $vars->reload);
     }
-    exit;
+    break;
 
 case 'save_attachment_public_key':
     /* Retrieve the key from the message. */
@@ -104,5 +115,5 @@ case 'save_attachment_public_key':
     } catch (Horde_Exception $e) {
         $notification->push(_("No Certificate found"), 'horde.error');
     }
-    exit;
+    break;
 }