diff --git a/src/ahriman/core/util.py b/src/ahriman/core/util.py
index 7aa064cc..5315bbc4 100644
--- a/src/ahriman/core/util.py
+++ b/src/ahriman/core/util.py
@@ -19,13 +19,13 @@
#
import datetime
import io
+import logging
import os
import re
import requests
import subprocess
from enum import Enum
-from logging import Logger
from pathlib import Path
from typing import Any, Dict, Generator, IO, Iterable, List, Optional, Type, Union
@@ -38,7 +38,8 @@ __all__ = ["check_output", "check_user", "exception_response_text", "filter_json
def check_output(*args: str, exception: Optional[Exception] = None, cwd: Optional[Path] = None,
- input_data: Optional[str] = None, logger: Optional[Logger] = None, user: Optional[int] = None) -> str:
+ input_data: Optional[str] = None, logger: Optional[logging.Logger] = None,
+ user: Optional[int] = None) -> str:
"""
subprocess wrapper
@@ -48,7 +49,7 @@ def check_output(*args: str, exception: Optional[Exception] = None, cwd: Optiona
exception (Default value = None)
cwd(Optional[Path], optional): current working directory (Default value = None)
input_data(Optional[str], optional): data which will be written to command stdin (Default value = None)
- logger(Optional[Logger], optional): logger to log command result if required (Default value = None)
+ logger(Optional[logging.Logger], optional): logger to log command result if required (Default value = None)
user(Optional[int], optional): run process as specified user (Default value = None)
Returns:
diff --git a/src/ahriman/web/middlewares/exception_handler.py b/src/ahriman/web/middlewares/exception_handler.py
index fb71e0e0..fbd4065c 100644
--- a/src/ahriman/web/middlewares/exception_handler.py
+++ b/src/ahriman/web/middlewares/exception_handler.py
@@ -17,10 +17,11 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
#
+import logging
+
from aiohttp.web import middleware, Request
from aiohttp.web_exceptions import HTTPClientError, HTTPException, HTTPServerError
from aiohttp.web_response import json_response, StreamResponse
-from logging import Logger
from ahriman.web.middlewares import HandlerType, MiddlewareType
@@ -28,12 +29,12 @@ from ahriman.web.middlewares import HandlerType, MiddlewareType
__all__ = ["exception_handler"]
-def exception_handler(logger: Logger) -> MiddlewareType:
+def exception_handler(logger: logging.Logger) -> MiddlewareType:
"""
exception handler middleware. Just log any exception (except for client ones)
Args:
- logger(Logger): class logger
+ logger(logging.Logger): class logger
Returns:
MiddlewareType: built middleware
diff --git a/src/ahriman/web/views/user/logout.py b/src/ahriman/web/views/user/logout.py
index 825eeef3..471ac732 100644
--- a/src/ahriman/web/views/user/logout.py
+++ b/src/ahriman/web/views/user/logout.py
@@ -18,6 +18,7 @@
# along with this program. If not, see .
#
from aiohttp.web import HTTPFound
+from aiohttp.web_exceptions import HTTPUnauthorized
from ahriman.core.auth.helpers import check_authorized, forget
from ahriman.models.user_access import UserAccess
@@ -41,7 +42,10 @@ class LogoutView(BaseView):
Raises:
HTTPFound: on success response
"""
- await check_authorized(self.request)
+ try:
+ await check_authorized(self.request)
+ except HTTPUnauthorized:
+ raise HTTPUnauthorized(reason="I'm a teapot")
await forget(self.request, HTTPFound("/"))
raise HTTPFound("/")