autoriser_exception Donner une autorisation exceptionnelle

SPIP >= 2.0

Description

autoriser_exception($faire, $type, $id, $autoriser = true)

Il arrive qu’on ait besoin de faire une action qui sera soumise à autorisation pour un auteur qui normalement n’en a pas le droit. Cela peut se produire, par exemple, dans le cas d’une action programmée qui sera alors exécutée anonymement.

Dans ce cas, il existe un mécanisme via la fonction autoriser_exception qui donne une autorisation exceptionnelle, le temps de réaliser l’action concernée.

Liste des paramètres

  • $faire avec la même signification que pour autoriser()
  • $type avec la même signification que pour autoriser()
  • $id avec la même signification que pour autoriser()
  • $autoriser qui est un booléen et indique si l’autorisation exceptionnelle est accordée ou non :
    • Lorsque $autoriser vaut « true » ou n’est pas fourni, on accorde une autorisation exceptionnelle : tous les appels suivant à autoriser() avec les mêmes arguments $faire, $type et $id renverront true
    • Lorsque $autoriser vaut « false » cela signifie que l’autorisation revient sous le régime normal et sera vérifiée selon la règle en vigueur (elle peut donc être encore autorisée ou effectivement interdite). Le false n’indique donc pas ici qu’on interdit l’action, mais simplement qu’il n’y a plus d’exception.

Exemples

include_spip('inc/autoriser');
// donner une autorisation exceptionnelle temporaire
autoriser_exception('modifier', 'article', $id_article);
// réaliser l'action désirée
include_spip('action/editer_objet');
objet_modifier('article', $id_article, array('titre' => 'Nouveau titre'));
// retirer l'autorisation exceptionnelle
autoriser_exception('modifier', 'article', $id_article, false);

, par cedric