mirror of
https://github.com/RaspbianFrance/raspisms.git
synced 2025-05-06 08:16:26 +02:00
Ajout de la gestion de base des webhook
This commit is contained in:
parent
164784f3f0
commit
7c78832fe1
8 changed files with 466 additions and 0 deletions
controllers
158
controllers/webhooks.php
Executable file
158
controllers/webhooks.php
Executable file
|
@ -0,0 +1,158 @@
|
|||
<?php
|
||||
/**
|
||||
* Page des webhooks
|
||||
*/
|
||||
class webhooks extends Controller
|
||||
{
|
||||
/**
|
||||
* Cette fonction est appelée avant toute les autres :
|
||||
* Elle vérifie que l'utilisateur est bien connecté
|
||||
* @return void;
|
||||
*/
|
||||
public function before()
|
||||
{
|
||||
internalTools::verifyConnect();
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction retourne toutes les webhooks, sous forme d'un tableau permettant l'administration de ces webhooks
|
||||
*/
|
||||
public function byDefault()
|
||||
{
|
||||
//Creation de l'object de base de données
|
||||
global $db;
|
||||
|
||||
//Recupération des webhooks
|
||||
$webhooks = $db->getFromTableWhere('webhooks');
|
||||
|
||||
$this->render('webhooks/default', array(
|
||||
'webhooks' => $webhooks,
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction va supprimer une liste de webhooks
|
||||
* @param int... $ids : Les id des webhooks à supprimer
|
||||
* @return boolean;
|
||||
*/
|
||||
public function delete($csrf)
|
||||
{
|
||||
if (!internalTools::verifyCSRF($csrf))
|
||||
{
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('webhooks'));
|
||||
return false;
|
||||
}
|
||||
|
||||
//On récupère les ids comme étant tous les arguments de la fonction et on supprime le premier (csrf)
|
||||
$ids = func_get_args();
|
||||
unset($ids[0]);
|
||||
|
||||
//Create de l'object de base de données
|
||||
global $db;
|
||||
|
||||
$db->deleteWebhooksIn($ids);
|
||||
header('Location: ' . $this->generateUrl('webhooks'));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction retourne la page d'ajout d'un webhook
|
||||
*/
|
||||
public function add()
|
||||
{
|
||||
$this->render('webhooks/add');
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction retourne la page d'édition des webhook
|
||||
* @param int... $ids : Les id des commandes à editer
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
global $db;
|
||||
$ids = func_get_args();
|
||||
|
||||
$webhooks = $db->getWebhooksIn($ids);
|
||||
$this->render('webhooks/edit', array(
|
||||
'webhooks' => $webhooks,
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction insert une nouvelle commande
|
||||
* @param $csrf : Le jeton CSRF
|
||||
* @param string $_POST['url'] : L'adresse url à laquelle on va envoyer la requête
|
||||
* @param string $_POST['type'] : Le type de hook à ajouter
|
||||
* @return boolean;
|
||||
*/
|
||||
public function create($csrf)
|
||||
{
|
||||
if (!internalTools::verifyCSRF($csrf))
|
||||
{
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('webhooks'));
|
||||
return false;
|
||||
}
|
||||
|
||||
global $db;
|
||||
|
||||
$url = $_POST['url'];
|
||||
$type = $_POST['type'];
|
||||
|
||||
if (!$db->insertIntoTable('webhooks', ['url' => $url, 'type' => $type]))
|
||||
{
|
||||
$_SESSION['errormessage'] = 'Impossible créer ce webhook.';
|
||||
header('Location: ' . $this->generateUrl('webhooks', 'add'));
|
||||
return false;
|
||||
}
|
||||
|
||||
$db->insertIntoTable('events', ['type' => 'WEBHOOKS_ADD', 'text' => 'Ajout webhook : ' . $type . ' => ' . $url]);
|
||||
|
||||
$_SESSION['successmessage'] = 'Le webhook a bien été créé.';
|
||||
header('Location: ' . $this->generateUrl('webhooks'));
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction met à jour une liste de webhooks
|
||||
* @param $csrf : Le jeton CSRF
|
||||
* @param array $_POST['webhooks'] : Un tableau des webhooks avec leur nouvelle valeurs
|
||||
* @return boolean;
|
||||
*/
|
||||
public function update($csrf)
|
||||
{
|
||||
if (!internalTools::verifyCSRF($csrf))
|
||||
{
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('webhooks'));
|
||||
return false;
|
||||
}
|
||||
|
||||
global $db;
|
||||
|
||||
$errors = array(); //On initialise le tableau qui contiendra les erreurs rencontrés
|
||||
|
||||
//Pour chaque webhook reçu, on boucle en récupérant son id (la clef), et le webhook lui-même (la value)
|
||||
foreach ($_POST['webhooks'] as $id => $webhook)
|
||||
{
|
||||
$db->updateTableWhere('webhooks', $webhook, ['id' => $id]);
|
||||
}
|
||||
|
||||
$_SESSION['successmessage'] = 'Tout les webhooks ont été modifiés avec succès.';
|
||||
header('Location: ' . $this->generateUrl('webhooks'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette méthode est appelée pour ajouter une requête issue d'un webhook à la queue
|
||||
* @param string $url : L'url à laquelle envoyer la requête
|
||||
* @param array $datas : Les données à envoyer avec la requête (si non définie, [])
|
||||
* @return boolean : true si on reussi à l'ajouter, false sinon
|
||||
*/
|
||||
public function _enqueueQuery ($url, $datas = [])
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue