Lusta regisztráció

Razide képe

Sziasztok!

Pár napja kínlódok egy olyan megoldáson, hogy amikor nem regisztrált felhasználók feltöltenek egy tartalmat (node-ot), akkor a rendszer az adataik alapján regisztrálja is őket. A regisztráció után pedig az újonnan létrejött node author értékéhez az új felhasználót kellene társítani, mert akkor később tudná módosítani a megadott adatokat. Erre felépítettem egy szabályt:

0. Node mentése után.
1. Feltételek: a felhasználó szerepköre regisztrálatlan, valamint legyen kitöltve az e-mail mező a tartalomnál.
2. Hozzon létre egy új entitást, ami egy felhasználó, a node vonatkozó mezőit társítsa az user mezőihez. Az entitás változóértéke: newuser.
3. Az újonnan létrehozott felhasználó alapesetben blokkolt, ezért feloldom a blokkolást. - eddig minden pöpec, létrejön a felhasználó, jók az értékei.
4. Adatérték beállítása: node:author = newuser. Na ez nem megy. A node-author:uid sajnos az entity modul által védett érték, nem lehet módosítani. Ha a node:author:name értéket akarom megadni, akkor hibaüzenet, nem jön létre sem a node, sem az user, mert még node-authorom sincs, nemhogy neve.

Itt a pontos szabályom eddig:

  1. { "rules_lazy_reg" : {
  2. "LABEL" : "Lazy reg",
  3. "PLUGIN" : "reaction rule",
  4. "OWNER" : "rules",
  5. "REQUIRES" : [ "rules" ],
  6. "ON" : { "node_insert--bringak" : { "bundle" : "bringak" } },
  7. "IF" : [
  8. { "user_has_role" : { "account" : [ "node:author" ], "roles" : { "value" : { "1" : "1" } } } },
  9. { "NOT data_is_empty" : { "data" : [ "node:field-email" ] } }
  10. ],
  11. "DO" : [
  12. { "entity_create" : {
  13. "USING" : {
  14. "type" : "user",
  15. "param_field_user_lakcim" : [ "node:field-lakcim" ],
  16. "param_name" : "[node:field-email]",
  17. "param_mail" : "[node:field-email]"
  18. },
  19. "PROVIDE" : { "entity_created" : { "newuser" : "L\u00e9trej\u00f6tt entit\u00e1s" } }
  20. }
  21. },
  22. { "data_set" : {
  23. "data" : [ "newuser:field-user-telefon" ],
  24. "value" : "[node:field-telefonszam]"
  25. }
  26. },
  27. { "data_set" : {
  28. "data" : [ "newuser:field-user-lakcim" ],
  29. "value" : [ "node:field-lakcim" ]
  30. }
  31. },
  32. { "user_unblock" : { "account" : [ "newuser" ] } },
  33. { "data_set" : { "data" : [ "node:author" ], "value" : [ "newuser" ] } }
  34. ]
  35. }
  36. }

Van valakinek ötlete, arra, hogy hogyan lehetne az új node szerzője az új user?

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
Dahar képe

Most gyorban összekattingattam egy rule-t, ami a termék tipusú tartalmakat mentésük után átadja egy másik felhasználó tulajdonába, ez gond nélkül működik.
Lehet hogy mert én a fethed entityvel töltöm be a user entitást és annak át tudja adni a tartalmat. Esetleg próbáld ki hogy az account-ból számazó userid-t betöltöd fetch entity by id-vel és az így kapott objektumot teszted a node:author-ba

  1. { "rules_teszt" : {
  2. "LABEL" : "teszt",
  3. "PLUGIN" : "reaction rule",
  4. "OWNER" : "rules",
  5. "REQUIRES" : [ "rules" ],
  6. "ON" : { "node_update--termek" : { "bundle" : "termek" } },
  7. "DO" : [
  8. { "entity_fetch" : {
  9. "USING" : { "type" : "user", "id" : "445" },
  10. "PROVIDE" : { "entity_fetched" : { "entity_fetched" : "Fetched entity" } }
  11. }
  12. },
  13. { "data_set" : { "data" : [ "node:author" ], "value" : [ "entity-fetched" ] } }
  14. ]
  15. }
  16. }
0
0
Razide képe

  1. { "entity_fetch" : {
  2. "USING" : { "type" : "user", "id" : [ "newuser:uid" ] },
  3. "PROVIDE" : { "entity_fetched" : { "entity_fetched" : "entity_fetched" } }
  4. }
  5. },
  6. { "data_set" : { "data" : [ "node:author" ], "value" : [ "entity-fetched" ] } },

A fenti módon sem sikerül authort beállítani. Az a legérdekesebb, hogy a newuser-nek nincs UID-je, ha kiíratom, akkor üres az érték.

0
0