]> source.dussan.org Git - nextcloud-server.git/commitdiff
changed redirect handling
authorFlorin Peter <github@florin-peter.de>
Mon, 3 Jun 2013 21:41:57 +0000 (23:41 +0200)
committerBjörn Schießle <schiessle@owncloud.com>
Thu, 13 Jun 2013 11:40:27 +0000 (13:40 +0200)
apps/files_encryption/files/error.php [new file with mode: 0644]
apps/files_encryption/lib/helper.php
apps/files_encryption/lib/stream.php
apps/files_encryption/templates/invalid_private_key.php [new file with mode: 0644]

diff --git a/apps/files_encryption/files/error.php b/apps/files_encryption/files/error.php
new file mode 100644 (file)
index 0000000..3118299
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+if (!isset($_)) { //also provide standalone error page
+       require_once '../../../lib/base.php';
+
+       $l = OC_L10N::get('files_encryption');
+
+       // check if ajax request
+       if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
+               \OCP\JSON::error(array('data' => array('message' => $l->t('Your private key is not valid! Maybe the your password was changed from outside.'))));
+       } else {
+               header('HTTP/1.0 404 ' . $l->t('Your private key is not valid! Maybe the your password was changed from outside.'));
+               $tmpl = new OC_Template('files_encryption', 'invalid_private_key', 'guest');
+               $tmpl->printPage();
+       }
+
+       exit;
+}
+?>
index c603aa1677d05332398e93487c3e0a467479a0b9..40e12ae367f0e6c467b9a65b167e51b3d268c753 100755 (executable)
@@ -195,4 +195,13 @@ class Helper {
 
                return $relPath;
        }
+
+       /**
+        * @brief redirect to a error page
+        */
+       public static function redirectToErrorPage() {
+               $location = \OC_Helper::linkToAbsolute('apps/files_encryption/files', 'error.php');
+               header('Location: ' . $location);
+               exit();
+       }
 }
\ No newline at end of file
index dee5a7cccc06c8643779461c3f300bee71d92b8a..3c1eb2c5f5e5dcb4273c40040107d07a590fb18b 100644 (file)
@@ -116,6 +116,11 @@ class Stream {
 
                } else {
 
+                       if($this->privateKey === false) {
+                               // if private key is not valid redirect user to a error page
+                               \OCA\Encryption\Helper::redirectToErrorPage();
+                       }
+
                        $this->size = $this->rootView->filesize($this->rawPath, $mode);
                }
 
@@ -239,12 +244,8 @@ class Stream {
                        // if there is no valid private key return false
                        if ($this->privateKey === false) {
 
-                               if (\OC_Util::isCallRegistered()) {
-                                       $l = \OC_L10N::get('core');
-                                       \OCP\JSON::error(array('data' => array('message' => $l->t('Private key is not valid! Maybe the user password was changed from outside if so please change it back to gain access'))));
-                                       throw new \Exception('Private key for user "' . $this->userId
-                                                                                . '" is not valid! Maybe the user password was changed from outside if so please change it back to gain access');
-                               }
+                               // if private key is not valid redirect user to a error page
+                               \OCA\Encryption\Helper::redirectToErrorPage();
 
                                return false;
                        }
@@ -450,10 +451,6 @@ class Stream {
                // if there is no valid private key return false
                if ($this->privateKey === false) {
 
-                       if (\OC_Util::isCallRegistered()) {
-                               $l = \OC_L10N::get('core');
-                               \OCP\JSON::error(array('data' => array('message' => $l->t('Private key is not valid! Maybe the user password was changed from outside if so please change it back to gain access'))));
-
                                // cleanup
                                if ($this->meta['mode'] !== 'r' && $this->meta['mode'] !== 'rb') {
 
@@ -469,12 +466,8 @@ class Stream {
                                        \OC_FileProxy::$enabled = $proxyStatus;
                                }
 
-                               throw new \Exception('Private key for user "' . $this->userId
-                                                                        . '" is not valid! Maybe the user password was changed from outside if so please change it back to gain access');
-                       }
-
-
-                       return false;
+                       // if private key is not valid redirect user to a error page
+                       \OCA\Encryption\Helper::redirectToErrorPage();
                }
 
                if (
diff --git a/apps/files_encryption/templates/invalid_private_key.php b/apps/files_encryption/templates/invalid_private_key.php
new file mode 100644 (file)
index 0000000..b0ff1db
--- /dev/null
@@ -0,0 +1,10 @@
+<ul>
+       <li class='error'>
+               <?php $location = \OC_Helper::linkToRoute( "settings_personal" ) ?>
+
+               <?php p($l->t('Your private key is not valid! Maybe the your password was changed from outside.')); ?>
+               <br/>
+               <?php p($l->t('You can unlock your private key in your ')); ?> <a href="<?php echo $location?>"><?php p($l->t('personal settings')); ?>.</a>
+               <br/>
+       </li>
+</ul>