From 9fe63b49d6e7d38d8e5b3812bd8d2aff987abf37 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Fri, 21 Feb 2025 11:04:19 +0200 Subject: [PATCH] feat: add `normalize_path ` helper (#2981) --- lnbits/helpers.py | 15 +++++++++++++++ lnbits/middleware.py | 3 ++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lnbits/helpers.py b/lnbits/helpers.py index 74768d73..4f692236 100644 --- a/lnbits/helpers.py +++ b/lnbits/helpers.py @@ -312,3 +312,18 @@ def get_api_routes(routes: list) -> dict[str, str]: data["/".join(segments[0:4])] = segments[1].capitalize() return data + + +def path_segments(path: str) -> list[str]: + path = path.strip("/") + segments = path.split("/") + if len(segments) < 2: + return segments + if segments[0] == "upgrades": + return segments[2:] + return segments[0:] + + +def normalize_path(path: Optional[str]) -> str: + path = path or "" + return "/" + "/".join(path_segments(path)) diff --git a/lnbits/middleware.py b/lnbits/middleware.py index 5db5f9bd..8962b9c3 100644 --- a/lnbits/middleware.py +++ b/lnbits/middleware.py @@ -15,7 +15,7 @@ from starlette.types import ASGIApp, Receive, Scope, Send from lnbits.core.db import core_app_extra from lnbits.core.models import AuditEntry -from lnbits.helpers import template_renderer +from lnbits.helpers import normalize_path, template_renderer from lnbits.settings import settings @@ -156,6 +156,7 @@ class AuditMiddleware(BaseHTTPMiddleware): if settings.is_super_user(user_id): user_id = "super_user" component = "core" + path = normalize_path(path) if path and not path.startswith("/api"): component = path.split("/")[1]