Ajout des fonctions de création auto d'un bateau avec timer toutes les 5min
This commit is contained in:
+41
-1
@@ -388,7 +388,9 @@ $requete .= ' TB_Bateaux.Date_derniere_maj AS Date_derniere_maj, ';
|
||||
|
||||
$requete = 'SELECT *, ';
|
||||
$requete .= ' (SELECT Adresse_mac FROM TB_Affectations_bateaux WHERE ID_Bateau=TB_Bateaux.Cle_primaire AND Date_fin IS NULL) AS Adresse_mac, ';
|
||||
$requete .= ' (SELECT Version_soft FROM TB_Generations_bateaux WHERE ID_Bateau=TB_Bateaux.Cle_primaire AND Date_fin IS NULL) AS version ';
|
||||
$requete .= ' (SELECT Version_soft FROM TB_Generations_bateaux WHERE ID_Bateau=TB_Bateaux.Cle_primaire AND Date_fin IS NULL) AS version, ';
|
||||
// Adresse NetBird du module affecté (Live distant possible seulement si elle est connue - synthèse §49) :
|
||||
$requete .= ' (SELECT C.Adresse_netbird FROM TB_Affectations_bateaux A JOIN TB_Cartes C ON C.Adresse_mac=A.Adresse_mac WHERE A.ID_Bateau=TB_Bateaux.Cle_primaire AND A.Date_fin IS NULL) AS Adresse_netbird ';
|
||||
$requete .= ' FROM TB_Bateaux WHERE Cle_primaire=? ';
|
||||
//echo "Requête = [ ".$requete."; ]<br />";
|
||||
$reponse = Requete_preparee_bdd($requete,
|
||||
@@ -491,6 +493,31 @@ $requete .= ' TB_Bateaux.Date_derniere_maj AS Date_derniere_maj, ';
|
||||
$est_administrateur = ($_SESSION['shipmember']['Niveau_acces'] >= NIVEAU_ACCES_MINI_ADMINISTRATEUR);
|
||||
$peut_inviter = ($est_administrateur || $acces_profil['Creation_profils'] == 1);
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------
|
||||
// Live distant (synthèse §49) : création d'un ticket (aléatoire, 60 s, usage unique, lié à l'utilisateur et au
|
||||
// bateau) puis redirection vers https://b<N>.ship2net.fr/_auth?ticket=... - le vérificateur du VPS l'échange
|
||||
// contre une session (cookie propre au sous-domaine du bateau). Seule l'empreinte du ticket est enregistrée.
|
||||
// Droit : arriver jusqu'ici suffit (administrateur, ou accès actif à CE bateau - contrôlé plus haut) ; le
|
||||
// vérificateur revérifie de toute façon à l'ouverture de la session puis à chaque requête.
|
||||
$live_possible = ($bateau['Adresse_netbird'] ?? '') != '';
|
||||
if (isset($_POST['ouvrir_live']))
|
||||
{
|
||||
if (!$live_possible)
|
||||
{
|
||||
$_SESSION['Bateaux']['flash_erreur'] = t("Aucun module ShipBase joignable n'est affecté à ce bateau : le Live est indisponible.");
|
||||
Fermeture_bdd();
|
||||
header('Location: bateaux.php');
|
||||
exit();
|
||||
}
|
||||
$ticket = bin2hex(random_bytes(32));
|
||||
Requete_preparee_bdd("INSERT INTO TB_Tickets_live (Empreinte, ID_Shipmember, ID_Bateau, Expiration) VALUES (?, ?, ?, NOW() + INTERVAL 60 SECOND)",
|
||||
array(array('s', hash('sha256', $ticket)), array('i', $_SESSION['shipmember']['Cle_primaire']), array('i', $bateau['Cle_primaire'])),
|
||||
__FILE__, __LINE__);
|
||||
Fermeture_bdd();
|
||||
header('Location: https://b'.(int)$bateau['Cle_primaire'].'.'.URL_SITE.'/_auth?ticket='.$ticket, true, 303);
|
||||
exit();
|
||||
}
|
||||
|
||||
if (isset($_POST['creer_invitation']))
|
||||
{
|
||||
if (!$peut_inviter) $_SESSION['Bateaux']['flash_erreur'] = t("Vous n'avez pas le droit d'inviter sur ce bateau.");
|
||||
@@ -768,6 +795,19 @@ $requete .= ' TB_Bateaux.Date_derniere_maj AS Date_derniere_maj, ';
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
//--------------------------------
|
||||
// Bouton Live (synthèse §49) - formulaire POST avec jeton (un navigateur qui pré-charge les liens ne crée pas
|
||||
// de tickets), ouvert dans un nouvel onglet :
|
||||
echo '<div class="bouton_live">';
|
||||
if ($live_possible)
|
||||
{
|
||||
echo '<form action="bateaux.php" method="post" target="_blank">'.Champ_jeton_csrf();
|
||||
echo '<button type="submit" name="ouvrir_live" title="'.t("Ouvrir le bateau en temps réel (nouvel onglet)").'">'.t("Live").'</button>';
|
||||
echo '</form>';
|
||||
}
|
||||
else echo '<span class="live_indisponible" title="'.t("Aucun module ShipBase joignable n'est affecté à ce bateau").'">'.t("Live indisponible").'</span>';
|
||||
echo '</div>';
|
||||
|
||||
echo '<div class="derniere_maj">'.t("Dernières données reçues").' : <span class="gras">'.$bateau['Date_derniere_maj'].' [UTC]</span></div>';
|
||||
echo '</div>';
|
||||
//--------------------------------
|
||||
|
||||
Reference in New Issue
Block a user