Christian Krakau-Louis
5eea21c6f2
feat: add MSP workspace operator views
2026-05-23 20:10:30 +02:00
Christian Krakau-Louis
d180f984a6
feat: add workspace RBAC audit foundations
2026-05-23 19:38:27 +02:00
Christian Krakau-Louis
b503d9c9fe
feat: add workspace tenant foundations
2026-05-23 19:05:55 +02:00
Christian Krakau-Louis
d61a05bad0
feat: add outbound webhook event framework
2026-05-23 18:11:44 +02:00
Christian Krakau-Louis
e2b95f183d
fix: harden public api token storage
2026-05-23 17:47:13 +02:00
Christian Krakau-Louis
ee663afffb
feat: add scoped read-only public API
2026-05-23 17:39:34 +02:00
Christian Krakau-Louis
00ea392bee
feat: add TLS reporting posture summaries
2026-05-23 16:49:01 +02:00
Christian Krakau-Louis
10b0467424
feat: add m365 shared mailbox folder selection
2026-05-23 15:25:52 +02:00
Christian Krakau-Louis
5caefb06db
feat: add Microsoft 365 Graph mail source
2026-05-23 15:06:28 +02:00
Christian Krakau-Louis
9d0b12efea
feat: persist DMARC aggregate metadata
2026-05-23 14:17:09 +02:00
Christian Krakau-Louis
1f954c9e08
feat: add forensic report parsing storage
2026-05-23 12:52:54 +02:00
Christian Krakau-Louis
beae6e7469
feat: add operations health and domain setup polish
2026-05-23 11:37:10 +02:00
Christian Krakau-Louis
521dbc92d0
feat: add Cloudflare DNS integration
...
Closes #31
2026-05-23 01:17:59 +02:00
Christian Krakau-Louis
947428afb6
harden notification settings
2026-05-23 00:56:49 +02:00
Christian Krakau-Louis
d5693c6d1d
fix: encrypt mail source credentials
2026-05-23 00:27:08 +02:00
Christian Krakau-Louis
77fd0f9552
feat: add cached DNS checks
2026-05-22 23:30:12 +02:00
Christian Krakau-Louis
af66c93829
feat: add alert history
2026-05-22 23:18:32 +02:00
Christian Krakau-Louis
c1b81d3e06
feat: add mail import detail events
2026-05-22 20:11:56 +02:00
Christian Krakau-Louis
4fc69602b3
feat: add mail source import history
2026-05-22 19:29:49 +02:00
copilot-swe-agent[bot]
531dc968a8
feat: integrate Logto OIDC for user authentication
...
- Add Logto OIDC integration (app/core/logto.py): CookieStorage adapter,
create/decode session token helpers, sync_logto_user upsert
- New auth endpoints (/api/v1/auth): sign-in, callback, sign-out, me
- AuthRedirectMiddleware: protects HTML pages, redirects to /setup when
Logto is unconfigured, to /login otherwise
- Update require_admin_auth: accepts dmarq_session cookie JWT first,
then API key, then Bearer JWT (fully backward compatible)
- Update User model: add logto_id, username, picture, created_at, updated_at;
make hashed_password nullable for Logto-only users; is_superuser default=True
- New Alembic migration d4e5f6a7b8c9 for the above schema changes
- Add LOGTO_ENDPOINT / LOGTO_APP_ID / LOGTO_APP_SECRET / LOGTO_REDIRECT_URI
settings with logto_configured property
- Create login.html (Sign in with Logto button) and setup.html (step-by-step
configuration guide)
- Update base.html: user menu with avatar/name and sign-out via Alpine.js
fetch to /api/v1/auth/me
- Update settings.html: remove localStorage adminApiKey; session cookie is
sent automatically by browser; add 401 → /login redirect
- Update requirements.txt: replace fastapi-users additions with logto + aiohttp
- Add test_auth.py: 18 new tests covering session tokens, CookieStorage,
sync_logto_user, /me, /sign-in (503), /sign-out cookie clearing
- Fix test_security_extra.py: pass Request mock to require_admin_auth;
add new test_valid_session_cookie_returns_auth_context
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/b448f585-7646-40f8-ae2d-9986c361e3fd
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-30 10:09:50 +00:00
copilot-swe-agent[bot]
241713083b
Add persistent settings system with database backend and comprehensive UI
...
- New Setting ORM model (key-value store with category, value_type, audit fields)
- Alembic migration to create the settings table
- Settings API endpoints: GET/PUT /api/v1/settings/{key}, GET /api/v1/settings (list+filter), POST /api/v1/settings/bulk
- Default seeding (17 sensible defaults across general/dmarc/dns/cloudflare/notifications categories)
- Secret redaction for cloudflare.api_token and notifications.smtp_password
- Updated settings.html: General, DMARC Policy Defaults, DNS Resolver, Cloudflare Integration, Email Notifications sections
- All forms wired to the API via Alpine.js with flash feedback
- 12 new tests for the settings model and endpoints
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/19dbc6cd-07cb-406e-b3b6-411f7721f737
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-30 07:58:51 +00:00
copilot-swe-agent[bot]
551d604b8f
fix: address code review - clarify plaintext note, fix misleading template ternary
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/0c63851e-a69a-4a76-8dd8-25618e825b8c
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 19:37:10 +00:00
copilot-swe-agent[bot]
25b3567414
feat: implement Gmail API mail source with OAuth2, ingestion tracking, and UI
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/0c63851e-a69a-4a76-8dd8-25618e825b8c
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 19:34:03 +00:00
copilot-swe-agent[bot]
6d9392e5e7
feat: refactor IMAP config to DB, add multi-account mail sources admin UI
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/f141cd3b-8d0a-4c7e-b479-ee973c209c11
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 16:18:15 +00:00
Christian Krakau-Louis
e471404538
Merge pull request #27 from christianlouis/copilot/fix-script-location-error
...
fix: initialize Alembic migrations to resolve container startup failure
2026-03-29 13:44:27 +02:00
copilot-swe-agent[bot]
2192944acf
fix: add Alembic migration setup to resolve missing script_location error
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/bfb1bb7e-b0da-45b8-b034-b2331488905e
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 11:37:18 +00:00
copilot-swe-agent[bot]
01d0331136
Resolve linter contradictions: consolidate config, fix isort first-party, pylint 10/10
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/1e4a1f06-55b9-4040-853e-6aaf9ee574c8
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 11:31:15 +00:00
copilot-swe-agent[bot]
bab702a010
Add Docker build & GHCR publish stage, fix CI workflows, update AGENTS.md and testing docs
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/9d256101-34b6-4861-a8cf-7f86f32b54d5
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 10:23:49 +00:00
copilot-swe-agent[bot]
5fa315c8e3
Redesign test framework: fix conftest, rewrite all tests, fix model index conflicts, fix black formatting
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/9d256101-34b6-4861-a8cf-7f86f32b54d5
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 10:19:43 +00:00
google-labs-jules[bot]
1831c1a079
🔒 security: move IMAP credentials to request body and fix CI/pylint issues
...
- Moved IMAP credentials from query parameters to the request body for the test-connection endpoint.
- Created missing `__init__.py` files across `backend/app/` to fix CI `ModuleNotFoundError`.
- Reformatted `setup.py` and `user.py` using `black` to pass lint checks.
- Addressed Pylint warnings in `imap.py` (unused arguments, lazy logging, exception chaining).
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-23 18:57:40 +00:00
copilot-swe-agent[bot]
6ae017b142
Fix code formatting and linting issues
...
- Auto-format all Python files with black and isort
- Remove unused imports with autoflake
- Fix flake8 issues (missing newlines, blank lines, etc.)
- Fix nonlocal/global scope issues in main.py
- Fix security.py import order (E402)
- Remove f-string without placeholders
- Add nosec comment for intentional exception handling
- Fix test imports to match refactored DMARCParser API
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-02-09 12:08:51 +00:00
Christian Krakau-Louis
5e8b1f033f
Add comprehensive documentation for DMARQ, including user guides, deployment instructions, and feature descriptions
...
- Created main documentation index and user guide with sections on getting started, dashboard overview, managing domains, and reports.
- Added detailed deployment guide for Docker and manual installation.
- Included user-friendly explanations of DMARC, its benefits, and how to manage domains and reports.
- Implemented visual assets for dashboard, domains, IMAP, and reports.
- Established requirements for documentation build using MkDocs and Material theme.
- Integrated navigation structure for easy access to all documentation sections.
2025-04-21 01:49:34 +02:00
Christian Krakau-Louis
f910cb0ba4
Add initial MVP documentation for DMARQ platform, detailing backend architecture, frontend implementation, and deployment structure
2025-04-17 15:20:42 +02:00