feat: système multi-tenant (familles + inscription + invitations)
Deploy to Pacha Family / deploy (push) Failing after 3s

- docker/init/00-setup.sql : meta DB househub_meta (families + users) + grants
- docker/schema_family.sql : template DB par famille (toutes les pf_* tables)
- docker-compose.yml : MYSQL_DATABASE=househub_meta, init dir monté
- includes/meta_db.php : PDO vers househub_meta
- includes/db.php : connexion dynamique vers la DB famille (session)
- login.php : auth via meta DB + family_db en session + lien inscription
- register.php : inscription + création famille OU rejoindre via code
- invite.php : voir son code d'invitation + membres de l'espace

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
perco
2026-05-11 14:23:53 +02:00
co-authored by Claude Sonnet 4.6
parent 634e4647da
commit 84db4b6619
8 changed files with 646 additions and 23 deletions
+17 -6
View File
@@ -1,7 +1,7 @@
<?php
session_start();
require __DIR__ . '/includes/db.php';
require_once __DIR__ . '/includes/i18n.php'; // Toujours s'assurer que tr() est dispo
require_once __DIR__ . '/includes/i18n.php';
require_once __DIR__ . '/includes/meta_db.php';
$pageTitle = tr('login_title');
$activePage = "login";
@@ -20,16 +20,23 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!$username || !$password) {
$error = tr('error_missing_fields');
} else {
$stmt = $pdo->prepare("SELECT id, username, password_hash, display_name FROM pf_users WHERE username = ?");
$stmt = $meta_pdo->prepare("
SELECT u.id, u.username, u.password_hash, u.display_name, u.family_id, f.db_name
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'])) {
$_SESSION['user'] = [
'id' => (int)$user['id'],
'username' => $user['username'],
'id' => (int)$user['id'],
'username' => $user['username'],
'display_name' => $user['display_name'],
'family_id' => (int)$user['family_id'],
];
$_SESSION['family_db'] = $user['db_name'];
$redirectTo = $_GET['redirect'] ?? '/index.php';
header('Location: ' . $redirectTo);
exit;
@@ -75,7 +82,11 @@ require __DIR__ . '/header.php';
<?= tr('btn_login_submit') ?>
</button>
</form>
<p style="text-align:center;margin-top:20px;font-size:0.9rem;color:#64748b">
Pas encore de compte ? <a href="/register.php" style="color:var(--primary)">Créer un espace</a>
</p>
</div>
</div>