Drupal 7 : Accès restreint pour un fichier joint

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.

Une question simple, mais dont je n'ai trouvé aucune solution simple et fonctionnelle pour le moment sous Drupal 7 ;-)

Question : Comment inclure un fichier (p.ex. fichier.zip) dans une page de manière à ce que son accès soit restreint selon les droits attribués à un rôle spécifique?

Merci

  • ajouter un champ a ton type de contenu pour accueillir le zip
  • ajouter un droit spécifique pour visualiser le zip
  • passer par le preprocess_node de ton thème pour exclure le champ zip de l'affichage dans le cas ou l’utilisateur connecté n'a pas le droit requis

Merci, voir mes commentaires ci-après.

  • ajouter un champ a ton type de contenu pour accueillir le zip

Ok.

  • ajouter un droit spécifique pour visualiser le zip

Je pourrai le faire dans Accueil » Administration » Personnes (droits d'accès), c'est bien cela?

  • passer par le preprocess_node de ton thème pour exclure le champ zip de l’affichage dans le cas ou l’utilisateur connecté n’a pas le droit requis.

Oups, là je ne suis pas certain de suivre. Je fais cela de quelle manière? J'utilise pour l'instant le thème de base Bartik non modifié.

ajouter un droit c'est un peu plus complexe que cela.
- il va te falloir créer un module dans lequel tu invoquera le hook_permission qui te permet de déclarer de nouveau droits
http://api.drupal.org/api/drupal/modules!system!system.api.php/function/...
ne sautes pas au plafond quand je dis ça, créer un module tout simple dans drupal c'est enfantin, pas d'inquiétude a avoir.

  • le preprocess alors : dans le thème que tu utilises tu trouvera un fichier "template.php". Dans celui-ci se trouve certainement la fonction [nomTheme]_preprocess_node(&$variables) (ci ce n'est pas le cas tu peux la déclarer. Cette fonction va te permettre d'agir sur les variables qui sont renvoyer au template de noeud et donc normalement ton fichier. A toi de joueur pour vérifier les droit à ce moment là

Bon après je pense qu'il doit exister des module du genre http://drupalmodules.com/module/field-permissions qui comblerons peut être ton besoin de manière plus simple ;)

Bien honnêtement, je n'ai jamais travaillé avec Drupal avant et je ne possède pas un gros bagage de programmation. Alors, à la lecture de cette réponse, j'en déduis qu'il n'y a pas de solution très « user friendly » pour ce faire et je doute un peu d'y parvenir en bidouillant le tout sans une procédure un peu plus détaillée.

Si je reformule mon besoin de la manière suivante : ajouter un fichier .doc ou .zip à une page de livre ou un article qui ne sera accessible que pour les utilisateurs identifiés, est-ce plus simple?