¿Cómo redirigir a los usuarios anónimos a la página de inicio de sesión utilizando el módulo Reglas?

12

Estoy usando el módulo de reglas con drupal 7 para redirigir a los usuarios anónimos a la página de inicio de sesión, por lo que creé una regla con reaccionar ante el evento "Drupal se está inicializando", condición "El usuario tiene un rol" con el usuario anónimo y "No URL de inicio de sesión del sitio ", luego agregó una acción" Redirigir página "a la URL de inicio de sesión del sitio. Cuando intenté probar la regla; drupal siguió redirigiendo a la página de inicio de sesión una y otra vez hasta que el servidor apache dejó de funcionar. Alguna recomendación.

Aboodred1
fuente
¿Puede un usuario anónimo explorar el contenido del sitio? ¿Por qué motivo necesita redirigir la página de inicio de sesión?
monymirza
Los usuarios anónimos no pueden explorar ningún contenido del sitio y no pueden registrarse excepto con una invitación. Los usuarios tienen que iniciar sesión para usar el sitio.
Aboodred1
No entiendo esta parte "la regla drupal siguió redirigiendo a la página de inicio de sesión sin mostrarla". ¿Podrías explicar a qué te refieres? De lo contrario, no estoy seguro de entender qué parte no funciona.
Boriana Ditcheva
Bueno, cuando voy a la página de inicio o cualquier otra página pero no a la página de inicio de sesión, la regla funciona bien; está redirigiendo al usuario a la página de inicio de sesión, sin embargo, el navegador sigue redirigiendo a la página de inicio de sesión una y otra vez hasta que apache deja de funcionar.
Aboodred1
Si los usuarios anónimos no pueden explorar ningún contenido del sitio, elimine el permiso para ver el contenido
monymirza

Respuestas:

12

La forma en que lo resolví de la siguiente manera:

  • Eventos: Drupal se está inicializando
  • Condiciones:

    1. El usuario tiene roles :Parameter: User: [site:current-user], Roles: anonymous user
    2. NO Comparación de texto -Parameter: Text: [site:current-page:url], Matching text: user/login
  • Acciones: redireccionamiento de página -Parameter: URL: user/login


Regla de exportación de la siguiente manera:

{ "rules_login" : {
    "LABEL" : "login",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "TAGS" : [ "login" ],
    "REQUIRES" : [ "rules" ],
    "ON" : { "init" : [] },
    "IF" : [
      { "user_has_role" : {
          "account" : [ "site:current-user" ],
          "roles" : { "value" : { "1" : "1" } }
        }
      },
      { "NOT text_matches" : { "text" : [ "site:current-page:url" ], "match" : "user\/login" } }
    ],
    "DO" : [ { "redirect" : { "url" : "user\/login" } } ]
  }
}
Aboodred1
fuente
@TopTomato esto es para Drupal 7
Aboodred1
cometí un error y está funcionando.
TopTomato
@TopTomato ¡Impresionante! Gustoso de trabajar para ti.
Aboodred1
3

Vaya a /admin/people/permissionsdesmarcar Ver contenido publicado para usuarios anónimos

ingrese la descripción de la imagen aquí

ahora vaya a /admin/config/system/site-informationagregar 'usuario' en el campo de página (acceso denegado)

ingrese la descripción de la imagen aquí

monymirza
fuente
funciona bien, pero todavía necesito mostrar el acceso a la página denegada porque no todos los usuarios tienen los mismos permisos. Aprecio tu ayuda.
Aboodred1
luego elimine 'usuario' del campo de página (acceso denegado) en el segundo paso
monymirza
si lo quito; Los usuarios anónimos solo pueden ver el acceso denegado sin redirigir a la página de inicio de sesión. Estoy seguro de que hay una manera de hacerlo en el módulo de reglas
Aboodred1
si. Además se puede hacer por el módulo de reglas. También puede hacerlo a través del módulo central de disparo.
monymirza
1
Si alguien tiene acceso denegado no significa que no haya iniciado sesión. Vea esta respuesta
Tanvir Ahmad
1

Estoy seguro de que puede lograr esto con reglas, pero también sería fácil hacerlo en el archivo template.php de su tema.

Algo como esto debería funcionar:

global $user;
if ($user->uid == 0 && arg(0) != 'user' && arg(1) != 'login'){
  drupal_goto('user/login');
}

O, si aún se desea acceder a las páginas de usuario / registro y usuario / contraseña:

global $user;
if ($user->uid == 0 && arg(0) != 'user'){
  drupal_goto('user/login');
}
Oportunidad G
fuente
Gracias @Chance. Ya encontré esta solución antes de publicar mi pregunta. Quiero usar el módulo de reglas o al menos entender por qué no funciona con "Drupal se está inicializando"
Aboodred1
@Chance, tengo curiosidad. ¿Dónde viviría esto dentro del archivo .theme?
TikaL13
0

El problema aquí es el evento en cuestión. En lugar de Drupal is initializingintentarlo Content is viewed.

joedougherty
fuente
Lo intenté antes de publicar esta pregunta y funcionó bien conmigo, excepto con las páginas de visualización, la página de registro, básicamente cualquier página que no sea nodo.
Aboodred1
0

Sé que esta es una publicación de hace dos años. Sin embargo, la solución para redirigir a un usuario anónimo a la página de inicio de sesión del usuario con reglas es la siguiente:

  • evento: se crea la entrada de registro del sistema
  • condición: el usuario tiene roles: anónimo
  • acción: valor de redireccionamiento de página: usuario

Espero que esto ayude a alguien.

Gabke
fuente
¿Has probado tu solución antes de publicarla aquí?
Aboodred1