Restriction de l'accès au profil utilisateur

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,

J'ai un problème de sécurité qu'il me faudrait régler. Je l'ai réglé partiellement mais il reste encore certains détails.

Mon système est un extranet. Il y a des utilisateurs ayant un rôle très restrictif et ils n'ont pas le droit de voir la page profil des autres utilisateurs (alors que d'autres rôles peuvent accéder aux autres profiles utilisateurs sans soucis.) J'ai réussi à régler ce problème en créant un nouveau droit et en utilisant un hook_user. Si l'utilisateur n'a pas ce droit et s'il veut afficher un profil qui n'est pas le sien (en tapant l'url par exemple), il est automatiquement redirigé vers son profil.

Le problème, c'est que cela fonctionne sur les pages de type /user/%uid% mais pas sur les pages de types /user/%uid%/quelquechose, or les profiles des utilisateurs ont plusieurs vues raccrochées à leur profil. Et il faut que mon utilisateur puisse accéder aux vues de son profil mais pas à celles des autres utilisateurs. Il me faudrait donc trouver un moyen pour permettre ça. Je pensais réutiliser mon droit créer pour limiter l'accès aux profiles et redirigé vers leur propre profil les utilisateurs n'ayant pas ce droit et voulant afficher la vue lié à un autre utilisateur. Le problème, quel hook appeler pour faire cela et comment savoir quel est l'uid indiqué dans le path (s'il y a un moyen autre que parser l'url).

J'espère avoir été clair dans mon explication. Je vous remercie.

Forum : 
Version de Drupal :