Add logging and template to unhandled exceptions
A lot of users are getting an uninformative Access Forbidden page after using the official setup instructions like in #21. Logging and showing the actual exception will help troubleshooting these issues.
This commit is contained in:
		
							parent
							
								
									c72b63ea5a
								
							
						
					
					
						commit
						e45982b487
					
				| @ -21,6 +21,7 @@ use OCP\Files\Node; | |||||||
| use \OCP\IRequest; | use \OCP\IRequest; | ||||||
| use \OCP\IConfig; | use \OCP\IConfig; | ||||||
| use \OCP\IL10N; | use \OCP\IL10N; | ||||||
|  | use \OCP\ILogger; | ||||||
| use \OCP\AppFramework\Http\ContentSecurityPolicy; | use \OCP\AppFramework\Http\ContentSecurityPolicy; | ||||||
| use \OCP\AppFramework\Http\TemplateResponse; | use \OCP\AppFramework\Http\TemplateResponse; | ||||||
| use \OCA\Richdocuments\AppConfig; | use \OCA\Richdocuments\AppConfig; | ||||||
| @ -38,6 +39,8 @@ class DocumentController extends Controller { | |||||||
| 	private $settings; | 	private $settings; | ||||||
| 	/** @var AppConfig */ | 	/** @var AppConfig */ | ||||||
| 	private $appConfig; | 	private $appConfig; | ||||||
|  | 	/** @var ILogger */ | ||||||
|  | 	private $logger; | ||||||
| 	/** @var Parser */ | 	/** @var Parser */ | ||||||
| 	private $wopiParser; | 	private $wopiParser; | ||||||
| 	/** @var IManager */ | 	/** @var IManager */ | ||||||
| @ -74,7 +77,8 @@ class DocumentController extends Controller { | |||||||
| 								TokenManager $tokenManager, | 								TokenManager $tokenManager, | ||||||
| 								IRootFolder $rootFolder, | 								IRootFolder $rootFolder, | ||||||
| 								ISession $session, | 								ISession $session, | ||||||
| 								$UserId) { | 								$UserId, | ||||||
|  | 								ILogger $logger) { | ||||||
| 		parent::__construct($appName, $request); | 		parent::__construct($appName, $request); | ||||||
| 		$this->uid = $UserId; | 		$this->uid = $UserId; | ||||||
| 		$this->l10n = $l10n; | 		$this->l10n = $l10n; | ||||||
| @ -85,6 +89,7 @@ class DocumentController extends Controller { | |||||||
| 		$this->tokenManager = $tokenManager; | 		$this->tokenManager = $tokenManager; | ||||||
| 		$this->rootFolder = $rootFolder; | 		$this->rootFolder = $rootFolder; | ||||||
| 		$this->session = $session; | 		$this->session = $session; | ||||||
|  | 		$this->logger = $logger; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
| @ -118,6 +123,19 @@ class DocumentController extends Controller { | |||||||
| 			$response->setContentSecurityPolicy($policy); | 			$response->setContentSecurityPolicy($policy); | ||||||
| 			return $response; | 			return $response; | ||||||
| 		} catch (\Exception $e) { | 		} catch (\Exception $e) { | ||||||
|  | 			$this->logger->logException($e, ['app'=>'richdocuments']); | ||||||
|  | 			$params = [ | ||||||
|  | 				'remoteAddr' => $this->request->getRemoteAddress(), | ||||||
|  | 				'requestID' => $this->request->getId(), | ||||||
|  | 				'debugMode' => $this->settings->getSystemValue('debug'), | ||||||
|  | 				'errorClass' => get_class($e), | ||||||
|  | 				'errorCode' => $e->getCode(), | ||||||
|  | 				'errorMsg' => $e->getMessage(), | ||||||
|  | 				'file' => $e->getFile(), | ||||||
|  | 				'line' => $e->getLine(), | ||||||
|  | 				'trace' => $e->getTraceAsString() | ||||||
|  | 			]; | ||||||
|  | 			return new TemplateResponse('core', 'exception', $params, 'guest'); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		return new TemplateResponse('core', '403', [], 'guest'); | 		return new TemplateResponse('core', '403', [], 'guest'); | ||||||
| @ -169,6 +187,19 @@ class DocumentController extends Controller { | |||||||
| 				return $response; | 				return $response; | ||||||
| 			} | 			} | ||||||
| 		} catch (\Exception $e) { | 		} catch (\Exception $e) { | ||||||
|  | 			$this->logger->logException($e, ['app'=>'richdocuments']); | ||||||
|  | 			$params = [ | ||||||
|  | 				'remoteAddr' => $this->request->getRemoteAddress(), | ||||||
|  | 				'requestID' => $this->request->getId(), | ||||||
|  | 				'debugMode' => $this->settings->getSystemValue('debug'), | ||||||
|  | 				'errorClass' => get_class($e), | ||||||
|  | 				'errorCode' => $e->getCode(), | ||||||
|  | 				'errorMsg' => $e->getMessage(), | ||||||
|  | 				'file' => $e->getFile(), | ||||||
|  | 				'line' => $e->getLine(), | ||||||
|  | 				'trace' => $e->getTraceAsString() | ||||||
|  | 			]; | ||||||
|  | 			return new TemplateResponse('core', 'exception', $params, 'guest'); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		return new TemplateResponse('core', '403', [], 'guest'); | 		return new TemplateResponse('core', '403', [], 'guest'); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user