bunker-admin 91db29402c Add Gitea SSO, fix security audit findings, harden production defaults
Gitea SSO: cookie-based single sign-on via nginx auth_request — sets
cml_session cookie on login/refresh, validates via /api/auth/gitea-sso-validate,
injects X-WEBAUTH-USER header for reverse proxy auth. Dedicated GITEA_SSO_SECRET
and SERVICE_PASSWORD_SALT env vars isolate secret rotation.

Security fixes from March 30 audit: IDOR on ticketed events (requireEventOwnership
middleware), IDOR on action items (admin/assignee/creator check), path traversal
on photos (resolve-based validation), CSV upload size limit (5MB), shared calendar
email exposure removed.

Gitea provisioner: auto-sync docs repo collaborator access based on role
(CONTENT_ROLES get write, SUPER_ADMIN gets admin). Gitea client extended
with collaborator management API methods.

Production hardening: NODE_ENV defaults to production in docker-compose.prod.yml,
Grafana anonymous auth disabled, install.sh branch ref updated to main.

Admin UI: moved docs reset from toolbar to MkDocs Settings danger zone,
improved collab Ctrl+S to explicitly save + cache-bust preview.

MkDocs site rebuild with updated repo data, upgrade screenshots, and content.

Bunker Admin
2026-03-31 11:20:01 -06:00

351 lines
11 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://cmlite.org/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/404/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/lander/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/main/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/test-page/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/test/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/blog/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/blog/2026/03/27/test-blog-post---version-7/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/blog/2026/03/22/introducing-changemaker-lite-v2/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/comments/callback/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/phil/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/dashboard/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/people-access/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/settings/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/advocacy/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/advocacy/campaigns/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/advocacy/email-queue/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/advocacy/representatives/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/advocacy/responses/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/broadcast/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/broadcast/email-templates/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/broadcast/newsletter/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/broadcast/sms/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/map/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/map/areas/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/map/canvassing/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/map/data-quality/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/map/locations/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/map/settings/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/map/shifts/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/media/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/media/ads/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/media/analytics/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/media/curated/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/media/library/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/media/moderation/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/payments/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/payments/donations/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/payments/plans/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/payments/products/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/payments/settings/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/services/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/services/crowdsec/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/services/integrations/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/services/monitoring/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/services/tunnel/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/services/user-provisioning/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/web/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/web/documentation/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/web/homepage/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/web/landing-pages/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/admin/web/navigation/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/api/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/architecture/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/deployment/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/getting-started/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/getting-started/control-panel/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/getting-started/environment-variables/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/getting-started/features/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/getting-started/first-steps/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/getting-started/installation/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/getting-started/services/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/getting-started/upgrades/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/services/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/troubleshooting/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/user-guide/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/user-guide/campaigns/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/user-guide/donations/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/user-guide/events/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/user-guide/gallery/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/user-guide/map/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/user-guide/profile/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/user-guide/shifts/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/user-guide/shop/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/volunteer/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/volunteer/achievements/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/volunteer/canvassing/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/volunteer/shifts/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/docs/volunteer/social/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/includes/abbreviations/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/partials/integrations/analytics/custom/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/blog/archive/2026/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/blog/category/testing/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/blog/category/announcements/</loc>
<lastmod>2026-03-31</lastmod>
</url>
<url>
<loc>https://cmlite.org/blog/category/platform/</loc>
<lastmod>2026-03-31</lastmod>
</url>
</urlset>