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';
HouseHub
+
@@ -86,9 +87,9 @@ $currentLang = $_SESSION['app_lang'] ?? 'fr';
π = tr('menu_home') ?>
π
= tr('menu_calendar') ?>
-
π° = tr('menu_budget') ?>
-
ποΈ = tr('menu_holidays') ?>
-
π = tr('menu_gifts') ?>
+
π° = tr('menu_budget') ?>
+
ποΈ = tr('menu_holidays') ?>
+
π = tr('menu_gifts') ?>
βοΈ 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')],
+ ];
+ ?>
+
+
+
+