prepare(" SELECT u.id, u.username, u.password_hash, u.display_name, u.family_id, u.is_admin, u.is_active, u.lang, f.db_name, f.is_active as family_active, f.enabled_modules FROM users u LEFT JOIN families f ON f.id = u.family_id WHERE u.username = ? "); $stmt->execute([$username]); $user = $stmt->fetch(PDO::FETCH_ASSOC); if ($user && password_verify($password, $user['password_hash'])) { if (!$user['is_active']) { $error = "Compte désactivé. Contactez l'administrateur."; } elseif ($user['family_id'] && !$user['family_active']) { $error = "Espace familial désactivé. Contactez l'administrateur."; } else { session_regenerate_id(true); $_SESSION['user'] = [ 'id' => (int)$user['id'], 'username' => $user['username'], 'display_name' => $user['display_name'], 'family_id' => (int)$user['family_id'], 'is_admin' => (bool)$user['is_admin'], ]; $_SESSION['family_db'] = $user['db_name']; $_SESSION['app_lang'] = $user['lang'] ?? 'fr'; $_SESSION['enabled_modules'] = json_decode($user['enabled_modules'] ?? '["calendar","budget","holidays","gifts","calendar_ios"]', true); $redirectTo = $_GET['redirect'] ?? '/index.php'; header('Location: ' . $redirectTo); exit; } } else { $error = tr('error_invalid_credentials'); } } } } require __DIR__ . '/header.php'; ?>
= tr('login_subtitle') ?>
Pas encore de compte ? Créer un espace