update
This commit is contained in:
@@ -56,6 +56,8 @@ final class SchemaModel extends BaseModel
|
||||
'equipe_pta',
|
||||
'equipe_pta_membre',
|
||||
'structure_creneau_reference',
|
||||
'compte_acces',
|
||||
'journal_activite',
|
||||
];
|
||||
|
||||
$placeholders = implode(',', array_fill(0, count($requiredTables), '?'));
|
||||
@@ -82,6 +84,7 @@ final class SchemaModel extends BaseModel
|
||||
'planning' => ['date_validation'],
|
||||
'agent' => ['email', 'telephone', 'adresse', 'est_diplome', 'diplome_libelle', 'id_structure', 'id_poste', 'type_contrat', 'date_debut_contrat', 'date_fin_contrat', 'droit_enveloppe_formation', 'commentaire_pta'],
|
||||
'structure' => ['type_affectation'],
|
||||
'compte_acces' => ['mot_de_passe_hash'],
|
||||
];
|
||||
|
||||
foreach ($requiredColumns as $table => $columns) {
|
||||
@@ -108,6 +111,7 @@ final class SchemaModel extends BaseModel
|
||||
}
|
||||
|
||||
$this->assertAccessViews();
|
||||
$this->assertJetonViews();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -145,4 +149,39 @@ final class SchemaModel extends BaseModel
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Vues des comptes à jeton et du journal (V7.11).
|
||||
*
|
||||
* Même logique fail-closed que pour les vues de droits : sans elles,
|
||||
* personne ne peut plus s'authentifier et aucune action ne serait tracée.
|
||||
* Mieux vaut un message explicite au démarrage qu'une application ouverte
|
||||
* sans journal.
|
||||
*/
|
||||
private function assertJetonViews(): void
|
||||
{
|
||||
$requiredViews = [
|
||||
'v_acces_compte',
|
||||
'v_acces_compte_manquant',
|
||||
'v_journal_activite',
|
||||
];
|
||||
|
||||
$placeholders = implode(',', array_fill(0, count($requiredViews), '?'));
|
||||
$stmt = $this->pdo->prepare(
|
||||
"SELECT TABLE_NAME
|
||||
FROM information_schema.VIEWS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME IN ($placeholders)"
|
||||
);
|
||||
$stmt->execute($requiredViews);
|
||||
$missing = array_values(array_diff($requiredViews, $stmt->fetchAll(\PDO::FETCH_COLUMN)));
|
||||
|
||||
if ($missing) {
|
||||
throw new \RuntimeException(
|
||||
'Comptes d’accès indisponibles : vue(s) manquante(s) : '
|
||||
. implode(', ', $missing)
|
||||
. '. Exécutez database/migration_v7_9e_dsi_comptes_journal.sql.'
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user