Come reindirizzare gli utenti anonimi alla pagina di accesso utilizzando il modulo Regole?


12

Sto usando il modulo delle regole con drupal 7 per reindirizzare gli utenti anonimi alla pagina di accesso, quindi ho creato una regola con reazione all'evento "Drupal sta inizializzando", condizione "L'utente ha un ruolo" con l'utente anonimo e "URL di accesso al sito non ", quindi aggiunta un'azione" Reindirizzamento pagina "all'URL di accesso al sito. Quando ho provato a testare la regola; drupal ha continuato a reindirizzare più volte alla pagina di accesso fino a quando il server Apache non ha smesso di funzionare. Eventuali consigli


un utente anonimo può esplorare il contenuto del sito? per quale motivo è necessario reindirizzare la pagina di accesso?
monymirza,

agli utenti anonimi non è consentito esplorare alcun contenuto del sito e non è consentito registrarsi se non con un invito. Gli utenti devono effettuare l'accesso per utilizzare il sito.
Aboodred1

Non capisco questa parte "drupal regola ha continuato a reindirizzare alla pagina di accesso senza mostrarla." Potresti spiegare cosa intendi? Altrimenti non sono sicuro di capire quale parte non funziona.
Boriana Ditcheva,

Bene, quando vado nella homepage o in qualsiasi altra pagina ma non nella pagina di accesso, la regola funziona bene; reindirizza l'utente alla pagina di accesso, tuttavia il browser reindirizza continuamente alla pagina di accesso fino a quando apache smette di funzionare.
Aboodred1

se agli utenti anonimi non è consentito esplorare alcun contenuto del sito, rimuovere l'autorizzazione per visualizzare il contenuto
monymirza

Risposte:


12

Il modo in cui l'ho risolto come segue:

  • Eventi: Drupal si sta inizializzando
  • condizioni:

    1. L'utente ha un ruolo (i) -Parameter: User: [site:current-user], Roles: anonymous user
    2. NOT Confronto del testo -Parameter: Text: [site:current-page:url], Matching text: user/login
  • Azioni: reindirizzamento della pagina -Parameter: URL: user/login


Regola di esportazione come segue:

{ "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 questo è per drupal 7
Aboodred1

ho fatto un errore e sta funzionando.
TopTomato,

@TopTomato Awesome! Sono contento che abbia funzionato per te.
Aboodred1

3

Vai a /admin/people/permissionsdeselezionare Visualizza contenuto pubblicato per gli utenti anonimi

inserisci qui la descrizione dell'immagine

ora vai ad /admin/config/system/site-informationaggiungere 'utente' nel campo della pagina (accesso negato)

inserisci qui la descrizione dell'immagine


buon lavoro, ma ho ancora bisogno di mostrare l'accesso negato pagina perché non tutti gli utenti hanno le stesse autorizzazioni. Apprezzo il vostro aiuto.
Aboodred1

quindi rimuovere "utente" dal campo della pagina (accesso negato) al 2 ° passaggio
monymirza,

se lo rimuovo; gli utenti anonimi possono vedere solo l'accesso negato senza reindirizzare alla pagina di accesso. Sono sicuro che c'è un modo per farlo nel modulo delle regole
Aboodred1

sì. ulteriore può essere fatto dal modulo delle regole. puoi anche farlo tramite il modulo core trigger.
Monymirza,

1
Se a qualcuno è stato negato l'accesso non significa che non sono connessi. Vedi questa risposta
Tanvir Ahmad

1

Sono sicuro che puoi farlo con le regole, ma sarebbe facile farlo anche nel file template.php del tuo tema.

Qualcosa del genere dovrebbe funzionare:

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

Oppure, se si desidera ancora accedere alle pagine utente / registrazione e utente / password:

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

Grazie @Chance Ho già trovato questa soluzione prima di pubblicare la mia domanda. Voglio usare il modulo delle regole o almeno capire perché non funziona con "Drupal sta inizializzando"
Aboodred1

@Chance, sono curioso. Dove risiederebbe nel file .theme?
TikaL13,

0

Il problema qui è l'evento in questione. Invece di Drupal is initializingprovare Content is viewed.


L'ho provato prima di pubblicare questa domanda e ha funzionato bene con me, tranne con le pagine di visualizzazione, la pagina di registrazione, praticamente qualsiasi pagina che non sia nodo.
Aboodred1

0

So che questo è un post di due anni fa. Tuttavia, la soluzione per reindirizzare un utente anonimo alla pagina di accesso dell'utente con le regole è la seguente:

  • evento: viene creata la voce del registro di sistema
  • condizione: l'utente ha ruoli: anonimo
  • azione: valore di reindirizzamento della pagina: utente

Spero che questo possa aiutare qualcuno.


hai provato la tua soluzione prima di pubblicarla qui?
Aboodred1
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.