- Permissions 100% depuis user_permissions (plus de hardcode) - Middleware injecte perms dans chaque requête - Créneaux auto: 09h-12h30 / 14h-16h45, pas 15min, hprod lun-mar, prod mer-jeu - Assignations par défaut: par domaine, app_type, zone, serveur (table default_assignments) - Auto-liaison app_group: même intervenant recette+prod - Audit Splunk: /var/log/patchcenter_audit.json (JSON one-line par event) - Login/logout/campagnes/prereqs loggés en base + fichier - Page erreur maintenance (500/404) avec contact SecOps - Accents français dans toute lUI - Operator affiché comme Intervenant - Session 1h, redirect / vers dashboard si connecté - Demo mode prereqs (DEMO_MODE=True) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
29 lines
1.1 KiB
HTML
29 lines
1.1 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>PatchCenter — Maintenance</title>
|
|
<style>
|
|
body { background: #0a0e17; color: #e2e8f0; font-family: 'Segoe UI', system-ui, sans-serif; display: flex; justify-content: center; align-items: center; min-height: 100vh; margin: 0; }
|
|
.container { text-align: center; max-width: 500px; }
|
|
h1 { color: #00d4ff; font-size: 2rem; margin-bottom: 0.5rem; }
|
|
.code { font-size: 5rem; color: #1e3a5f; font-weight: bold; }
|
|
p { color: #94a3b8; line-height: 1.6; }
|
|
.contact { margin-top: 2rem; padding: 1rem; background: #111827; border: 1px solid #1e3a5f; border-radius: 8px; }
|
|
.contact span { color: #00d4ff; }
|
|
a { color: #00d4ff; text-decoration: none; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<div class="code">{{ code }}</div>
|
|
<h1>{{ title }}</h1>
|
|
<p>{{ message }}</p>
|
|
<div class="contact">
|
|
<p>Contacter le <span>Responsable SecOps</span></p>
|
|
<p><a href="/">Retour à l'accueil</a></p>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|