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;
$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);
throw new DecryptionFailedException($msg, 0, null, $hint);
throw new DecryptionFailedException($msg, $hint);
}
return false;
}

View File

@ -27,15 +27,4 @@ use OCP\Encryption\Exceptions\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\Files\Mount\IMountPoint;
use OCP\IConfig;
use OCP\IL10N;
use OCP\ILogger;
class Manager implements IManager {
@ -43,14 +44,19 @@ class Manager implements IManager {
/** @var ILogger */
protected $logger;
/** @var Il10n */
protected $l;
/**
* @param IConfig $config
* @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->config = $config;
$this->logger = $logger;
$this->l = $l10n;
}
/**
@ -145,7 +151,8 @@ class Manager implements IManager {
return call_user_func($this->encryptionModules[$moduleId]['callback']);
} else {
$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 {
return $this->getDefaultEncryptionModule();

View File

@ -84,7 +84,7 @@ class Server extends SimpleContainer implements IServerContainer {
});
$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) {

View File

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

View File

@ -16,11 +16,15 @@ class ManagerTest extends TestCase {
/** @var \PHPUnit_Framework_MockObject_MockObject */
private $logger;
/** @var \PHPUnit_Framework_MockObject_MockObject */
private $l10n;
public function setUp() {
parent::setUp();
$this->config = $this->getMock('\OCP\IConfig');
$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() {