X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Finc%2Fautoriser.php;fp=www%2Fecrire%2Finc%2Fautoriser.php;h=da00aca92642ae487f65ca51a6e881d514e9a11c;hp=67629f7799fb1f54943bdab2eed43e3f09776eb0;hb=e99f0878011913365e49b30d90e496c24c301393;hpb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed diff --git a/www/ecrire/inc/autoriser.php b/www/ecrire/inc/autoriser.php index 67629f7..da00aca 100644 --- a/www/ecrire/inc/autoriser.php +++ b/www/ecrire/inc/autoriser.php @@ -3,7 +3,7 @@ /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2011 * + * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * @@ -152,8 +152,34 @@ function autoriser_ecrire_dist($faire, $type, $id, $qui, $opt) { // http://doc.spip.org/@autoriser_previsualiser_dist function autoriser_previsualiser_dist($faire, $type, $id, $qui, $opt) { - return strpos($GLOBALS['meta']['preview'], ",". $qui['statut'] .",") - !==false; + + // Le visiteur a-t-il un statut prevu par la config ? + if (strpos($GLOBALS['meta']['preview'], ",". $qui['statut'] .",") + !==false) + return true; + + // Sinon, on regarde s'il a un jeton (var_token) et on lui pose + // le cas echeant une session contenant l'autorisation + // de l'utilisateur ayant produit le jeton + if ($token = _request('var_previewtoken')) { + include_spip('inc/session'); + session_set('previewtoken', $token); + } + + // A-t-on un token valable ? + if (is_array($GLOBALS['visiteur_session']) + AND $token = session_get('previewtoken') + AND preg_match('/^(\d+)\*(.*)$/', $token, $r) + AND $action = 'previsualiser' + AND (include_spip('inc/securiser_action')) + AND ( + $r[2] == _action_auteur($action, $r[1], null, 'alea_ephemere') + OR $r[2] == _action_auteur($action, $r[1], null, 'alea_ephemere_ancien') + )) { + return true; + } + + return false; } function autoriser_dater_dist($faire, $type, $id, $qui, $opt) { @@ -356,6 +382,12 @@ function autoriser_groupemots_creer_dist($faire, $type, $id, $qui, $opt) { AND !$qui['restreint']; } +function autoriser_auteur_creer_dist($faire, $type, $id, $qui, $opt) { + return + $qui['statut'] == '0minirezo' + AND !$qui['restreint']; +} + // Autoriser a modifier un groupe de mots $id // y compris en ajoutant/modifiant les mots lui appartenant // http://doc.spip.org/@autoriser_groupemots_modifier_dist @@ -573,8 +605,8 @@ function autoriser_auteur_modifier_dist($faire, $type, $id, $qui, $opt) { // ou si les webmestres sont fixes par constante (securite) elseif ($opt['webmestre'] AND (defined('_ID_WEBMESTRES') OR !autoriser('webmestre'))) return false; - // et toucher au statut d'un webmestre si il ne l'est pas lui meme - elseif ($opt['statut'] AND autoriser('webmestre','',0,$id) AND !autoriser('webmestre')) + // et modifier un webmestre si il ne l'est pas lui meme + elseif (intval($id) AND autoriser('webmestre','',0,$id) AND !autoriser('webmestre')) return false; else return true; @@ -679,17 +711,15 @@ function autoriser_modifierurl_dist($faire, $quoi, $id, $qui, $opt) { // http://doc.spip.org/@autoriser_rubrique_editermots_dist function autoriser_rubrique_editermots_dist($faire,$quoi,$id,$qui,$opts){ // on recupere les champs du groupe s'ils ne sont pas passes en opt - $droit = substr($GLOBALS['visiteur_session']['statut'],1); if (!isset($opts['groupe_champs'])){ if (!$id_groupe = $opts['id_groupe']) return false; include_spip('base/abstract_sql'); $opts['groupe_champs'] = sql_fetsel("*", "spip_groupes_mots", "id_groupe=".intval($id_groupe)); } - $droit = $opts['groupe_champs'][$droit]; return - ($droit == 'oui') + ($opts['groupe_champs'][substr($qui['statut'],1)] == 'oui') AND // on verifie que l'objet demande est bien dans les tables liees in_array( @@ -742,6 +772,25 @@ function autoriser_iconifier_dist($faire,$quoi,$id,$qui,$opts){ return $droit; } +// Autorisation des inscriptions libres +// a l'aide de la liste globale des statuts (tableau mode => nom du mode) + +// http://doc.spip.org/@tester_config +function autoriser_inscrireauteur($faire, $quoi, $id, $qui, $opt){ + + switch (array_search($quoi, $GLOBALS['liste_des_statuts'])) { + + case 'info_redacteurs' : + return ($GLOBALS['meta']['accepter_inscriptions'] == 'oui'); + + case 'info_visiteurs' : + return ($GLOBALS['meta']['accepter_visiteurs'] == 'oui' OR $GLOBALS['meta']['forums_publics'] == 'abo'); + + default: + return false; + } +} + // Deux fonctions sans surprise pour permettre les tests // Dire toujours OK // http://doc.spip.org/@autoriser_ok_dist