improve error messages displayed to the user

This commit is contained in:
Bjoern Schiessle 2015-05-27 10:37:12 +02:00
parent 3de945d13d
commit 5549641f1f
6 changed files with 21 additions and 28 deletions

View File

@ -387,7 +387,7 @@ class Encryption implements IEncryptionModule {
'" is not able to read ' . $path; '" is not able to read ' . $path;
$hint = $this->l->t('Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you.'); $hint = $this->l->t('Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you.');
$this->logger->warning($msg); $this->logger->warning($msg);
throw new DecryptionFailedException($msg, 0, null, $hint); throw new DecryptionFailedException($msg, $hint);
} }
return false; return false;
} }

View File

@ -27,15 +27,4 @@ use OCP\Encryption\Exceptions\GenericEncryptionException;
class DecryptionFailedException extends GenericEncryptionException { class DecryptionFailedException extends GenericEncryptionException {
/**
* @param string $message
* @param int $code
* @param \Exception $previous
* @param string $hint
*/
public function __construct($message = '', $code = 0, \Exception $previous = null, $hint = '') {
parent::__construct($message, $code, $previous, $hint);
}
} }

View File

@ -30,6 +30,7 @@ use OCP\Encryption\IEncryptionModule;
use OCP\Encryption\IManager; use OCP\Encryption\IManager;
use OCP\Files\Mount\IMountPoint; use OCP\Files\Mount\IMountPoint;
use OCP\IConfig; use OCP\IConfig;
use OCP\IL10N;
use OCP\ILogger; use OCP\ILogger;
class Manager implements IManager { class Manager implements IManager {
@ -43,14 +44,19 @@ class Manager implements IManager {
/** @var ILogger */ /** @var ILogger */
protected $logger; protected $logger;
/** @var Il10n */
protected $l;
/** /**
* @param IConfig $config * @param IConfig $config
* @param ILogger $logger * @param ILogger $logger
* @param IL10N $l10n
*/ */
public function __construct(IConfig $config, ILogger $logger) { public function __construct(IConfig $config, ILogger $logger, IL10N $l10n) {
$this->encryptionModules = array(); $this->encryptionModules = array();
$this->config = $config; $this->config = $config;
$this->logger = $logger; $this->logger = $logger;
$this->l = $l10n;
} }
/** /**
@ -145,7 +151,8 @@ class Manager implements IManager {
return call_user_func($this->encryptionModules[$moduleId]['callback']); return call_user_func($this->encryptionModules[$moduleId]['callback']);
} else { } else {
$message = "Module with id: $moduleId does not exists."; $message = "Module with id: $moduleId does not exists.";
throw new Exceptions\ModuleDoesNotExistsException($message); $hint = $this->l->t('Module with id: %s does not exists. Please enable it in your apps settings or contact your administrator.', [$moduleId]);
throw new Exceptions\ModuleDoesNotExistsException($message, $hint);
} }
} else { } else {
return $this->getDefaultEncryptionModule(); return $this->getDefaultEncryptionModule();

View File

@ -84,7 +84,7 @@ class Server extends SimpleContainer implements IServerContainer {
}); });
$this->registerService('EncryptionManager', function (Server $c) { $this->registerService('EncryptionManager', function (Server $c) {
return new Encryption\Manager($c->getConfig(), $c->getLogger()); return new Encryption\Manager($c->getConfig(), $c->getLogger(), $c->getL10N('core'));
}); });
$this->registerService('EncryptionFileHelper', function (Server $c) { $this->registerService('EncryptionFileHelper', function (Server $c) {

View File

@ -21,6 +21,7 @@
*/ */
namespace OCP\Encryption\Exceptions; namespace OCP\Encryption\Exceptions;
use OC\HintException;
/** /**
* Class GenericEncryptionException * Class GenericEncryptionException
@ -28,28 +29,20 @@ namespace OCP\Encryption\Exceptions;
* @package OCP\Encryption\Exceptions * @package OCP\Encryption\Exceptions
* @since 8.1.0 * @since 8.1.0
*/ */
class GenericEncryptionException extends \Exception { class GenericEncryptionException extends HintException {
/** @var string */
protected $hint;
/** /**
* @param string $message * @param string $message
* @param string $hint
* @param int $code * @param int $code
* @param \Exception $previous * @param \Exception $previous
* @since 8.1.0 * @since 8.1.0
*/ */
public function __construct($message = '', $code = 0, \Exception $previous = null, $hint = '') { public function __construct($message = '', $hint = '', $code = 0, \Exception $previous = null) {
if (empty($message)) { if (empty($message)) {
$message = 'Unspecified encryption exception'; $message = 'Unspecified encryption exception';
} }
parent::__construct($message, $code, $previous); parent::__construct($message, $hint, $code, $previous);
$this->hint = $hint;
}
public function getHint() {
return $this->hint;
} }
} }

View File

@ -16,11 +16,15 @@ class ManagerTest extends TestCase {
/** @var \PHPUnit_Framework_MockObject_MockObject */ /** @var \PHPUnit_Framework_MockObject_MockObject */
private $logger; private $logger;
/** @var \PHPUnit_Framework_MockObject_MockObject */
private $l10n;
public function setUp() { public function setUp() {
parent::setUp(); parent::setUp();
$this->config = $this->getMock('\OCP\IConfig'); $this->config = $this->getMock('\OCP\IConfig');
$this->logger = $this->getMock('\OCP\ILogger'); $this->logger = $this->getMock('\OCP\ILogger');
$this->manager = new Manager($this->config, $this->logger); $this->l10n = $this->getMock('\OCP\Il10n');
$this->manager = new Manager($this->config, $this->logger, $this->l10n);
} }
public function testManagerIsDisabled() { public function testManagerIsDisabled() {