Hacer que ciertas páginas estén disponibles solo para usuarios registrados

9

Necesito ayuda y aquí está el problema:

Estoy construyendo un sitio usando Drupal 7.

Necesito hacer que ciertas páginas solo sean visibles para los usuarios registrados (cada uno con su propio nombre de usuario / contraseña), otros usuarios simplemente deben ser redirigidos o mostrar un mensaje de error. ¿Esta funcionalidad puede estar incluida en el propio Drupal 7 o hay un módulo que lo haga (algo más simple que los grupos orgánicos)?

dchello4
fuente

Respuestas:

7

Debe usar el módulo de acceso al contenido para obtener permisos de visualización de nodos específicos.

Este módulo le permite administrar permisos para tipos de contenido por rol y autor. Le permite especificar vistas personalizadas, editar y eliminar permisos para cada tipo de contenido. Opcionalmente, puede habilitar la configuración de acceso al contenido, por lo que puede personalizar el acceso para cada nodo de contenido.

Anil Sagar
fuente
Ese módulo no se ha actualizado desde 2013, y se describe como "aún no considerado estable". ¿Le gustaría recomendar uno que se mantenga actualmente?
Blazemonger
1

Si está buscando hacerlo mediante programación dentro de un módulo o nodo (con filtro de entrada PHP), puede usar user_is_logged_in () para algo como esto:

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

Aunque el módulo de acceso al contenido resuelve bien el problema, es un módulo adicional y aún no es estable en D7.

Una alternativa que usa solo módulos de uso común es:

  1. Cree los nodos pero configúrelos como no publicados

  2. Cree una vista de nodo, por ejemplo, "contenido restringido por roles". Muestre el contenido completo del nodo para replicar el nodo estándar /% display.

  3. Restrinja la vista a sus roles deseados (por ejemplo, "Rol | Usuario autenticado")

  4. Establezca la ruta de vista a algo como:

    restricted-content/%
  5. Establecer un filtro contextual por Nid.

  6. Elimine el filtro predeterminado "contenido publicado".

Ahora tendrá una vista que funciona como nodo /%, excepto que también maneja contenido no publicado y restringe por rol.

Tim Raasveld
fuente
1
La vista mostraría la lista de nodos incluso si no están publicados, pero los usuarios sin el permiso correcto aún no pueden acceder a los nodos.
kiamlaluno
-1

Existe una solución programática bastante simple, puede leer el rol del usuario (y también si es anónimo o registrado) de esta manera:

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

Obtendrá una matriz con roles de usuario actual en $ roles.

Puede redirigir a ese usuario dependiendo del rol con cierta lógica usando

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