From 38544b84cfa436129f919845d1dbc086402f2b38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Balv=C3=ADn?= Date: Mon, 27 Jul 2026 10:27:41 +0200 Subject: [PATCH] fix(admin): ship templates in wheel, fix CSP and bootstrap login --- .coverage | Bin 159744 -> 0 bytes .gitignore | 9 ++ CHANGELOG.md | 21 ++-- pyproject.toml | 2 +- src/volumen/app.py | 35 +++++- src/volumen/auth.py | 4 + src/volumen/users.py | 4 +- src/volumen/web/templates/form.html.jinja | 10 +- src/volumen/web/templates/layout.html.jinja | 25 +++- src/volumen/web/templates/list.html.jinja | 16 +-- src/volumen/web/templates/settings.html.jinja | 18 +-- tests/test_admin.py | 46 +++++++- tests/test_modules.py | 73 ++++++++++++ tests/test_security.py | 111 ++++++++++++++++++ tests/test_users.py | 28 +++++ 15 files changed, 361 insertions(+), 41 deletions(-) delete mode 100644 .coverage diff --git a/.coverage b/.coverage deleted file mode 100644 index abcf0a6fb3ef749c133ac7021de7105c8011135b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159744 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 k86` in `list.html.jinja` and `settings.html.jinja`** — inline scripts in these templates now carry `nonce="{{ csp_nonce | default('') }}"` so they match the nonce in the CSP header. +- **Bootstrap `admin.password_hash` ignored when `users.toml` is empty** — `Users.all` now falls back to the bootstrap admin even when `users.toml` exists but is empty (e.g. right after `volumen init`, which creates the file via `Path.touch()`). Previously the first login after a clean install failed. +- **`admin_context` did not pass `users_exist`** — the login page showed the “No users configured” warning even when authentication worked. Added `"users_exist": users_obj.any` to the admin template context. +- **Inline `style="..."` blocked by strict admin CSP** — the admin templates used inline `style="..."` attributes (and one `card.style.display = ...` JS assignment) which the new strict `style-src 'self' 'nonce-…'` directive blocks. Replaced every offending attribute with a utility class in the ` @@ -888,7 +909,7 @@
{{ display_name }}
{{ current_role }}
-
+
@@ -82,7 +82,7 @@ {% endif %} -