Improve logging of exceptions catched by SharingMiddleware
This commit is contained in:
@@ -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');
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user