Controle van usernaam en wachtwoord + alle bijhorende rechten BL.EC.Common,BL.Sys.Proxy 1 %RegisteredObject 0 SES:NoSave SES:WrongKey SES:ToegangNotAllowed VHISIE Wrong Login SES:WrongKlant Derde.EC.Session KLNr,Taal Moet nog verder uitgewerkt worden. Doorsnede van domein, klant en gebruiker. KLNr,Taal 0 $$$TotDatum "" D WL^vhDBG("NOSA") Quit 1 ; NoSa is actief ]]> VanHoecke ; WebShop $$$blWebShop Set Pos=$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) If Pos,('$D(^KFA1("F",KLNr))||($P(^KKL(^KK1(KLNr),0),"\",8)=1019)) $$$ListRemove(lbToegang,Pos) ; Verwijderen intrastat ; Opties Set:$$IsHandel^KLANT5(KLNr) lbOpties=lbOpties_$LB($$$opIsHandel) ; Numerieke waarde voor KlantType Set:$$ISKLANT^KS(KLNr) lbOpties=lbOpties_$LB($$$opIsKS) ; Regio groter dan 9 of = 0 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 ]]> 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,lbT2 pxKlantSettings List,Groep,ZonderKind,lbSort 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,NewWachtWoord,EncryptType pxStatus Creatie van het object pxLogIn, dit object wordt teruggeven na een succevolle login Proxy:pxLogIn pxToegang,oToegang +$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 +$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 Controleert en logt de toegang Toegang,Actie,Detail controle of de User toegang heeft Toegang KlantProdRef:%Boolean,TonenUitgebreid:%Boolean,TonenProductDetail:%Boolean,MetGroepScheiding:%Boolean,Taal:%String BL.EC.pxStatus 1