[Résolu] Relation personne / entreprise pour un extranet

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,

Je suis en train de faire un extranet avec Drupal dont le principe est le suivant :
- des administrateurs mettent en ligne des documents qui seront visibles ou non par les extranautes, en fonction de leurs droits.
- les administrateurs peuvent également créer des entreprises auxquelles ils peuvent attacher des utilisateurs et leur conférer des droits d'accès aux rubriques qui les concernent.

D'abord pour gérer les autorisations entre les documents et les utilisateurs (ou plutôt les rôles), j'utilise le module Taxonomie Access Control (TAC). Je mets sur les documents des termes de taxonomie (qui sont en fait des rubriques et qui ont une hiérarchie, avec des sous-rubriques) et le module me permet de contrôler les accès.
Pensez-vous que ce soit une bonne façon de faire ?

Ensuite, pour ce qui concerne la gestion des utilisateurs, les entreprises sont des contenus. À l'aide du module Entity Reference, j'ai ajouté dans le formulaire de création d'une personne, un champ de sélection parmi les entreprises. Cela fonctionne bien quand on est administrateur, mais l'utilisateur, à qui je ne donne pas la possibilité de voir les entreprises existantes, à lui aussi accès à ce même champ de sélection d'une entreprise, mais il est vide. Et je voudrais que les utilisateurs puissent consulter les données de l'entreprise à laquelle ils sont rattachés, mais qu'ils ne puissent pas les modifier, ni changer d'entreprise eux-même, ni voir les autres entreprises.
Du coup je me demande si j'ai bien choisi la bonne solution et il en découle tout un tas de questions :
- Peut-on avoir un formulaire de modification de personne qui soit différent en fonction du rôle ou de la personne qui y accède (rendre le champ disabled avec une valeur forcée, ne pas donner accès du tout à ce champ, ... ) ?
- Ne devrais-je pas penser les entreprises comme des terme s de taxonomie, plutôt que comme des contenus ?
- Dans ce cas, j'aurais besoin d'ajouter des champs supplémentaires à mon vocabulaire entreprise (adresse, téléphone...), mais comment pourrais-je les utiliser, gérer leur affichage, quelles implication cela aurait ?

Ça fait beaucoup de question, j'espère que j'ai été suffisamment clair.

Merci d'avance à tous ceux qui pourront m'apporter quelque éclairage et bonne journée à tous.

Version de Drupal : 

Il existe un module field_permission qui permet de gérer les droits d'accès aux champs, en fonction des rôles.
Ceci pourrait résoudre une certains partie des problèmes.

Concernant le point 2, on peut depuis Drupal 7 ajouter des champs à une taxonomie, ce qui devrait permettre de gérer le téléphone, adresse, etc. C'est un peu moins souple que les contenus, car il faut avoir le droit d'administrer la taxonomie (il n'y a pas, je pense, de restriction comme sur les types de contenus).

On pourrait aussi regarder ce qui est fait du côté d'Organic Groups, ou encore des distributions comme Drupal Commons ou autre, spécialisées dans les intranet / réseaux sociaux.

De mon côté, j'avais mis en place le module ABT (Access By Term) pour gérer plusieurs établissements au sein d'un groupe d'universités. Les utilisateurs avaient un ou plusieurs établissements rattachés, et les contenus étaient également "taggés" avec un ou N établissements.
C'est la taxonomie qui portait cette notion.

Bonjour Vincent,

Merci pour ta réponse, elle me conforte dans mes choix.

En effet, entre temps j'ai avancé de mon côté dans la même direction que ce dont tu parles. Les entreprises sont des termes de taxo, auxquels j'ai ajouté des champs pour les infos complémentaires et je gère les droits d'accès via ABT. Ce dernier offre en plus la possibilité d'agir au niveau des utilisateurs et non des rôles, ce qui dans mon cas est plus fin, correspond davantage à la demande du client et me permet de conserver les rôles pour gérer les droits d’administration plus que les droits des utilisateurs.

Concernant le module Field Permission, merci pour le tuyau, c'est bon à savoir. En revanche je n'en aurai plus besoin ici car ABT a rendu les champs de taxo invisibles pour les utilisateurs. Y compris pour les champs dont j'ai spécifié qu'ils ne doivent pas être prise en charge par le module. JE ne sais pas si c'est un comportement voulu.

Merci encore et bonne journée.