¿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.


¿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" } } ]
  }
}

@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í


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');
}

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.


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.


¿Has probado tu solución antes de publicarla aquí?
Aboodred1
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.