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) { $container->registerService('SharingMiddleware', function($container) use ($server) {
return new SharingMiddleware( return new SharingMiddleware(
$container, $server->getLogger(),
$server->getRequest(), $server->getConfig()
$server->getUserSession(),
$container->query('ControllerMethodReflector'),
$container->query('OCA\Deck\Service\PermissionService')
); );
}); });
$container->registerMiddleware('SharingMiddleware'); $container->registerMiddleware('SharingMiddleware');

View File

@@ -23,18 +23,32 @@
namespace OCA\Deck\Middleware; namespace OCA\Deck\Middleware;
use OCA\Deck\StatusException; use OCA\Deck\StatusException;
use \OCP\AppFramework\Middleware; use OCP\AppFramework\Middleware;
use OCP\AppFramework\Http\JSONResponse; use OCP\AppFramework\Http\JSONResponse;
use OCP\ILogger;
use OCP\Util;
use OCP\IConfig;
class SharingMiddleware extends Middleware { 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 * 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) { public function afterException($controller, $methodName, \Exception $exception) {
if ($exception instanceof StatusException) { if ($exception instanceof StatusException) {
if($this->config->getSystemValue('loglevel', Util::WARN) === Util::DEBUG) {
$this->logger->logException($exception);
}
return new JSONResponse([ return new JSONResponse([
"status" => $exception->getStatus(), "status" => $exception->getStatus(),
"message" => $exception->getMessage() "message" => $exception->getMessage()

View File

@@ -23,30 +23,28 @@
namespace OCA\Deck\Middleware; 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\NoPermissionException;
use OCA\Deck\NotFoundException; 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\AppFramework\Http\JSONResponse;
use OCP\IContainer; use OCP\ILogger;
use OCP\IGroupManager; use OCP\IConfig;
use OCP\IRequest;
use OCP\IUser;
use OCP\IUserSession;
use OCA\Deck\Db\AclMapper;
class SharingMiddlewareTest extends \PHPUnit_Framework_TestCase {
class SharingMiddlewareTest extends \Test\TestCase {
/** @var ILogger */
private $logger;
/** @var IConfig */
private $config;
private $sharingMiddleware; private $sharingMiddleware;
public function setUp() { 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
);
} }