Rendre certaines pages uniquement accessibles aux utilisateurs connectés

9

J'ai besoin d'aide et voici le problème:

Je construis un site en utilisant Drupal 7.

Je dois rendre certaines pages uniquement visibles pour les utilisateurs connectés (chacun ayant son propre nom d'utilisateur / mot de passe), les autres utilisateurs doivent simplement être redirigés ou afficher un message d'erreur. Cette fonctionnalité peut-elle être incluse dans Drupal 7 lui-même ou existe-t-il un module qui le fait (quelque chose de plus simple que les groupes organiques)?

dchello4
la source

Réponses:

7

Vous devez utiliser le module d' accès au contenu pour les autorisations de vue de nœud à grain fin.

Ce module vous permet de gérer les autorisations pour les types de contenu par rôle et auteur. Il vous permet de spécifier des autorisations d'affichage, de modification et de suppression personnalisées pour chaque type de contenu. En option, vous pouvez activer les paramètres d'accès par contenu, afin de personnaliser l'accès pour chaque nœud de contenu.

Anil Sagar
la source
Ce module n'a pas été mis à jour depuis 2013 et est décrit comme "pas encore considéré comme stable". Voulez-vous en recommander un qui est actuellement maintenu?
Blazemonger
1

Si vous cherchez à le faire par programme dans un module ou un nœud (avec filtre d'entrée PHP), vous pouvez utiliser user_is_logged_in () pour quelque chose comme ceci:

<?php
if (!user_is_logged_in()) drupal_not_found();
?>
Sean3z
la source
0

Bien que le module d'accès au contenu résout bien le problème, il s'agit d'un module supplémentaire et il n'est pas encore stable sur D7.

Une alternative utilisant uniquement des modules couramment utilisés est:

  1. Créez les nœuds mais définissez-les comme non publiés

  2. Créez une vue de nœud, par exemple "contenu limité aux rôles". Affichez le contenu complet du nœud pour répliquer l'affichage standard du nœud /%.

  3. Limitez la vue aux rôles souhaités (par exemple, "Rôle | Utilisateur authentifié")

  4. Définissez le chemin de la vue sur quelque chose comme:

    restricted-content/%
  5. Définissez un filtre contextuel par Nid.

  6. Supprimez le filtre par défaut «le contenu est publié».

Vous aurez maintenant une vue qui fonctionne exactement comme node /%, sauf qu'elle gère également le contenu non publié et restreint par rôle.

Tim Raasveld
la source
1
La vue afficherait la liste des nœuds même s'ils ne sont pas publiés, mais les utilisateurs sans l'autorisation appropriée ne peuvent toujours pas accéder aux nœuds.
kiamlaluno
-1

Il existe une solution de programmation assez simple, vous pouvez lire le rôle utilisateur (et aussi s'il est anonyme ou enregistré) comme ceci:

$roles=$GLOBALS['user']->roles;

vous obtiendrez un tableau avec les rôles de l'utilisateur actuel dans $ roles.

Vous pouvez rediriger cet utilisateur en fonction du rôle avec une certaine logique en utilisant

drupal_goto ('url-of-the/page');
NenadP
la source