Créer un champ "mot de passe" dans un node et récupérer sa valeur

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Après avoir longuement cherché comment protéger un lien de téléchargement par un mot de passe et essayé un certain nombre de modules qui se sont révélés inappropriés, je suis tombé sur un bout de code [source] qui permet apparemment de faire ça en PHP :

<?php
function showForm($error="LOGIN"){
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                      "DTD/xhtml1-transitional.dtd">
<html>
<body>
  <?php echo $error; ?>
  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="pwd">
    Password:
     <table>
       <tr>
         <td><input name="passwd" type="password"/></td>
       </tr>
       <tr>
         <td align="center"><br/>
          <input type="submit" name="submit_pwd" value="Login"/>
         </td>
       </tr>
     </table> 
   </form>
</body>      
<?php  
}
?>

<?php
$Password
= 'demo'; // Set your password here

if (isset($_POST['submit_pwd'])){
  
$pass = isset($_POST['passwd']) ? $_POST['passwd'] : '';
    
   if (
$pass != $Password) {
     
showForm("Wrong password");
      exit();    
   }
} else {
  
showForm();
   exit();
}
?>

Si j'ai bien compris, il faut créer un fichier contenant le code (just

e la première partie ?) et le nommer download.php par exemple. Puis l'inclure dans l'URL du lien de téléchargement avec les coordonnées de la page/article où se trouve le fichier à télécharger :

<a href="www.example.com/download.php?entreprise=71&produit=112">Lien de téléchargement</a>

Voilà pour la théorie, mais comment intégrer ce code sous Drupal 6 ??

L'idée serait d'avoir plusieurs ensembles (différentes entreprises par exemple), avec un mot de passe différent par entreprise. Ensuite, chaque entreprise proposerait différents produits (un node par produit) contenant chacun un fichier à télécharger.

Le type de contenu Entreprise devrait donc contenir un champ permettant de créer le mot de passe pour chaque entreprise : oui mais comment procéder pour créer ce champ, crypter sa valeur, l'enregistrer dans une table de la base de donnée ? Cela requiert-il des connaissances poussées en programmation ? Faut-il créer soi-même un petit module ?

Et ceci étant fait, comment le fichier download.php ira-t-il chercher dans la base de donnée la valeur du mot de passe correspondant à l'entreprise concernée ?

En ce qui concerne l'inclusion du fichier download.php dans l'URL du fichier, Filefield Paths devrait faire l'affaire, il me semble... (je sais au moins comment régler cette question-là ^^)

Merci par avance pour votre aide ! Si quelqu'un peut m'éclairer sur la procédure à suivre, ou me diriger vers un tuto détaillé à ce sujet, j'en serai vraiment très reconnaissant !

Amitiés,
clmntbk.

Version de Drupal :