- Add runtime field to Movie model and display formatted duration (e.g., 2h 22min) on movie cards - Add bulk "Refresh OMDb" button in admin panel for selected movies - Add runtime field to movie edit modal in admin panel - Implement first-time setup flow: show admin creation form on login page when no admin exists - Block registration page until initial setup is complete Co-Authored-By: Claude Opus 4.5 <[email protected]>
108 lines
4.4 KiB
HTML
108 lines
4.4 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Pool Oscars</title>
|
|
<script src="./js/app_theme.js"></script>
|
|
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
<link href="./css/app.css" rel="stylesheet">
|
|
<style>
|
|
/* Ensure the body takes the full height */
|
|
html, body {
|
|
height: 100%;
|
|
}
|
|
|
|
/* Flexbox layout to make the content take available space */
|
|
.container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: space-between;
|
|
min-height: 100vh;
|
|
}
|
|
|
|
</style>
|
|
</head>
|
|
<body class="bg-light">
|
|
<button class="theme-toggle theme-toggle--floating" type="button" data-theme-toggle role="switch" aria-checked="false" aria-label="Basculer le mode sombre">
|
|
<span class="theme-toggle-icon theme-toggle-icon-sun" aria-hidden="true">
|
|
<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
|
<circle cx="12" cy="12" r="4"></circle>
|
|
<path d="M12 2v2"></path>
|
|
<path d="M12 20v2"></path>
|
|
<path d="M4.93 4.93l1.41 1.41"></path>
|
|
<path d="M17.66 17.66l1.41 1.41"></path>
|
|
<path d="M2 12h2"></path>
|
|
<path d="M20 12h2"></path>
|
|
<path d="M4.93 19.07l1.41-1.41"></path>
|
|
<path d="M17.66 6.34l1.41-1.41"></path>
|
|
</svg>
|
|
</span>
|
|
<span class="theme-toggle-thumb" aria-hidden="true"></span>
|
|
<span class="theme-toggle-icon theme-toggle-icon-moon" aria-hidden="true">
|
|
<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
|
<path d="M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z"></path>
|
|
</svg>
|
|
</span>
|
|
</button>
|
|
|
|
<div class="container">
|
|
<!-- First-time setup card (hidden by default) -->
|
|
<div id="setup-card" class="card p-4 d-none" style="max-width: 450px; margin: auto;">
|
|
<div class="text-center mb-3">
|
|
<img src="img/logo.png" class="logo-invert" style="width: 80%;" alt="Pool Oscars">
|
|
</div>
|
|
<div class="alert alert-info mb-3">
|
|
<strong>Première installation</strong><br>
|
|
Aucun administrateur n'existe. Créez le premier compte admin pour commencer.
|
|
</div>
|
|
<form id="setup-form">
|
|
<div class="mb-3">
|
|
<label for="setup-name" class="form-label">Nom</label>
|
|
<input type="text" class="form-control" id="setup-name" placeholder="Votre nom" required>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="setup-email" class="form-label">Courriel</label>
|
|
<input type="email" class="form-control" id="setup-email" placeholder="[email protected]" required>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="setup-password" class="form-label">Mot de passe</label>
|
|
<input type="password" class="form-control" id="setup-password" minlength="6" required>
|
|
<div class="form-text">Minimum 6 caractères</div>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="setup-password-confirm" class="form-label">Confirmer le mot de passe</label>
|
|
<input type="password" class="form-control" id="setup-password-confirm" minlength="6" required>
|
|
</div>
|
|
<div id="setup-error" class="alert alert-danger d-none" role="alert"></div>
|
|
<button type="submit" class="btn btn-warning w-100">Créer le compte admin</button>
|
|
</form>
|
|
</div>
|
|
|
|
<!-- Normal login card -->
|
|
<div id="login-card" class="card p-4" style="max-width: 400px; margin: auto;">
|
|
<div class="text-center mb-4">
|
|
<img src="img/logo.png" class="logo-invert" style="width: 80%;" alt="Pool Oscars">
|
|
</div>
|
|
<form id="login-form">
|
|
<div class="mb-3">
|
|
<label for="email" class="form-label">Courriel</label>
|
|
<input type="email" class="form-control" id="email" required>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="password" class="form-label">Mot de passe</label>
|
|
<input type="password" class="form-control" id="password" required>
|
|
</div>
|
|
<button type="submit" class="btn btn-primary w-100">Connexion</button>
|
|
</form>
|
|
<p class="mt-3 text-center">Pas de compte? <a href="/register.html">Enregistrez-vous</a></p>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
|
|
<script src="./js/app_index.js"></script>
|
|
|
|
</body>
|
|
</html>
|