fix(plugins): forgejo_error_reporter permissions korrekt auf Manifest-Ebene
Check Cross-Plugin Imports / check (push) Has been cancelled

Der vorherige Patch hatte permissions=["system:read"] versehentlich in die
PluginRouteDef-kwargs gesetzt statt auf Manifest-Ebene — der Key blieb
dadurch unregistriert (live bewiesen: nur 11/12 Keys im Produktionskatalog
sichtbar). Korrigiert; Test f9 prueft jetzt die ECHTEN Manifeste statt
manueller Registrierung, so haette der Fehler ab sofort gefangen werden
muessen.

Verifikation: tests/test_audit_architecture_fixes.py 17/17,
manifest.permissions=['system:read'], is_core=False, routes=1.
This commit is contained in:
Agent Zero
2026-09-13 02:35:52 +02:00
parent 4210e164fa
commit 1b80090ad2
2 changed files with 23 additions and 6 deletions
@@ -29,19 +29,21 @@ class ForgejoErrorReporterPlugin(BasePlugin):
dependencies=[], dependencies=[],
events=[], events=[],
migrations=[], migrations=[],
permissions=[], # Audit P1 (permission catalog): /status route requires system:read —
# the key must be grantable via the manifest.
permissions=["system:read"],
routes=[ routes=[
PluginRouteDef( PluginRouteDef(
path="/api/v1/forgejo-error-reporter", path="/api/v1/forgejo-error-reporter",
module="app.plugins.builtins.forgejo_error_reporter.routes", module="app.plugins.builtins.forgejo_error_reporter.routes",
router_attr="router", router_attr="router",
permissions=["system:read"], ),
),
], ],
author="LeoCRM Team", author="LeoCRM Team",
min_app_version="1.0.0", min_app_version="1.0.0",
contract_version="1.0.0") contract_version="1.0.0",
)
def __init__(self) -> None: def __init__(self) -> None:
super().__init__() super().__init__()
+17 -2
View File
@@ -344,11 +344,26 @@ def test_f9_all_audit_permission_keys_registered():
) )
init_permission_registry(set()) init_permission_registry(set())
# Register from the REAL manifests (not hand-picked lists) — this catches
# kwargs-level corruption like the bug where permissions=[...] had landed
# inside PluginRouteDef kwargs instead of the manifest level.
from app.plugins.builtins.forgejo_error_reporter.plugin import (
ForgejoErrorReporterPlugin,
)
from app.plugins.builtins.permissions.plugin import PermissionsPlugin
assert PermissionsPlugin().manifest.permissions == [
"permissions:read", "permissions:admin",
]
assert ForgejoErrorReporterPlugin().manifest.permissions == ["system:read"], (
"system:read must be declared at MANIFEST level (not PluginRouteDef kwargs)"
)
get_permission_registry().register_plugin_permissions( get_permission_registry().register_plugin_permissions(
"permissions", ["permissions:read", "permissions:admin"] "permissions", PermissionsPlugin().manifest.permissions
) )
get_permission_registry().register_plugin_permissions( get_permission_registry().register_plugin_permissions(
"forgejo_error_reporter", ["system:read"] "forgejo_error_reporter", ForgejoErrorReporterPlugin().manifest.permissions
) )
known = get_permission_registry().get_all() known = get_permission_registry().get_all()