J'utilise le module Vues pour créer une vue à laquelle seuls des utilisateurs spécifiques devraient pouvoir accéder. Je sais que Views inclut le contrôle d'accès par rôle ou autorisations, mais j'ai besoin de quelque chose de plus précis: en gros, je veux pouvoir dire que seul l'utilisateur "x" et l'utilisateur "y" peuvent accéder à une vue particulière (ou bien quelqu'un avec un rôle d'administrateur de site). Donc, cela fonctionnerait de manière très similaire à la façon dont le module ACL agit pour les nœuds individuels.
Est la meilleure approche pour créer un plugin d'accès aux vues personnalisées? Je n'ai pas beaucoup d'expérience avec ça.
De plus, je me demande d'utiliser un argument avec une certaine validation pour accomplir cela (de sorte que je n'ai pas à créer des dizaines de vues distinctes). Par exemple, puisque cette vue sera un onglet sur un chemin de nœud spécifique, je me demande de configurer un champ de référence utilisateur sur ce nœud qui spécifie qui pourrait voir la vue. J'aurais juste besoin d'un moyen pour que la vue ne soit validée que si l'utilisateur actuel est égal à un utilisateur spécifié dans le champ de référence utilisateur.
Des idées? Ou suis-je en train de rendre cela plus compliqué que nécessaire?
Merci, Ben
Réponses:
Au lieu de limiter les autorisations sur la vue, vous pouvez limiter les autorisations sur l'élément de menu qui mène à cette vue (que ce soit un onglet sur un nœud ou un rappel de menu). Vous pouvez créer votre vue avec juste un affichage «par défaut» et aucun affichage de page (afin que les utilisateurs ne puissent pas simplement trouver le chemin d'accès). Ensuite, dans votre
page callback
élément de menu, appelez simplementviews_embed_view
pour afficher la vue. Il semble que la gestion des autorisations sur un élément de menu soit plus facile que l'écriture d'un nouveau plug-in pour les vues (bien qu'un plug-in puisse être utile pour d'autres).la source
Essayez le module Views Access Callback .
la source
Je dois manquer quelque chose, mais il semble que vous créeriez un nouveau rôle et ajouteriez ces utilisateurs. Utilisez ensuite la fonction Accès aux vues: rôle.
Si vous avez besoin de lier les droits d'accès à quelque chose dans le contenu, j'utiliserais un accès personnalisé aux vues, que j'ai trouvé difficile à configurer la première fois, mais j'apprécie la flexibilité une fois que vous avez travaillé. Si la vue génère l'élément de menu, il n'apparaîtra pas si la vue ne passe pas la fonction d'accès.
Si vous ne cachez qu'un élément de menu, il me semble que la vue fonctionnerait toujours et qu'un utilisateur pourrait modifier un URI pour afficher les données.
Jerry
la source
Que diriez-vous d'utiliser le module Autorisations personnalisées pour créer de nouvelles autorisations spécifiquement pour votre objectif, puis d'utiliser le module Autorisations utilisateur pour attribuer ces nouvelles autorisations à des utilisateurs individuels?
Le module d'autorisations personnalisées est très léger. Cependant, je ne suis pas sûr du module des autorisations utilisateur, car il crée essentiellement un nouveau rôle pour chaque utilisateur dans les coulisses (ces rôles ne sont pas visibles sur la page principale des autorisations). Si vous avez beaucoup d'utilisateurs, cela peut augmenter légèrement la taille de vos rôles et des tables user_roles.
la source
D'accord, cela a plus de sens. Je pense que vous pourriez (peut-être pas sûr à 100%) utiliser une vue et un argument. Définissez l'argument comme un ID utilisateur provenant de l'utilisateur actuellement connecté et faites en sorte que l'argument par défaut n'affiche rien. Cela devrait être en mesure de le faire, même si je ne sais pas dans quelle mesure ce serait sûr d'être juste. Si vous l'essayez, postez-le et faites-moi part de vos progrès.
la source
Si vous souhaitez combiner différents plugins d'accès dans Views, vous pouvez consulter le module Views access many .
la source