Rules: átirányítás bejelentkezés után, hacsak nem egyszeri linkről érkezünk

A Drupal alaprendszer a /user oldalon való bejelentkezés után a saját profil oldalunkra irányít. A login blokk használatakor pedig arra az oldalra kerülünk vissza, ahol bejelentkezés előtt voltunk.

Időnként azonban szükség lehet arra, hogy a felhasználót egy általunk meghatározható útvonalra tereljük bejelentkezés után. Mi sem egyszerűbb: bevethetjük pl. a Login Destination vagy a LoginToboggan modulokat. Ha azonban egyébként is használjuk a Rules modult, nincs szükség az előbbiekre. Pillanatok alatt összekattinthatunk egy átirányítást. Azonban az egyszeri bejelentkezés működésben tartsa már kicsit izgalmasabb. Haladjunk sorjában!

A Rules rule létrehozása

Egy rule három fő összetevőből áll(hat). Esemény(ek)ből (Events), feltétel(ek)ből (Conditions) és művelet(ek)ből (Actions). A példánkban: Events = User has logged in – vagyis amikor a felhasználó bejelentkezett… –, Actions = Page redirect, Parameter: URL ahova/atiranyitom – …irányítsuk át az ahova/atiranyitom oldalra!

Az átirányítást ezzel le is tudtuk, már csak az egyszeri bejelentkezés működést kell megoldanunk.

Feltétel hozzáadása

Itt lehet eltévedni! Első lépésben a egy legördülő mezőből (Select condition to add) kell kiválasztanunk a feltételt. „Józan paraszti ésszel” azt gondolhatjuk, hogy a Path csoport két lehetséges értéke közül közül kell valamelyiket választanunk. A második lehetőség (URL alias exists) elég „gyanús”, legyen az!

Nézzük a lehetséges behelyettesítési mintákat (Replacement patterns): hohó, hát itt is van nekünk az [account:one-time-login-url] token! Sínen vagyunk. Kiválasztjuk, hozzáadjuk, mentjük és kész, működik, hátradőlhetünk! Hát, sajnos nem.

Hogy miért nem, nem tudom, nem jártam utána. Azonban némi keresgélés után a drupal.org Rules issue-i közül előkerült a működő megoldás. Íme.

  • Condition: Text comparison
  • Data selector: site:current-page:path
  • Matching text value: user/reset
  • Comparison operation value: contains
  • Negate: checked (kipipálva)

Magyarul: nézzük meg az aktuális oldal útvonalának szövegét, hogy ne(!) tartalmazza a user/reset értéket. Ha ez teljesül, akkor lehet végrehajtani az átirányítást. Ez működik.

Most lehet hátradőlni! :o)

PS: Az exportált rule így néz ki:

{ "rules_login" : {
"LABEL" : "Login",
"PLUGIN" : "reaction rule",
"TAGS" : [ "User" ],
"REQUIRES" : [ "rules", "path" ],
"ON" : [ "user_login" ],
"IF" : [
{ "NOT text_matches" : { "text" : [ "site:current-page:path" ], "match" : "user\/reset" } }
],
"DO" : [ { "redirect" : { "url" : "frontpage" } } ]
}
}

Megosztó személyiség vagy?
2013. február 27.Permalink 1 Comment

One thought on “Rules: átirányítás bejelentkezés után, hacsak nem egyszeri linkről érkezünk

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.