security: Ajout d’une autorisation pour retourner l’autocomplétion

Par défaut il faut pouvoir accéder à écrire.
pull/3/head
Matthieu Marcillaud 4 weeks ago
parent 1c4397dd8c
commit 08db1e5796

@ -14,12 +14,6 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
*/
function action_api_selecteur_dist() {
$response_404 = function() {
http_response_code(404);
header('Status: 404 Not Found');
exit;
};
$response_200 = function($json) {
// On renvoie une ressource JSON
header('Status: 200 OK');
@ -28,11 +22,27 @@ function action_api_selecteur_dist() {
exit;
};
$response_403 = function() {
http_response_code(403);
header('Status: 403 Forbidden');
exit;
};
$response_404 = function() {
http_response_code(404);
header('Status: 404 Not Found');
exit;
};
// Il faut au moins le sélecteur dans l'argument sinon rien
if (!$selecteur = _request('arg')) {
$response_404();
}
if (!autoriser('autocomplete', $selecteur, null, null, ['args' => $_GET ?? []])) {
$response_403();
}
// API traitée en PHP
if (_request('php')) {
$selecteur_php = charger_fonction($selecteur, 'selecteurs', true);

@ -18,6 +18,7 @@
<licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
<necessite nom="select2" compatibilite="[2.0.0-dev;[" />
<pipeline nom="autoriser" inclure="selecteurgenerique_autorisations.php" />
<pipeline nom="header_prive" action="inserer_javascript" inclure="selecteurgenerique_pipelines.php" />
<pipeline nom="insert_head" action="inserer_javascript" inclure="selecteurgenerique_pipelines.php" />
</paquet>

@ -0,0 +1,23 @@
<?php
/**
* Autorisation daccéder à lapi dun autocomplete
*
* Nécessite laccès à écrire.
* Peut être surchargé par sélecteur
*
* - autoriser_auteur_autocomplete_dist()
* - autoriser_generique_autocomplete_dist()
*
* Note: `$opt['args']` reçoit les paramètres dappel de lapi
*
* @param string $faire Action demandée
* @param string $type Type d'objet ou élément
* @param int|string|null $id Identifiant
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_autocomplete_dist(string $faire, string $type, $id, array $qui, array $opt): bool {
return autoriser('ecrire');
}

@ -8,8 +8,8 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
* Récupère la valeur de query-string `q` pour effectuer la recherche.
*
* @syntaxe
* - `{contenu_auteur_select} : dans tout le nom
* - `{contenu_auteur_select strict} : uniquement depuis le début du nom
* - `{contenu_auteur_select #ENV{q}} : dans tout le nom
* - `{contenu_auteur_select #ENV{q}, strict} : uniquement depuis le début du nom
*
* @critere contenu_auteur_select
*/

Loading…
Cancel
Save