ObsiGate/docs/IMPLEMENTATION_PLAN.md
Bruno Charest 482937fb30 Add audit logging, rate limiting, secret redactor, and backlinks
Implement several security and feature improvements across the backend
and frontend:
- New IP-based rate limiter for authentication endpoints
- New audit logging system for sensitive operations
- New secret redactor to mask sensitive patterns in rendered content
- Configurable token TTL and IGNORED_DIRS via environment variables
- Add backlink index and API endpoint
- Add preview tab support with single/double-click behavior in tree
- Add file backup before write/delete operations
2026-05-26 10:27:00 -04:00

61 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ObsiGate — Plan d'implémentation Roadmap
> Généré le 2026-05-26 — Implémentation des items du ROADMAP.md
## Ordre d'implémentation
### Phase 1 — Backend Sécurité & Robustesse (P0P1) ✅
| # | Item | Fichiers | Statut |
|---|------|----------|--------|
| 1 | Rate limiting login | `backend/ratelimit.py` (nouveau), `backend/auth/router.py` | ✅ |
| 2 | Secret redactor | `backend/secret_redactor.py` (nouveau), `backend/main.py` | ✅ |
| 3 | Log d'audit | `backend/audit.py` (nouveau), `backend/main.py` | ✅ |
| 4 | Backup avant écriture | `backend/main.py` (PUT/DELETE endpoints) | ✅ |
### Phase 2 — Configuration & Bug fixes (P1P2) ✅
| # | Item | Fichiers | Statut |
|---|------|----------|--------|
| 5 | TOC scroll fix (slugify unifié) | `backend/main.py` (`unicodedata.category`) | ✅ |
| 6 | IGNORED_DIRS configurable | `backend/indexer.py`, `backend/watcher.py`, env var `OBSIGATE_IGNORED_DIRS` | ✅ |
| 7 | Timeout session configurable | `backend/auth/jwt_handler.py`, env vars `OBSIGATE_ACCESS_TOKEN_TTL` / `OBSIGATE_REFRESH_TOKEN_TTL` | ✅ |
### Phase 3 — UX & Fonctionnel (P2P3) ✅
| # | Item | Fichiers | Statut |
|---|------|----------|--------|
| 8 | Clic simple/double clic arborescence | `frontend/app.js` (TabManager.openPreview/openPersistent), `frontend/style.css` | ✅ |
| 9 | Backlinks panel | `backend/indexer.py` (_backlink_index), `backend/main.py` (GET /backlinks), `frontend/app.js` (renderBacklinksPanel), `frontend/style.css` | ✅ |
| 10 | Gestion fichiers non-supportés | `backend/main.py` (FileContentResponse + unsupported), `frontend/app.js` (renderFile) | ✅ |
## Fichiers créés
- `backend/ratelimit.py` — IP-based rate limiter
- `backend/secret_redactor.py` — Regex-based secret masking
- `backend/audit.py` — JSON-lines audit logging
## Fichiers modifiés
- `backend/main.py` — +audit, +backup, +redaction, +backlinks endpoint, +unsupported files, +slugify fix
- `backend/auth/router.py` — +IP rate limiting on login
- `backend/auth/jwt_handler.py` — +configurable TTL via env vars
- `backend/indexer.py` — +IGNORED_DIRS, +backlink index
- `backend/watcher.py` — +configurable IGNORED_DIRS
- `frontend/app.js` — +TabManager preview/persistent, +backlinks panel, +unsupported file UI, +tree dblclick
- `frontend/style.css` — +preview tab style, +backlinks panel style, +unsupported file style
## Nouvelles variables d'environnement
| Variable | Défaut | Description |
|----------|--------|-------------|
| `OBSIGATE_LOGIN_MAX_ATTEMPTS` | 10 | Échecs max par IP avant blocage |
| `OBSIGATE_LOGIN_WINDOW_SECONDS` | 900 | Fenêtre de blocage IP (secondes) |
| `OBSIGATE_IGNORED_DIRS` | `.obsidian,.trash,.git,__pycache__,node_modules,.obsigate-backup` | Dossiers ignorés |
| `OBSIGATE_ACCESS_TOKEN_TTL` | 3600 | Durée access token (secondes) |
| `OBSIGATE_REFRESH_TOKEN_TTL` | 604800 | Durée refresh token (secondes) |
| `OBSIGATE_BACKUP_DIR` | `.obsigate-backup` | Répertoire de backups |
| `OBSIGATE_AUDIT_MAX_SIZE` | 10485760 | Taille max du fichier d'audit avant rotation |
## Reste à faire (non implémenté dans cette session)
- 🟢 Publication publique de documents
- 🟢 Dashboard statistiques
- 🟢 Webhooks
- 🟢 Documentation OpenAPI enrichie
- 🟡 Gestion des conflits Syncthing
- ⬜ Tests, CI/CD, i18n, CHANGELOG, MFA