Een uitzonderlijke autorisatie geven

Soms moeten we een handeling ondernemen waarvoor toestemming nodig is voor een auteur die normaal gesproken niet het recht heeft om dit te doen. Dit kan bijvoorbeeld gebeuren bij een geplande handeling die dan anoniem wordt uitgevoerd.

In dit geval is er een mechanisme via de functie authorize_exception dat een uitzonderlijke machtiging geeft in de tijd om de betreffende actie uit te voeren.

include_spip('inc/autoriser');
// geef een uitzonderlijke tijdelijke autorisatie
autoriser_exception('modifier', 'article', $id_article);
// realiseer de gewenste handeling
include_spip('action/editer_objet');
objet_modifier('article', $id_article, array('titre' => 'Nieuwe titel'));
// trek de autorisatie weer in
autoriser_exception('modifier', 'article', $id_article, false);

De funtie autoriser_exception($faire, $type, $id, $autoriser) heeft 4 argumenten:

  • $faire met dezelfde betekenis als bij autoriser()
  • $type met dezelfde betekenis als bij autoriser()
  • $id met dezelfde betekenis als bij autoriser()
  • $autoriser is een booleaanse waarde die aangeeft of de autorisatie tijdelijk is:
    • Wanneer $autoriser waarde "true" heeft of niet is aangeleverd, is een uitzonderlijke autorisatie akkoord: alle op autoriser() volgende oproepen met dezelfde argumenten $faire, $type en $id retourneren true
    • Wanneer $autoriser waarde "false"heeft, betekent dit dat de autorisatie weer volgens de normaal geldende regels moet gebeuren (ze kan dus wel of niet zijn toegestaan). De false heeft dus geen betrekking op de handeling, maar geeft aan dat er geen uitzondering meer geldt.

Opmerking: Dit kan vooral gebeuren bij het installeren van een plug-in die in plugins-dist is geplaatst: de status van webmaster is op het moment van de SPIP-installatie niet aanwezig en sommige bewerkingen zouden kunnen mislukken.

Auteur hanjo Gepubliceerd op:

Vertalingen: français, Nederlands