예제 #1
0
function verifier_action_auteur($action, $valeur, $id_auteur = 0)
{
    if ($valeur == _action_auteur($action, $id_auteur, 'alea_ephemere')) {
        return true;
    }
    if ($valeur == _action_auteur($action, $id_auteur, 'alea_ephemere_ancien')) {
        return true;
    }
    return false;
}
예제 #2
0
파일: redirect.php 프로젝트: rhertzog/lcs
function action_redirect_dist()
{
	$type = _request('type');
	$id = intval(_request('id'));

	if ($m = _request('var_mode')) {
		$GLOBALS['var_urls'] = true; // forcer la mise a jour de l'url de cet objet !
	}

	if (preg_match('/^\w+$/', $type)) {
		$h = generer_url_entite_absolue($id, $type, '', '', true);
	}
	else if ($page = _request('page')
	AND preg_match('/^\w+$/', $page)) {
		$h = generer_url_public($page, '', true);
	}
	else return;

	if ($m > '')
		$h = parametre_url($h, 'var_mode', $m);

	if ($m == 'preview'
	AND defined('_PREVIEW_TOKEN')
	AND _PREVIEW_TOKEN
	AND autoriser('previsualiser')
	AND $aut = $GLOBALS['visiteur_session']['id_auteur'] ) {
		include_spip('inc/securiser_action');
		$token = _action_auteur('previsualiser', $aut, null, 'alea_ephemere');
		$h = parametre_url($h, 'var_previewtoken', "$aut*$token");
	}

	$status = '302';
	if (_request('status') AND _request('status')=='301')
		$status = '301';

	if ($h)
		redirige_par_entete(str_replace('&', '&', $h),'',$status);
	else
		redirige_par_entete('/','',$status);
}
예제 #3
0
파일: autoriser.php 프로젝트: JLuc/SPIP
/**
 * Autorisation de prévisualiser un contenu
 *
 * @param  string $faire Action demandée
 * @param  string $type  Type d'objet sur lequel appliquer l'action
 * @param  int    $id    Identifiant de l'objet
 * @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_previsualiser_dist($faire, $type, $id, $qui, $opt)
{
    // Le visiteur a-t-il un statut prevu par la config ?
    if (strpos($GLOBALS['meta']['preview'], "," . $qui['statut'] . ",") !== false) {
        return test_previsualiser_objet_champ($type, $id, $qui, $opt);
    }
    // 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;
}
예제 #4
0
/**
 * Verifier le hash de signature d'une action
 * toujours exclusivement pour l'auteur en cours
 * http://doc.spip.org/@verifier_action_auteur
 *
 * @param $action
 * @param $hash
 * @return bool
 */
function verifier_action_auteur($action, $hash)
{
    list($id_auteur, $pass) = caracteriser_auteur();
    if ($hash == _action_auteur($action, $id_auteur, $pass, 'alea_ephemere')) {
        return true;
    }
    if ($hash == _action_auteur($action, $id_auteur, $pass, 'alea_ephemere_ancien')) {
        return true;
    }
    return false;
}
예제 #5
0
파일: signature.php 프로젝트: rhertzog/lcs
function formulaires_signature_reponse_confirmation_dist($var_confirm = '') {
	static $confirm = null;

	// reponse mise en cache dans la session ?
	$code_message = 'signature_message_'.strval($var_confirm);
	if (isset($GLOBALS['visiteur_session'][$code_message]))
		return $GLOBALS['visiteur_session'][$code_message];

	// reponse deja calculee depuis public/assembler.php
	if (isset($confirm))
		return $confirm;

	if ($var_confirm == 'publie' OR $var_confirm == 'poubelle')
		return '';

	if (!spip_connect()) {
		$confirm = _T('form_pet_probleme_technique');
		return '';
	}
	include_spip('inc/texte');
	include_spip('inc/filtres');

	// Suppression d'une signature par un moderateur ?
	// Cf. plugin notifications
	if (isset($_GET['refus'])) {
		// verifier validite de la cle de suppression
		// l'id_signature est dans var_confirm
		include_spip('inc/securiser_action');
		if ($id_signature = intval($var_confirm)
		    AND (
			$_GET['refus'] == _action_auteur("supprimer signature $id_signature", '', '', 'alea_ephemere')
				OR
			$_GET['refus'] == _action_auteur("supprimer signature $id_signature", '', '', 'alea_ephemere_ancien')
			)) {
			sql_updateq("spip_signatures", array("statut" => 'poubelle'), "id_signature=$id_signature");
			$confirm = _T('info_signature_supprimee');
		} else $confirm = _T('info_signature_supprimee_erreur');
		return '';
	}

	$row = sql_fetsel('*', 'spip_signatures', "statut=" . sql_quote($var_confirm), '', "1");

	if (!$row) {
		$confirm = _T('form_pet_aucune_signature');
		return '';
	}

	$id_signature = $row['id_signature'];
	$id_article = $row['id_article'];
	$adresse_email = $row['ad_email'];
	$url_site = $row['url_site'];

	$row = sql_fetsel('email_unique, site_unique', 'spip_petitions', "id_article=$id_article");

	$email_unique = $row['email_unique']  == "oui";
	$site_unique = $row['site_unique']  == "oui";

	sql_updateq('spip_signatures',
		    array('statut' => 'publie', 'date_time' => date('Y-m-d H:i:s')),
		    "id_signature=$id_signature");

	if ($email_unique) {

		$r = "id_article=$id_article AND ad_email=" . sql_quote($adresse_email);
		if (signature_entrop($r))
			  $confirm =  _T('form_pet_deja_signe');
	} 

	if ($site_unique) {
		$r = "id_article=$id_article AND url_site=" . sql_quote($url_site);
		if (signature_entrop($r))
			$confirm = _T('form_pet_site_deja_enregistre');
	}

	include_spip('inc/session');

	if (!$confirm) {
		$confirm = _T('form_pet_signature_validee');

		// noter dans la session que l'email est valide
		// de facon a permettre de signer les prochaines
		// petitions sans refaire un tour d'email
		session_set('email_confirme', $adresse_email);

		// invalider les pages ayant des boucles signatures
		include_spip('inc/invalideur');
		suivre_invalideur("id='varia/pet$id_article'");
	}

	// Conserver la reponse dans la session du visiteur
	if ($confirm)
		session_set($code_message, $confirm);
}
예제 #6
0
/**
 * Confirmer une signature
 * Retour a l'ecran du lien de confirmation d'une signature de petition.
 * var_confirm contient le hash de la signature.
 * Au premier appel on traite et on publie
 * Au second appel on retourne le resultat a afficher
 *
 * @staticvar string $confirm
 * @param <type> $var_confirm
 * @return string 
 */
function action_confirmer_signature_dist($var_confirm = null)
{
    static $confirm = null;
    // reponse mise en cache dans la session ?
    $code_message = 'signature_message_' . strval($var_confirm);
    if (isset($GLOBALS['visiteur_session'][$code_message])) {
        return $GLOBALS['visiteur_session'][$code_message];
    }
    // reponse deja calculee depuis public/assembler.php
    if (isset($confirm)) {
        return $confirm;
    }
    if (is_null($var_confirm)) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $var_confirm = $securiser_action();
    }
    if (!$var_confirm or $var_confirm == 'publie' or $var_confirm == 'poubelle') {
        return '';
    }
    if (!spip_connect()) {
        $confirm = _T('petitions:form_pet_probleme_technique');
        return '';
    }
    include_spip('inc/texte');
    include_spip('inc/filtres');
    // Suppression d'une signature par un moderateur ?
    // Cf. plugin notifications
    if (isset($_GET['refus'])) {
        // verifier validite de la cle de suppression
        // l'id_signature est dans var_confirm
        include_spip('inc/securiser_action');
        if ($id_signature = intval($var_confirm) and ($_GET['refus'] == _action_auteur("supprimer signature {$id_signature}", '', '', 'alea_ephemere') or $_GET['refus'] == _action_auteur("supprimer signature {$id_signature}", '', '', 'alea_ephemere_ancien'))) {
            include_spip('action/editer_signature');
            signature_modifier($id_signature, array("statut" => 'poubelle'));
            $confirm = _T('petitions:info_signature_supprimee');
        } else {
            $confirm = _T('petitions:info_signature_supprimee_erreur');
        }
        return '';
    }
    $row = sql_fetsel('*', 'spip_signatures', "statut=" . sql_quote($var_confirm), '', "1");
    if (!$row) {
        $confirm = _T('petitions:form_pet_aucune_signature');
        return '';
    }
    $id_signature = $row['id_signature'];
    $id_petition = $row['id_petition'];
    $adresse_email = $row['ad_email'];
    $url_site = $row['url_site'];
    $row = sql_fetsel('email_unique, site_unique, id_article', 'spip_petitions', "id_petition=" . intval($id_petition));
    $email_unique = $row['email_unique'] == "oui";
    $site_unique = $row['site_unique'] == "oui";
    $id_article = $row['id_article'];
    include_spip('action/editer_signature');
    signature_modifier($id_signature, array('statut' => 'publie'));
    if ($email_unique) {
        $r = "id_petition=" . intval($id_petition) . " AND ad_email=" . sql_quote($adresse_email);
        if (signature_entrop($r)) {
            $confirm = _T('petitions:form_pet_deja_signe');
        }
    }
    if ($site_unique) {
        $r = "id_petition=" . intval($id_petition) . " AND url_site=" . sql_quote($url_site);
        if (signature_entrop($r)) {
            $confirm = _T('petitions:form_pet_site_deja_enregistre');
        }
    }
    include_spip('inc/session');
    if (!$confirm) {
        $confirm = _T('petitions:form_pet_signature_validee');
        // noter dans la session que l'email est valide
        // de facon a permettre de signer les prochaines
        // petitions sans refaire un tour d'email
        session_set('email_confirme', $adresse_email);
        // invalider les pages ayant des boucles signatures
        include_spip('inc/invalideur');
        suivre_invalideur("id='signature/{$id_signature}'");
        suivre_invalideur("id='article/{$id_article}'");
    }
    // Conserver la reponse dans la session du visiteur
    if ($confirm) {
        session_set($code_message, $confirm);
    }
}
예제 #7
0
function verifier_action_auteur($action, $valeur) {
	list($id_auteur, $pass) = caracteriser_auteur();
	if ($valeur == _action_auteur($action, $id_auteur, $pass, 'alea_ephemere'))
		return true;
	if ($valeur == _action_auteur($action, $id_auteur, $pass, 'alea_ephemere_ancien'))
		return true;
	return false;
}