Improve logging of exceptions catched by SharingMiddleware

This commit is contained in:
Julius Haertl
2017-02-27 11:27:49 +01:00
parent 67f26ef9b2
commit 15e5a432b6
3 changed files with 39 additions and 27 deletions

View File

@@ -42,11 +42,8 @@ class Application extends App {
$container->registerService('SharingMiddleware', function($container) use ($server) {
return new SharingMiddleware(
$container,
$server->getRequest(),
$server->getUserSession(),
$container->query('ControllerMethodReflector'),
$container->query('OCA\Deck\Service\PermissionService')
$server->getLogger(),
$server->getConfig()
);
});
$container->registerMiddleware('SharingMiddleware');

View File

@@ -23,18 +23,32 @@
namespace OCA\Deck\Middleware;
use OCA\Deck\StatusException;
use \OCP\AppFramework\Middleware;
use OCP\AppFramework\Middleware;
use OCP\AppFramework\Http\JSONResponse;
use OCP\ILogger;
use OCP\Util;
use OCP\IConfig;
class SharingMiddleware extends Middleware {
/** @var ILogger */
private $logger;
/** @var IConfig */
private $config;
/**
* SharingMiddleware constructor.
*
* @param ILogger $logger
* @param IConfig $config
*/
public function __construct(ILogger $logger, IConfig $config) {
$this->logger = $logger;
$this->config = $config;
}
/**
* Return JSON error response if the user has no sufficient permission
*
@@ -46,6 +60,9 @@ class SharingMiddleware extends Middleware {
*/
public function afterException($controller, $methodName, \Exception $exception) {
if ($exception instanceof StatusException) {
if($this->config->getSystemValue('loglevel', Util::WARN) === Util::DEBUG) {
$this->logger->logException($exception);
}
return new JSONResponse([
"status" => $exception->getStatus(),
"message" => $exception->getMessage()

View File

@@ -23,30 +23,28 @@
namespace OCA\Deck\Middleware;
use OC\AppFramework\DependencyInjection\DIContainer;
use OC\AppFramework\Utility\ControllerMethodReflector;
use OC\AppFramework\Utility\SimpleContainer;
use OCA\Deck\Db\DeckMapper;
use OCA\Deck\Db\IPermissionMapper;
use OCA\Deck\NoPermissionException;
use OCA\Deck\NotFoundException;
use OCA\Deck\Service\BoardService;
use OCA\Deck\Service\PermissionService;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\JSONResponse;
use OCP\IContainer;
use OCP\IGroupManager;
use OCP\IRequest;
use OCP\IUser;
use OCP\IUserSession;
use OCA\Deck\Db\AclMapper;
use OCP\ILogger;
use OCP\IConfig;
class SharingMiddlewareTest extends \PHPUnit_Framework_TestCase {
class SharingMiddlewareTest extends \Test\TestCase {
/** @var ILogger */
private $logger;
/** @var IConfig */
private $config;
private $sharingMiddleware;
public function setUp() {
$this->sharingMiddleware = new SharingMiddleware();
$this->logger = $this->createMock(ILogger::class);
$this->config = $this->createMock(IConfig::class);
$this->sharingMiddleware = new SharingMiddleware(
$this->logger,
$this->config
);
}