diff options
author | Florin Peter <github@florin-peter.de> | 2013-06-03 23:41:57 +0200 |
---|---|---|
committer | Florin Peter <github@florin-peter.de> | 2013-06-03 23:41:57 +0200 |
commit | ef97481a0d7dcedba830bc423d623111f6c2e774 (patch) | |
tree | cb71bb2e9ba1917690926b5eb73368db04138148 /apps/files_encryption | |
parent | b46e7323ec6189f16405b8a22b073ca2d18d3bdb (diff) | |
download | nextcloud-server-ef97481a0d7dcedba830bc423d623111f6c2e774.tar.gz nextcloud-server-ef97481a0d7dcedba830bc423d623111f6c2e774.zip |
changed redirect handling
Diffstat (limited to 'apps/files_encryption')
-rw-r--r-- | apps/files_encryption/files/error.php | 18 | ||||
-rwxr-xr-x | apps/files_encryption/lib/helper.php | 9 | ||||
-rw-r--r-- | apps/files_encryption/lib/stream.php | 25 | ||||
-rw-r--r-- | apps/files_encryption/templates/invalid_private_key.php | 10 |
4 files changed, 46 insertions, 16 deletions
diff --git a/apps/files_encryption/files/error.php b/apps/files_encryption/files/error.php new file mode 100644 index 00000000000..3118299b519 --- /dev/null +++ b/apps/files_encryption/files/error.php @@ -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; +} +?> diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index 3e581a6ee39..daa95f3f897 100755 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -194,4 +194,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 diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index dee5a7cccc0..3c1eb2c5f5e 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -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 index 00000000000..b0ff1db5993 --- /dev/null +++ b/apps/files_encryption/templates/invalid_private_key.php @@ -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> |