379a9a115b
fix(security): isActive defense-in-depth, MIME magic bytes upload, tenantId=origins OAuth
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 54s
2026-03-15 17:34:19 +01:00
61d8a5257d
feat: admin/superadmin — fix response shape, ban/unban, stats tab, role restriction
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 24s
2026-03-15 02:30:11 +01:00
494206b5b3
feat: observability — Winston logging, pagination admin, N+1 playlists
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 27s
2026-03-14 23:21:42 +01:00
24ae8854ce
fix: GET /admin/users — find() x5 → variable locale
2026-03-14 19:35:04 +01:00
c7815aac2f
feat: token refresh, video upload, playlist routes complets
...
- auth: cookie od_token 7j, refresh token od_refresh 30j, POST /api/auth/refresh, GET /api/auth/me/optional
- admin: POST /api/admin/videos/upload via multer (mp4/webm, 4Go max, UUID filename)
- playlist: PATCH /:id, DELETE /:id, POST /:id/videos, DELETE /:id/videos/:videoId
- env: UPLOADS_DIR documenté dans .env.example
2026-03-14 14:32:18 +01:00
666cf6a435
feat: stream route, admin subscriptions, fix CORS multi-origin
...
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 21s
- index.ts : CORS supporte plusieurs origines (FRONTEND_URL séparé par virgule)
- stream.routes.ts : GET /api/stream/:key* — sert fichiers locaux avec auth
optionnelle, contrôle d'accès par level, support Range requests (seekable)
- admin.routes.ts : POST /api/admin/users/:id/subscriptions — assigne un plan,
expire l'abonnement actif précédent
- Fix .env VPS : FRONTEND_URL=origins.tetardtek.com (domaine correct)
2026-03-14 09:58:01 +01:00
7c727aa802
feat(admin): requireAdmin middleware + /api/admin routes
...
- requireAdmin: charge user_roles en DB, accepte admin/super_admin
- GET/POST/PATCH/DELETE /api/admin/videos (publiées + non publiées)
- GET /api/admin/users avec rôles et abonnement actif
- PATCH /api/admin/users/:id/roles (remplacement atomique par slugs)
- GET/POST/PATCH /api/admin/plans
2026-03-14 07:46:35 +01:00