Skip to content
Extraits de code Groupes Projets
Valider 092f9a0b rédigé par Yohooo's avatar Yohooo
Parcourir les fichiers

Amélioration de l'anonymisation dans le cadre une d'identification par...

Amélioration de l'anonymisation dans le cadre une d'identification par identifiant de la personne identifiée. Modification légère de la base.
parent f9b3ed4e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -132,7 +132,7 @@ function formidable_declarer_tables_objets_sql($tables) {
'ip' => "varchar(255) NOT NULL default ''",
'id_auteur' => 'bigint(21) NOT NULL default 0',
'cookie' => "varchar(255) NOT NULL default ''",
'variable_php' => 'bigint(21) NOT NULL default 0',
'variable_php' => "varchar(255) NOT NULL default ''",
'statut' => "varchar(10) NOT NULL default ''",
'maj' => 'timestamp'
),
......
......@@ -101,6 +101,9 @@ function formidable_upgrade($nom_meta_base_version, $version_cible) {
$maj['0.15.0'] = array(
array('formidable_effacer_traitement_enregistrer_sans_option')
);
$maj['0.17.1'] = array(
array('sql_alter','TABLE spip_formulaires_reponses CHANGE variable_php variable_php VARCHAR(255) NOT NULL default ""')
);
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
......
......@@ -172,7 +172,7 @@ function autoriser_formulaire_repondre_dist($faire, $type, $id, $qui, $opt) {
} else {
include_spip('inc/formidable');
// Si la personne n'a jamais répondu, c'est bon
if (!formidable_verifier_reponse_formulaire($id, $traitements['enregistrement']['identification'], $traitements['enregistrement']['variable_php'])) {
if (!formidable_verifier_reponse_formulaire($id, $traitements['enregistrement']['identification'], $traitements['enregistrement']['variable_php'], $traitements['enregistrement']['anonymiser'])) {
return true;
} else {
return false;
......
......@@ -149,9 +149,10 @@ function formidable_trouver_reponse_a_editer($id_formulaire, $id_formulaires_rep
* @param int $id_formulaire L'identifiant du formulaire
* @param string $choix_identification Comment verifier une reponse. Priorite sur 'cookie' ou sur 'id_auteur'
* @param string $variable_php_identification : la variable php servant à identifier une réponse
* @param string $anonymiser : si 'on', le formulaire doit-être anonymisé
* @return unknown_type Retourne un tableau contenant les id des réponses si elles existent, sinon false
*/
function formidable_verifier_reponse_formulaire($id_formulaire, $choix_identification = 'cookie', $variable_php_identification = '') {
function formidable_verifier_reponse_formulaire($id_formulaire, $choix_identification = 'cookie', $variable_php_identification = '', $anonymiser='') {
global $auteur_session;
$id_auteur = $auteur_session ? intval($auteur_session['id_auteur']) : 0;
$nom_cookie = formidable_generer_nom_cookie($id_formulaire);
......@@ -163,7 +164,6 @@ function formidable_verifier_reponse_formulaire($id_formulaire, $choix_identific
return false;
}
// Determiner les différentes clauses $WHERE possible en fonction de ce qu'on a
$where_id_auteur = '';
$where_cookie = '';
......@@ -187,12 +187,9 @@ function formidable_verifier_reponse_formulaire($id_formulaire, $choix_identific
}
} elseif ($choix_identification == 'id_auteur') {
if ($id_auteur) {
$formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire);
$traitement = unserialize($formulaire['traitements']);
$anonymiser = $traitement['enregistrement']['anonymiser'];
if ($anonymiser == 'on') {
$id_auteur = preg_replace('/[a-zA-Z]/','',md5($id_formulaire.$id_auteur));
$where_id_auteur = 'id_auteur='.$id_auteur;
$id_auteur = formidable_crypter_id_auteur($id_auteur);
$where_id_auteur = 'cookie="'.$id_auteur.'"';
}
$where = array($where_id_auteur);
} else {
......@@ -603,3 +600,14 @@ function formidable_variable_php_identification($nom_variable, $id_formulaire) {
}
return $valeur_variable;
}
/**
* Retourne une valeur crypté de l'id_auteur.
* @param string $id_auteur
* @return string
*/
function formidable_crypter_id_auteur($id_auteur) {
include_spip('inc/securiser_action');
$pass = secret_du_site();
return md5($pass.$id_auteur);
}
......@@ -5,7 +5,7 @@
etat="stable"
compatibilite="[3.0.0;3.2.*]"
logo="images/formidable-64.png"
schema="0.15.0"
schema="0.17.1"
documentation="https://contrib.spip.net/Formidable-le-generateur-de-formulaires"
>
<nom>Formidable</nom>
......
......@@ -22,10 +22,9 @@ function traiter_enregistrement_dist($args, $retours) {
// traitement de l'anonymisation de l'auteur lorsque la méthode d'identification se fait par l'identifiant
if ($options['anonymiser'] == 'on' and $id_auteur) {
if ($options['identification'] == 'id_auteur' ) {
$id_auteur = preg_replace('/[a-zA-Z]/','',md5($id_formulaire.$id_auteur));
} else {
$id_auteur = 1;
$variable_php = formidable_crypter_id_auteur($id_auteur);
}
$id_auteur = 0;
}
// On cherche le cookie et sinon on le crée
......@@ -36,8 +35,11 @@ function traiter_enregistrement_dist($args, $retours) {
include_spip('inc/acces');
$cookie = creer_uniqid();
}
// On crée un identifiant depuis l'éventuelle variable php d'identification
$variable_php = formidable_variable_php_identification($options['variable_php'], $id_formulaire);
if ($options['identification'] == 'variable_php' ) {
$variable_php = formidable_variable_php_identification($options['variable_php'], $id_formulaire);
}
// On regarde si c'est une modif d'une réponse existante
$id_formulaires_reponse = $args['id_formulaires_reponse'];
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter