...
Code Block |
---|
rule owner_creation_owner_id_uniqueness_guard { select when owner creation pre { owner_id = event:attr("owner_id"); } if ent:owners >< owner_id then send_directive("owner_id already in use",{"owner_id": owner_id}); fired { last; } } rule owner_creation { select when owner creation fired { raise pico event "new_child_request" attributes event:attrs(); } } rule pico_new_child_created { select when pico new_child_created pre { child_id = event:attr("id"); child_eci = event:attr("eci"); rsowner_attrsid = event:attr("rs_attrs"); owner_id = rs_attrs{"owner_id"}"); method = rs_attrs{event:attr("method"}); code = method == "code"; dname = rs_attrs{event:attr("dname"}) || owner_id; } every { engine:installRuleset(child_id, url="temp_acct.krl", base=meta:rulesetURI); event:send({"eci":child_eci, "domain":"owner", "type":"creation", "attrs":event:rs_attrs()}); engine:newChannel(child_id,time:now(),"to owner") setting(new_channel); send_directive( "new owner pico", { "owner_id": owner_id, "pico_id": child_id, "eci": new_channel{"id"}, "method": method}); } always { raise owner event "new_owner_pico_with_code" attributes rs_event:attrs().put({"owner_pico_id":child_id}) if code; ent:owners{owner_id} := { "pico_id": child_id, "eci": new_channel{"id"}, "dname": dname, "method": method }; } } rule owner_new_owner_pico_with_code { select when owner new_owner_pico_with_code pre { owner_pico_id = event:attr("owner_pico_id"); } every { engine:newChannel(owner_pico_id,"code query","secret") setting(code_query_channel); send_directive("new owner pico code query channel", event:attrs().put("eci",code_query_channel{"id"})); } } |
...