web-dev-qa-db-fra.com

Comment rediriger des utilisateurs anonymes vers la page de connexion en utilisant le module Rules?

J'utilise le module de règles avec drupal 7 afin de rediriger les utilisateurs anonymes vers la page de connexion, j'ai donc créé une règle avec réagir à l'événement "Drupal s'initialise", condition "L'utilisateur a un rôle" avec un utilisateur anonyme et "Pas d'URL de connexion au site", puis j'ai ajouté une action "Rediriger la page" à l'URL de connexion au site. Lorsque j'ai essayé de tester la règle; drupal continuait de rediriger vers la page de connexion sur et jusqu'à ce que le serveur Apache cesse de fonctionner.

12
Aboodred1

La façon dont je l'ai résolu comme suit:

  • Événements: Drupal initialise
  • Conditions:

    1. L'utilisateur a des rôles - Parameter: User: [site:current-user], Roles: anonymous user
    2. PAS comparaison de texte - Parameter: Text: [site:current-page:url], Matching text: user/login
  • Actions: Redirection de page - Parameter: URL: user/login


Exporter la règle comme suit:

{ "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" } } ]
  }
}
12
Aboodred1

Aller à /admin/people/permissions décochez Afficher le contenu publié pour les utilisateurs anonymes

enter image description here

allez maintenant à /admin/config/system/site-information ajouter 'utilisateur' dans le champ de la page (accès refusé)

enter image description here

3
monymirza

Je suis sûr que vous pouvez retirer cela avec des règles, mais ce serait aussi facile à faire dans le fichier template.php de votre thème.

Quelque chose comme ça devrait fonctionner:

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

Ou, si l'accès aux pages utilisateur/inscription & utilisateur/mot de passe est toujours souhaité:

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

Le problème ici est l'événement en question. Au lieu de Drupal is initializing, essayez Content is viewed.

0
joedougherty

Je sais que c'est un article d'il y a deux ans. Cependant, la solution pour rediriger un utilisateur anonyme vers la page de connexion de l'utilisateur avec des règles est la suivante:

  • événement: l'entrée du journal système est créée
  • condition: l'utilisateur a un ou plusieurs rôles: anonyme
  • action: valeur de redirection de page: utilisateur

J'espère que cela aidera quelqu'un.

0
Gabke