diff --git a/docker/init/00-setup.sql b/docker/init/00-setup.sql index 6fc0e9f..df2c380 100644 --- a/docker/init/00-setup.sql +++ b/docker/init/00-setup.sql @@ -8,8 +8,9 @@ CREATE TABLE IF NOT EXISTS families ( name VARCHAR(100) NOT NULL, db_name VARCHAR(64) NOT NULL UNIQUE, invite_code VARCHAR(32) NOT NULL UNIQUE, - is_active TINYINT(1) DEFAULT 1, - created_at DATETIME DEFAULT CURRENT_TIMESTAMP + is_active TINYINT(1) DEFAULT 1, + enabled_modules JSON DEFAULT NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS users ( diff --git a/header.php b/header.php index 790c3be..cb356fc 100644 --- a/header.php +++ b/header.php @@ -43,12 +43,13 @@ $currentLang = $_SESSION['app_lang'] ?? 'fr'; + @@ -86,9 +87,9 @@ $currentLang = $_SESSION['app_lang'] ?? 'fr';
🏠 πŸ“… - πŸ’° - πŸ–οΈ - 🎁 + πŸ’° + πŸ–οΈ + 🎁 βš™οΈ ParamΓ¨tres πŸ›‘οΈ Admin diff --git a/login.php b/login.php index 3dd6cb9..e6125a9 100644 --- a/login.php +++ b/login.php @@ -21,7 +21,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $error = tr('error_missing_fields'); } else { $stmt = $meta_pdo->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 + 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 = ? @@ -42,8 +43,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { '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['family_db'] = $user['db_name']; + $_SESSION['app_lang'] = $user['lang'] ?? 'fr'; + $_SESSION['enabled_modules'] = json_decode($user['enabled_modules'] ?? '["calendar","budget","holidays","gifts"]', true); $redirectTo = $_GET['redirect'] ?? '/index.php'; header('Location: ' . $redirectTo); exit; diff --git a/settings.php b/settings.php index 00b558c..4c854a7 100644 --- a/settings.php +++ b/settings.php @@ -14,6 +14,16 @@ $success = null; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $action = $_POST['action'] ?? ''; + if ($action === 'set_modules' && $family_id) { + $all = ['calendar', 'budget', 'holidays', 'gifts']; + $enabled = array_values(array_filter($all, fn($m) => isset($_POST['mod_' . $m]))); + if (empty($enabled)) $enabled = $all; // sΓ©curitΓ© : garder au moins tous les modules + $meta_pdo->prepare("UPDATE families SET enabled_modules = ? WHERE id = ?") + ->execute([json_encode($enabled), $family_id]); + $_SESSION['enabled_modules'] = $enabled; + $success = "Modules mis Γ  jour."; + } + if ($action === 'set_lang') { $lang = $_POST['lang'] ?? 'fr'; if (in_array($lang, ['fr', 'ca', 'en'])) { @@ -135,6 +145,38 @@ require __DIR__ . '/header.php'; + + +
+

🧩 Modules actifs

+

Choisissez les modules visibles dans la navigation (partagΓ© avec tous les membres de l'espace).

+ ['icon' => 'πŸ“…', 'label' => tr('menu_calendar')], + 'budget' => ['icon' => 'πŸ’°', 'label' => tr('menu_budget')], + 'holidays' => ['icon' => 'πŸ–οΈ', 'label' => tr('menu_holidays')], + 'gifts' => ['icon' => '🎁', 'label' => tr('menu_gifts')], + ]; + ?> +
+ +
+ $mod): $active = in_array($key, $enabledMods); ?> + + +
+ +
+
+ +

πŸ‘€ Mon profil