====== pears.NetContactRightsSet ====== Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace. ===== Original SQL ===== create procedure "pears"."NetContactRightsSet"( in "pWebUserID" char(20),in "pEmploymentID" char(20),in "pRightsList" long varchar ) result( "pResult" char(250) ) //IQXWeb begin declare "cid" char(20); declare "pRequestedWebUserID" char(20); declare "i" smallint; declare "j" smallint; declare "q" smallint; declare "dummy" smallint; declare "s" char(30); declare "t" char(30); declare local temporary table "IDs"( "ID" char(20) null, ) not transactional; insert into "IDs"( "ID" ) select distinct "e"."companyid" from "employment" as "e" key join "iqxnetuserlink" as "i" where "i"."iqxnetuserid" = "pWebUserID"; if not "pEmploymentID" = any(select "e"."employmentid" from "employment" as "e" join "IDs" on "e"."companyid" = "IDs"."ID") then select '99:~Permission denied'; return end if; if "IQXNetHasPermission"("pWebUserID",'MAINTAINCONTACTS') = 0 then select '99:~Permission denied'; return end if; set "pRequestedWebUserID" = (select first "IQXNetUserID" from "IQXNetUserLink" where "employmentid" = "pEmploymentID"); delete from "iqxnetrightassigned" where "iqxnetuserid" = "pRequestedWebUserID" and "iqxnetrightid" = any(select "a"."iqxnetrightid" from "iqxnetrightallowed" as "a" key join "iqxnetuserclass" key join "iqxnetuser" as "u" where "a"."maintainonweb" = 1 and "u"."iqxnetuserid" = "prequestedwebuserid"); set "pRightsList" = "replace"("pRightsList",'Right_',''); "looplabel": loop set "i" = "charindex"(',',"pRightsList"); if "i" = 0 then set "s" = "prightslist" else set "s" = "left"("prightslist","i"-1); set "prightslist" = "right"("prightslist","length"("prightslist")-"i") end if; set "s" = "trim"("s"); set "q" = 0; set "j" = "charindex"('=',"s"); if "j" > 0 then set "t" = "trim"("right"("s","length"("s")-"j")); set "s" = "trim"("left"("s","j"-1)); case "t" when 'Allow' then set "q" = 1 when 'Deny' then set "q" = -1 when '1' then set "q" = 1 when '-1' then set "q" = -1 end case end if; if "s" <> '' and "q" <> 0 then begin insert into "iqxnetrightassigned"( "iqxnetuserid","iqxnetrightid","assigned" ) values( "pRequestedWebUserID","s","q" ) exception when others then set "dummy" = 0 end end if; if "i" = 0 then leave "looplabel" end if end loop "looplabel"; select '0:~Success' end /* DOC 2016-08-26 PC test and doc 2018-08-27 PC improve error handler test: null pWebUserID, null pEmploymentId, null pRightslist correct pWebUserID, correct pEmploymentID, correct pRightsList but no Maintaincontacts right set an incorrect, allowed right deny a correct, allowed right set a correct, denied right deny a correct, allowed right and allow a correct, denied right */ /* TEST call NetTestSetup(''); delete from iqxnetrightallowed where iqxnetrightid='maintaincontacts' and iqxnetuserclassid='client'; delete from iqxnetrightallowed where iqxnetrightid='managementinfo' and iqxnetuserclassid='client'; update iqxnetuserlink set employmentid=null where IQXNetUserLinkID in ('test.agency','test.candidate','test.owner'); update iqxnetuserlink set employmentid='TEST' where IQXNetUserLinkID='test.client'; select * from NetContactRightsSet(null,null,null); expect 99*; select * from NetContactRightsSet('test.client','test','right_maintaincontacts=0'); expect 99*; select * from NetContactRightsSet('test.client','test','right_zz=1'); expect 99*; insert into iqxnetrightallowed values ('maintaincontacts','CLIENT','*',null); select * from NetContactRightsSet('test.client','test','right_maintaincontacts=0'); expect 0*; select * from NetContactRights('test.client','test') where rightid='maintaincontacts'; expect EOF; select * from NetContactRightsSet('test.client','test','right_maintaincontacts=1'); expect 0*; select * from NetContactRights('test.client','test') where rightid='maintaincontacts'; expect EOF; update iqxnetrightallowed set maintainonweb=1 where iqxnetrightid='maintaincontacts' and iqxnetuserclassid='CLIENT'; select * from NetContactRights('test.client','test') where rightid='maintaincontacts'; expect rightassigned=1; insert into iqxnetrightallowed values ('managementinfo','CLIENT','*',1); select * from NetContactRightsSet('test.client','test','right_maintaincontacts=0,right_managementinfo=1'); expect 0*; select * from NetContactRights('test.client','test') where rightid='managementinfo'; expect rightassigned=1; select * from NetContactRights('test.client','test') where rightid='maintaincontacts'; expect rightassigned=0; update iqxnetrightallowed set maintainonweb=1 where iqxnetrightid='managementinfo' and iqxnetuserclassid='client'; delete from iqxnetrightassigned where iqxnetuserid='test.client'; */ go COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."NetContactRightsSet" IS {create PROCEDURE pears."NetContactRightsSet"(in pWebUserID char(20),in pEmploymentID char(20),in pRightsList long varchar) result(pResult char(250)) //IQXWeb begin declare cid char(20); declare pRequestedWebUserID char(20); declare i smallint; declare j smallint; declare q smallint; declare dummy smallint; declare s char(30); declare t char(30); declare local temporary table IDs( ID char(20) null, ) not transactional; insert into IDs( ID) select distinct e.companyid from employment as e key join iqxnetuserlink as i where i.iqxnetuserid = pWebUserID; if not pEmploymentID = any(select e.employmentid from employment as e join IDs on e.companyid = IDs.ID) then select '99:~Permission denied'; return end if; if IQXNetHasPermission(pWebUserID,'MAINTAINCONTACTS') = 0 then select '99:~Permission denied'; return end if; set pRequestedWebUserID=(select first IQXNetUserID from IQXNetUserLink where employmentid = pEmploymentID); delete from iqxnetrightassigned where iqxnetuserid = pRequestedWebUserID and iqxnetrightid = any(select a.iqxnetrightid from iqxnetrightallowed as a key join iqxnetuserclass key join iqxnetuser as u where a.maintainonweb = 1 and u.iqxnetuserid = prequestedwebuserid); set pRightsList=replace(pRightsList,'Right_',''); looplabel: loop set i=charindex(',',pRightsList); if i = 0 then set s=prightslist else set s="left"(prightslist,i-1); set prightslist="right"(prightslist,length(prightslist)-i) end if; set s=trim(s); set q=0; set j=charindex('=',s); if j > 0 then set t=trim("right"(s,length(s)-j)); set s=trim("left"(s,j-1)); case t when 'Allow' then set q=1 when 'Deny' then set q=-1 when '1' then set q=1 when '-1' then set q=-1 end case end if; if s <> '' and q <> 0 then begin insert into iqxnetrightassigned( iqxnetuserid,iqxnetrightid,assigned) values( pRequestedWebUserID,s,q) exception when others then set dummy=0 end end if; if i = 0 then leave looplabel end if end loop looplabel; select '0:~Success' end /* DOC 2016-08-26 PC test and doc 2018-08-27 PC improve error handler test: null pWebUserID, null pEmploymentId, null pRightslist correct pWebUserID, correct pEmploymentID, correct pRightsList but no Maintaincontacts right set an incorrect, allowed right deny a correct, allowed right set a correct, denied right deny a correct, allowed right and allow a correct, denied right */ /* TEST call NetTestSetup(''); delete from iqxnetrightallowed where iqxnetrightid='maintaincontacts' and iqxnetuserclassid='client'; delete from iqxnetrightallowed where iqxnetrightid='managementinfo' and iqxnetuserclassid='client'; update iqxnetuserlink set employmentid=null where IQXNetUserLinkID in ('test.agency','test.candidate','test.owner'); update iqxnetuserlink set employmentid='TEST' where IQXNetUserLinkID='test.client'; select * from NetContactRightsSet(null,null,null); expect 99*; select * from NetContactRightsSet('test.client','test','right_maintaincontacts=0'); expect 99*; select * from NetContactRightsSet('test.client','test','right_zz=1'); expect 99*; insert into iqxnetrightallowed values ('maintaincontacts','CLIENT','*',null); select * from NetContactRightsSet('test.client','test','right_maintaincontacts=0'); expect 0*; select * from NetContactRights('test.client','test') where rightid='maintaincontacts'; expect EOF; select * from NetContactRightsSet('test.client','test','right_maintaincontacts=1'); expect 0*; select * from NetContactRights('test.client','test') where rightid='maintaincontacts'; expect EOF; update iqxnetrightallowed set maintainonweb=1 where iqxnetrightid='maintaincontacts' and iqxnetuserclassid='CLIENT'; select * from NetContactRights('test.client','test') where rightid='maintaincontacts'; expect rightassigned=1; insert into iqxnetrightallowed values ('managementinfo','CLIENT','*',1); select * from NetContactRightsSet('test.client','test','right_maintaincontacts=0,right_managementinfo=1'); expect 0*; select * from NetContactRights('test.client','test') where rightid='managementinfo'; expect rightassigned=1; select * from NetContactRights('test.client','test') where rightid='maintaincontacts'; expect rightassigned=0; update iqxnetrightallowed set maintainonweb=1 where iqxnetrightid='managementinfo' and iqxnetuserclassid='client'; delete from iqxnetrightassigned where iqxnetuserid='test.client'; */ }