Controle van usernaam en wachtwoord + alle bijhorende rechten BL.EC.Common,BL.Sys.Proxy 1 %RegisteredObject SES:NoSave SES:WrongKey SES:ToegangNotAllowed VHISIE Wrong Login SES:WrongKlant URL OP:TAORBOXSHOP TA'OR BOX Derde.EC.Session KLNr:%String,Taal:%String Moet nog verder uitgewerkt worden. Doorsnede van domein, klant en gebruiker. KLNr:%String,Taal:%String 0 $$$TotDatum "" Quit 1 ; NoSa is actief ]]> Beperk de Toegang en Opties lijsten door alles te verwijderen dat niet in de "maximum" toeganggroep zit. Beperk de Toegang en Opties lijsten door alles te verwijderen dat niet van toepassing is voor de gegeven klant. Bijvoorbeeld wordt het menuitem "webshop historiek" verwijderd als er geen bestaande winkelkarren zijn. VanHoecke ; WebShop $$$blWebShop #dim Pos As %Integer = $LF(lbToegang,$$$tgWebShop) If Pos,%blWebShop.Exist() $$$ListRemove(lbToegang,Pos) ; Verwijderen WebShop ; Offerte - KOFKL Set Pos=$LF(lbToegang,$$$tgOfferte) If Pos,'$D(^KOFKL(KLNr)) $$$ListRemove(lbToegang,Pos) ; Verwijderen Offerte ; Orders Set Pos=$LF(lbToegang,$$$tgOrder) If Pos,'$D(^KOD(KLNr)) $$$ListRemove(lbToegang,Pos) ; Verwijderen Order ; Uitleveringen Set Pos=$LF(lbToegang,$$$tgUitlevering) If Pos,'$D(^KUL(KLNr,"F")) $$$ListRemove(lbToegang,Pos) ; Verwijderen uitlevering ; Fakturen Set Pos=$LF(lbToegang,$$$tgFactuur) If Pos,'$D(^KFA1("F",KLNr)) $$$ListRemove(lbToegang,Pos) ; Verwijderen factuur ; Contracten Set Pos=$LF(lbToegang,$$$tgContractOrder) If Pos Do ; Klant heeft toegang tot contract orders controleren of er wel zijn . Set OrderType="" . Set ORDNr="" . For Set ORDNr=$O(^KOD(KLNr,"F",ORDNr)) Quit:ORDNr="" Do Quit:OrderType="C" . . Set OrderType=$P(^KOD(KLNr,"F",ORDNr,1),"\",25) . If OrderType'="C" $$$ListRemove(lbToegang,Pos) ; Verwijder contract orders ; DirectOrders Set Pos=$LF(lbToegang,$$$tgDirectOrder) If Pos Do ; Klant heeft toegang tot direct orders controleren of hij er mag hebben . Set BLKLNr="" . Set OrderType="" . For Set BLKLNr=$O(^BLBeri("K",BLKLNr)) Quit:BLKLNr="" Do Quit:OrderType="D" . . Quit:$P($G(^BLBeri("K",BLKLNr)),"\",3)'=KLNr . . Set:($P(^BLBeri("K",BLKLNr),"\",6)="DO") OrderType="D" . If OrderType'="D" $$$ListRemove(lbToegang,Pos) ; Verwijder direct orders ; Historiek Set Pos=$LF(lbToegang,$$$tgHistoriek) If Pos,'$D(^KKAAP(KLNr)) $$$ListRemove(lbToegang,Pos) ; Verwijderen Historiek ; IntraStat - alleen voor niet Belgen Set Pos=$LF(lbToegang,$$$tgIntraStat) #Dim IsKlantDieSowiesoIntrastatWilt As %Boolean = (##class(DOM.VKP.enu.Klant).BiemarBois() = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantPartijID(KLNr)) If Pos && $$$Not(IsKlantDieSowiesoIntrastatWilt) && ('$D(^KFA1("F",KLNr))||($P(^KKL(^KK1(KLNr),0),"\",8)=1019)) $$$ListRemove(lbToegang,Pos) ; Verwijderen intrastat ; Opties #dim KlantID As DOM.VKP.VanHoeckeKlantID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantPartijID(KLNr) Set KlantTypeAPI=##class(DOM.DomeinContext).Instance().GeefKlantTypeAPI() Set IsKSKlant=$$$Not(KlantTypeAPI.IsIndustriePoolKlant(KlantID)) Set IsHandel=$$IsHandel^KLANT5(KLNr) Set:(IsHandel) lbOpties=lbOpties_$LB($$$opIsHandel) ; Numerieke waarde voor KlantType Set:(IsKSKlant) lbOpties=lbOpties_$LB($$$opIsKS) Set Pos=$LF(lbOpties,$$$opOldTandemBox) If Pos,%ECSession.ProductGroep'="" $$$ListRemove(lbOpties,Pos) ; Verwijderen Oude Tandembox als beperkt tot orgalux If $D(^PAKKET("IK",KLNr)) Do . Set Pos=$LF(lbOpties,$$$opHasProdRef) . Set:'Pos lbOpties=lbOpties_$LB($$$opHasProdRef) ; KlantProductrefenties Else Do . Set Pos=$LF(lbToegang,$$$tgProductKlantRef) . $$$ListRemove(lbToegang,Pos) ; Verwijderen radiobutton ProductKlantRef . Set Pos=$LF(lbToegang,$$$tgKlantProdRef) . $$$ListRemove(lbToegang,Pos) ; Verwijderen menuitem KlantProdRef . Set Pos=$LF(lbOpties,$$$opHasProdRef) . $$$ListRemove(lbOpties,Pos) ; Verwijderen opties HasProdRef Set %ECSession.Toegang=lbToegang Set %ECSession.Opties=lbOpties ]]> Verwijder de "klant selectie" functionaliteit als de gebruiker maar tot 1 klant toegang heeft. om een toegang in het resultaat te laten voorkomen moet het in beide voorkomen, behalve voor die items waar de derde piece een "U"(=Unie) is lbT1:%List,lbT2:%List pxKlantSettings:BL.EC.pxKlantSettings KlantSubmenu:BL.EC.pxemItem,ToegangOpties:%Library.List,KLNr:%String,Toegang:Derde.EC.Toegang,Taal:%String 1 KlantSubmenu:BL.EC.pxemItem,ToegangOpties:%Library.List,KLNr:%String,Toegang:Derde.EC.Toegang,Taal:%String 1 KlantSubmenu:BL.EC.pxemItem,ToegangOpties:%Library.List,KLNr:%String,Toegang:Derde.EC.Toegang,Taal:%String 1 KLNr:%String,Toegang:Derde.EC.Toegang,Taal:%String 1 %String KLNr:%String,Toegang:Derde.EC.Toegang,Taal:%String 1 %String KLNr:%String,Toegang:Derde.EC.Toegang,Taal:%String 1 %String RootURL:%String,WebshopModus:APPS.EC.enu.WebshopModus,KLNr:%String,Toegang:Derde.EC.Toegang,Taal:%String 1 %String N.B. "OldTandembox" slaat eigenlijk op de huidige TANDEMBOX website. KlantSubmenu:BL.EC.pxemItem,ToegangOpties:%Library.List,KLNr:%String,Toegang:Derde.EC.Toegang,Taal:%String KLNr:%String,Toegang:Derde.EC.Toegang,Taal:%String %String KlantNr:%String,WebshopModus:APPS.EC.enu.WebshopModus 1 %String KlantNr:%String,Toegang:Derde.EC.Toegang 1 %String List:%List,Groep:%String,ZonderKind:%Boolean,lbSort:%List Initialisatie met gebruikersnaam en wachtwoord pxStatus 4) liuSendAttemptMail(ClientIP) . Set:($IsObject(Status)) Status=Status.AsECStatus() Quit Status ;---------- ;Tijdelijke overgangsfunctie vhisie v2 -> v3 om foutieve logins te catchen en de klant op te bellen liuSendAttemptMail(IP) ;Database met logins uitlezen en cachen Set RS=##class(%ResultSet).%New("Derde.EC.Toegang:QGetToegang") Set tmpStatus=RS.Execute(0,0) Kill aToegang For Quit:('RS.Next()) Do . Set aToegang($$liuGetUserNameForSearch(RS.Data("UserNaam")))=RS.Data("ID") ;Pogingen uitlezen en trachten te koppelen aan een user Kill aMatch Set Cnt="" Set FailCnt=0 For Set Cnt=$O(^Derde.Sys.IPAgent.Log(IP,..#ipaWrongLogin,Cnt)) Quit:(Cnt="") Do . Set UserName=^Derde.Sys.IPAgent.Log(IP,..#ipaWrongLogin,Cnt,1) . Set UserName=$$liuGetUserNameForSearch(UserName) . Quit:(UserName="") . Set:($D(aToegang(UserName))) aMatch(UserName)=aToegang(UserName), FailCnt=FailCnt+1 ;Enkel boodschap weergeven wanneer 5 geldige foutieve logins werden gevonden Quit:(FailCnt'=5) ;Alle matches doorlopen en in een mail plaatsen Set UserName="" Set FirstUserName="" Set MailMsg="" For Set UserName=$O(aMatch(UserName)) Quit:(UserName="") Do . Set ToegangID=aMatch(UserName) . Set objToegang=##class(Derde.EC.Toegang).%OpenId(ToegangID) . Quit:($P(objToegang.LastLoginTijdStip,",",1)>60904) . Set KlantNr=objToegang.GetKlant() . Set FirstUserName=$S(FirstUserName="":objToegang.UserNaam,1:IP) . Set Header="* "_objToegang.UserNaam_" ("_KlantNr_" - "_##class(Derde.Klant.Klant).GetFullName(KlantNr)_")" . Set MailMsg=MailMsg_$C(13,10,13,10)_Header_$C(13,10)_"Last successful login: "_$$GetHumanDate^vhLib(objToegang.LastLoginTijdStip) If MailMsg'="" Do . Set MailMsg="Gekoppelde gebruiker(s):"_$C(13,10)_MailMsg_$C(13,10,13,10,13,10)_##class(BL.Sys.IPAgent).GetSummary(..#ipaWrongLogin,IP) . Do SendMiniMailForced^vhLib.Mail("vhisie",$LB("pv@vanhoecke.be"),"Gebruiker '"_FirstUserName_"' heeft problemen met inloggen",MailMsg) Quit liuGetUserNameForSearch(UserName) Quit $ZCVT($ZSTRIP(UserName,"*P"),"U") ]]> OldWachtWoord:%String,NewWachtWoord:%String,EncryptType:%String pxStatus Creatie van het object pxLogIn, dit object wordt teruggeven na een succevolle login Proxy:pxLogIn pxToegang:BL.Sys.Toegang,oToegang:Derde.EC.Toegang +$H ; nog geen tijd . Quit:$P(Rec,"`",6)<+$H ; tijd is verstreken . Quit:$LF(DontShowMemo,Label) ; Reeds getoond . Quit:($P(Rec,"`",3)="I")&&('InternIP) ; voor intern gebruik (testfase) . Set ECTekst=$G(^RES("EC","PI","LOGIN","D",Label,Taal)) . Quit:ECTekst="" . Set Tekst($I(Tekst))=ECTekst . Set:$P(Rec,"`",4)="M" pxToegang.MemoNietMeerTonen=1 ; 1 : OneShot, M = Manueel met checkbox 'Niet meer tonen', T = Steeds tonen voor een bepaalde tijd Quit:Tekst="" If Tekst=1 Do ; slechts 1 lijn . Set Result=Tekst(1) Else Do ; meerdere lijnen . Set Result="" . For I=1:1:Tekst Do . . Set Result=Result_"

"_Tekst(I)_"

" . . Set:I

" Set pxToegang.Memo=Result Do ..DontShowMemo(1) Quit ]]>
SetType= 1 : alle oneshot opnemen SetType= M : alle met checkbox DontShowMemo opnemen SetType:%String +$H Do ; nog geen tijd of tijd is verstreken . . Set Pos=$LF(DontShowMemo,Label) . . Quit:Pos="" . . Set DontShowMemo=$LI(DontShowMemo,1,Pos-1)_$LI(DontShowMemo,Pos+1,$LL(DontShowMemo)) ; verwijder label . Else Do . . Quit:$LF(DontShowMemo,Label) ; Reeds getoond . . Quit:($P(Rec,"`",3)="I")&&('InternIP) ; voor intern gebruik (testfase) . . Quit:$P(Rec,"`",4)'=SetType ; 1 : OneShot, M = Manueel met checkbox 'Niet meer tonen', T = Steeds tonen voor een bepaalde tijd . . Set DontShowMemo=DontShowMemo_$LB(Label) Quit:DontShowMemo=oToegang.DontShowMemo ; Niets veranderd Set oToegang.DontShowMemo=DontShowMemo ; Tijdelijk niet uitvoeren Do oToegang.%Save() ]]> De opgeslagen sessie terug openen 1 SessionKey:%String BL.EC.pxStatus Controleert en logt de toegang Toegang:Derde.EC.Toegang,Actie,Detail BL.EC.pxStatus controle of de User toegang heeft Toegang:Derde.EC.Toegang KlantProdRef:%Boolean,TonenUitgebreid:%Boolean,TonenProductDetail:%Boolean,MetGroepScheiding:%Boolean,Taal:%String BL.EC.pxStatus 1