Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
web-interface.assets.b6fe2bb5-8538.645d53752013b6db27fb.js.map Maven / Gradle / Ivy
{"version":3,"file":"b6fe2bb5-8538.645d53752013b6db27fb.js","mappings":"kMAoBMA,GAASC,EAAAA,EAAAA,GAAgB,CAC7BC,OAAQC,EAAAA,EAAAA,OACRC,QAAS,SAACC,GAAD,MAAkB,CACzBC,QAAS,2BAAF,OAA6BD,EAAYE,MAAzC,+BAETC,MAAO,SAACA,EAAOH,GAAR,MAAyB,CAC9BC,QAAS,oCAAF,OAAsCD,EAAYE,MAAlD,iCAAgFC,OAIrFC,GAAOR,EAAAA,EAAAA,GAAgB,CAC3BC,OAAQC,EAAAA,EAAAA,KACRK,MAAO,SAACA,EAAOE,GAAR,MAA2B,CAChCJ,QAAS,2CAAF,OAA6CI,EAA7C,iCAAmFF,KAE5FG,kBAAkB,IAGdC,GAAaX,EAAAA,EAAAA,GAAgB,CACjCC,OAAQC,EAAAA,EAAAA,WACRK,MAAO,SAACA,GAAD,MAAY,CACjBF,QAAS,6DAAF,OAA+DE,OAqE1E,SACER,OAAAA,EACAa,QAnEaZ,EAAAA,EAAAA,GAAgB,CAC7BC,OAAQC,EAAAA,EAAAA,OACRC,QAAS,SAACM,EAAeL,GAAhB,MAAiC,CACxCC,QAAS,2BAAF,OAA6BD,EAAYE,MAAzC,gCAETC,MAAO,SAACA,EAAOE,EAAeL,GAAvB,MAAwC,CAC7CC,QAAS,oCAAF,OAAsCD,EAAYE,MAAlD,iCAAgFC,OA8DzFC,KAAAA,EACAG,WAAAA,EACAE,QA5DoBb,EAAAA,EAAAA,GAAgB,CACpCC,OAAQC,EAAAA,EAAAA,OACRC,QAAS,SAACM,EAAeK,GAAhB,MAAsC,CAC7CT,QAAS,2BAAF,OAA6BS,EAA7B,+BAETP,MAAO,SAACA,EAAOE,EAAeK,GAAvB,MAA6C,CAClDT,QAAS,oCAAF,OAAsCS,EAAtC,iCAA+EP,OAuDxFQ,gBAnDqBf,EAAAA,EAAAA,GAAgB,CACrCC,OAAQC,EAAAA,EAAAA,eACRK,MAAO,SAACA,GAAD,MAAY,CACjBF,QAAS,uCAAF,OAAyCE,OAiDlDS,WA7CgBhB,EAAAA,EAAAA,GAAgB,CAChCC,OAAQC,EAAAA,EAAAA,UACRK,MAAO,SAACA,GAAD,MAAY,CACjBF,QAAS,kCAAF,OAAoCE,OA2C7CU,kBAvCuBjB,EAAAA,EAAAA,GAAgB,CACvCC,OAAQC,EAAAA,EAAAA,iBACRC,QAAS,SAACM,EAAeK,GAAhB,MAAsC,CAC7CT,QAAS,2BAAF,OAA6BS,EAA7B,gBAAqDL,EAAgB,YAAc,cAAnF,mBAETF,MAAO,SAACA,EAAOE,EAAeK,GAAvB,MAA6C,CAClDT,QAAS,sCAAF,OAAwCS,EAAxC,iCAAiFP,OAkC1FW,uBA9B4BlB,EAAAA,EAAAA,GAAgB,CAC5CC,OAAQC,EAAAA,EAAAA,sBACRK,MAAO,SAACA,GAAD,MAAY,CACjBF,QAAS,uDAAF,OAAyDE,OA4BlEY,oBAxByBnB,EAAAA,EAAAA,GAAgB,CACzCC,OAAQC,EAAAA,EAAAA,mBACRK,MAAO,SAACE,EAAeF,GAAhB,MAA2B,CAChCF,QAAS,kEAAF,OAAoEI,EAApE,iCAA0GF,OAsBnHa,uBAlB4BpB,EAAAA,EAAAA,GAAgB,CAC5CC,OAAQC,EAAAA,EAAAA,sBACRK,MAAO,SAACA,GAAD,MAAY,CACjBF,QAAS,kEAAF,OAAoEE,S,siBCnD1Dc,EAAAA,WAGnB,WACEC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GACA,kCACAC,KAAKC,OAAS,CACZf,GAAAA,EACAC,SAAAA,EACAC,SAAAA,EACAC,MAAAA,EACAC,MAAAA,EACAC,SAAAA,EACAC,SAAAA,EACAC,cAAAA,EACAC,cAAAA,EACAC,aAAAA,EACAC,QAAAA,EACAC,cAAAA,EACAC,eAAAA,EACAC,cAAAA,G,0BAIJ,WACE,OAAOC,KAAKC,OAAOf,K,oBAGrB,WACE,OAAOc,KAAKC,OAAOd,W,gBAGrB,WACE,OAAOa,KAAKC,OAAOd,W,oBAGrB,WACE,OAAOa,KAAKC,OAAOb,W,uBAGrB,WACE,OAAOY,KAAKC,OAAOb,W,iBAGrB,WACE,OAAOY,KAAKC,OAAOZ,Q,iBAGrB,WACE,OAAOW,KAAKC,OAAOX,Q,oBAGrB,WACE,OAAOU,KAAKC,OAAOV,W,oBAGrB,WACE,OAAOS,KAAKC,OAAOT,W,yBAGrB,WACE,OAAOQ,KAAKC,OAAOR,gB,yBAGrB,WACE,OAAOO,KAAKC,OAAOP,gB,wBAGrB,WACE,OAAOM,KAAKC,OAAON,e,mBAGrB,WACE,OAAOK,KAAKC,OAAOL,U,yBAGrB,WACE,OAAOI,KAAKC,OAAOJ,gB,0BAGrB,WACE,OAAOG,KAAKC,OAAOH,iB,yBAGrB,WACE,OAAOE,KAAKC,OAAOF,gB,uBAGrB,WACE,MAeIC,KAAKC,OAdPf,EADF,EACEA,GACAC,EAFF,EAEEA,SACAC,EAHF,EAGEA,SACAC,EAJF,EAIEA,MACAC,EALF,EAKEA,MACAC,EANF,EAMEA,SACAC,EAPF,EAOEA,SACAC,EARF,EAQEA,cACAC,EATF,EASEA,cACAC,EAVF,EAUEA,aACAC,EAXF,EAWEA,QACAC,EAZF,EAYEA,cACAC,EAbF,EAaEA,eACAC,EAdF,EAcEA,cAIF,OAAO,IAAIG,EAAQC,EAAAA,IAAc,CAC/BjB,GAAAA,EACAC,SAAAA,EACAC,SAAAA,EACAC,MAAAA,EACAC,MAAAA,EACAC,SAAAA,EACAC,SAAAA,EACAC,cAAAA,EACAC,cAAAA,EACAC,aAAAA,EACAC,QAAAA,EACAC,cAAAA,EACAC,eAAAA,EACAC,cAAAA,O,oBAsCJ,WACE,MAeIC,KAAKC,OAdPf,EADF,EACEA,GACAC,EAFF,EAEEA,SACAC,EAHF,EAGEA,SACAC,EAJF,EAIEA,MACAC,EALF,EAKEA,MACAC,EANF,EAMEA,SACAC,EAPF,EAOEA,SACAC,EARF,EAQEA,cACAC,EATF,EASEA,cACAC,EAVF,EAUEA,aACAC,EAXF,EAWEA,QACAC,EAZF,EAYEA,cACAC,EAbF,EAaEA,eACAC,EAdF,EAcEA,cAGF,MAAO,CACLb,GAAAA,EACAC,SAAAA,EACAiB,UAAWhB,EACXC,MAAAA,EACAC,MAAOA,EAAMe,UACbC,UAAWf,EACXgB,cAAef,EACfgB,eAAgBf,EAChBgB,eAAgBf,EAChBgB,cAAef,EACfC,QAAAA,EACAe,gBAAiBd,EACjBe,iBAAkBd,EAClBe,eAAgBd,M,qBAlEpB,SACEb,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEA,OAAO,IAAId,EACTC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,K,sBAwCJ,SAAgBe,GACd,IACE5B,EAcE4B,EAdF5B,GACAC,EAaE2B,EAbF3B,SACWC,EAYT0B,EAZFV,UACAf,EAWEyB,EAXFzB,MACAC,EAUEwB,EAVFxB,MACWC,EASTuB,EATFR,UACed,EAQbsB,EARFP,cACgBd,EAOdqB,EAPFN,eACgBd,EAMdoB,EANFL,eACed,EAKbmB,EALFJ,cACAd,EAIEkB,EAJFlB,QACiBC,EAGfiB,EAHFH,gBACkBb,EAEhBgB,EAFFF,iBACgBb,EACde,EADFD,eAGF,OAAO5B,EAAatB,OAAOuB,EACzBC,EACAC,EACAC,EACAc,EAAAA,IAAcb,GACdC,MAAAA,GAAAA,EACAC,MAAAA,GAAAA,EACAC,MAAAA,GAAAA,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,K,qBAIJ,WAEE,OAAO,IAAIG,M,EArPMjB,GA2PfiB,EAAAA,WAGJ,aAAmD,IAAvCY,EAAuC,uDAAjBX,EAAAA,MAAiB,iCACjDH,KAAKc,MAAQA,E,4BAGf,SAAGA,GACD,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,KAAMD,M,sBAG1C,SAASA,GACP,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,WAAYD,M,sBAGhD,SAASA,GACP,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,WAAYD,M,mBAGhD,SAAMA,GACJ,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,QAASD,M,mBAG7C,SAAMA,GACJ,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,QAASD,M,sBAG7C,SAASA,GACP,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,WAAYD,M,sBAGhD,SAASA,GACP,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,WAAYD,M,2BAGhD,SAAcA,GACZ,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,gBAAiBD,M,2BAGrD,SAAcA,GACZ,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,gBAAiBD,M,0BAGrD,SAAaA,GACX,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,eAAgBD,M,qBAGpD,SAAQA,GACN,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,UAAWD,M,2BAG/C,SAAcA,GACZ,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,gBAAiBD,M,4BAGrD,SAAeA,GACb,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,iBAAkBD,M,2BAGtD,SAAcA,GACZ,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,gBAAiBD,M,mBAGrD,WACE,MAeId,KAAKc,MAAME,WAdb9B,EADF,EACEA,GACAC,EAFF,EAEEA,SACAC,EAHF,EAGEA,SACAC,EAJF,EAIEA,MACAC,EALF,EAKEA,MACAC,EANF,EAMEA,SACAC,EAPF,EAOEA,SACAC,EARF,EAQEA,cACAC,EATF,EASEA,cACAC,EAVF,EAUEA,aACAC,EAXF,EAWEA,QACAC,EAZF,EAYEA,cACAC,EAbF,EAaEA,eACAC,EAdF,EAcEA,cAGF,OAAO,IAAId,EACTC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,O,EA/FAG,I,ykBCtQN,IAoBqBe,EAAAA,WAGnB,WACE/B,EACAhB,EACAgD,EACAC,EACAC,GACA,kCACApB,KAAKC,OAAS,CACZf,GAAAA,EACAhB,MAAAA,EACAgD,YAAAA,EACAC,aAAAA,EACAC,OAAAA,G,0BAIJ,WACE,OAAOpB,KAAKC,OAAOf,K,iBAGrB,WACE,OAAOc,KAAKC,OAAO/B,Q,uBAGrB,WACE,OAAO8B,KAAKC,OAAOiB,c,wBAGrB,WACE,OAAOlB,KAAKC,OAAOkB,e,kBAGrB,WACE,OAAOnB,KAAKC,OAAOmB,S,uBAGrB,WACE,MAMIpB,KAAKC,OALPf,EADF,EACEA,GACAhB,EAFF,EAEEA,MACAgD,EAHF,EAGEA,YACAC,EAJF,EAIEA,aACAC,EALF,EAKEA,OAIF,OAAO,IAAIlB,EAAQC,EAAAA,IAAc,CAC/BjB,GAAAA,EACAhB,MAAAA,EACAgD,YAAAA,EACAC,aAAAA,EACAC,OAAAA,O,oBAIJ,WACE,MAMIpB,KAAKC,OALPf,EADF,EACEA,GACAhB,EAFF,EAEEA,MACAgD,EAHF,EAGEA,YAHF,IAIEC,aAAAA,OAJF,MAIiBhB,EAAAA,OAJjB,EAQMkB,EA7EW,SAACD,GACpB,IAAME,GAAcC,EAAAA,EAAAA,IAAsBH,EAAuBI,MAAM,GAEvE,OAAIF,GAAmD,mBAA7BA,EAAYG,aAC7BH,EAAYG,aAAaL,GAG3BA,EAsEmBK,CARxB,EAKEL,QAKF,MAAO,CACLlC,GAAAA,EACAhB,MAAAA,EACAgD,YAAAA,EACAQ,cAAeP,EAAaQ,OAC5BP,OAAQC,M,uBAIZ,SAAgBP,GACd,IACE5B,EAKE4B,EALF5B,GACAhB,EAIE4C,EAJF5C,MACAgD,EAGEJ,EAHFI,YACeC,EAEbL,EAFFY,cAIIL,EA3Ga,SAACD,GACtB,IAAME,GAAcC,EAAAA,EAAAA,IAAsBH,EAAuBI,MAAM,GAEvE,OAAIF,GAAqD,mBAA/BA,EAAYM,eAC5BN,EAAsDM,eAAeR,GAGxEA,EAoGmBQ,CAFpBd,EADFM,QAKF,OAAO,IAAIH,EACT/B,EACAhB,EACAgD,EACAf,EAAAA,KAAegB,GACfE,K,qBAIJ,WAEE,OAAO,IAAInB,M,EApGMe,GA0Gff,EAAAA,WAGJ,aAA2D,IAA/CY,EAA+C,uDAAjBX,EAAAA,MAAiB,iCACzDH,KAAKc,MAAQA,E,4BAGf,SAAGA,GACD,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,KAAMD,M,mBAG1C,SAAMA,GACJ,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,QAASD,M,yBAG7C,SAAYA,GACV,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,cAAeD,M,0BAGnD,SAAaA,GACX,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,eAAgBD,M,oBAGpD,SAAOA,GACL,OAAO,IAAIZ,EAAQF,KAAKc,MAAMC,IAAI,SAAUD,M,mBAG9C,WACE,MAMId,KAAKc,MAAME,WALb9B,EADF,EACEA,GACAhB,EAFF,EAEEA,MACAgD,EAHF,EAGEA,YACAC,EAJF,EAIEA,aACAC,EALF,EAKEA,OAGF,OAAO,IAAIH,EACT/B,EACAhB,EACAgD,EACAC,EACAC,O,EAzCAlB,G,gGCxDOpC,GAAwB+D,EAAAA,EAAAA,IACnC,kBACA,kBAAMC,IAAAA,cAAkC,CACtCnE,OAAQ,CAAEoE,aAAa,GACvBtD,OAAQ,CAAEsD,aAAa,GACvB3D,KAAM,CAAE2D,aAAa,GACrBxD,WAAY,CAAEwD,aAAa,GAC3BjD,sBAAuB,CAAEiD,aAAa,GACtChD,mBAAoB,CAAEgD,aAAa,GACnC/C,sBAAuB,CAAE+C,aAAa,GACtClD,iBAAkB,CAAEkD,aAAa,GACjCpD,eAAgB,CAAEoD,aAAa,GAC/BnD,UAAW,CAAEmD,aAAa,GAC1BvD,OAAQ,CAAEuD,aAAa,SAeQC,EAAAA,EAAAA,IACjC,kBACA,kBAAMF,IAAAA,YAA4C,CAChDG,YAAa,CAACnE,GAEdoE,gBAHgD,WAI9C,MAAO,CACLC,eAAgB,OAIpBxE,OATgD,SASzCK,GACL,IAAMoE,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,yBAAAA,SAA4CF,KAC7DG,GAAUC,EAAAA,EAAAA,IAAM,OAAQJ,EAAKpE,GAAayE,MAAK,SAACC,GAAD,OAAaA,EAAS,CACzEC,QAAS1B,EAAsB2B,SAASF,EAAOC,UAC7C,QAGJ,OAFA7E,EAAsBH,OAAO4E,QAAQA,GAE9BA,GAGTnE,KAnBgD,SAmB3CyE,GACH,IAAMT,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,yBAAAA,KAAwCQ,mBAAmBD,IAAYT,KACxFG,GAAUC,EAAAA,EAAAA,IAAM,MAAOJ,GAAKK,MAAK,SAACC,GAAD,OAAaA,EAAS,CAC3DC,QAAS1B,EAAsB2B,SAASF,EAAOC,UAC7C,QAIJ,OAFA7E,EAAsBM,KAAKmE,QAAQA,GAE5BA,GAGThE,WA9BgD,WA+B9C,IAAM6D,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,yBAAAA,aAAgDF,KACjEG,GAAUC,EAAAA,EAAAA,IAAM,MAAOJ,GAAKK,MAAK,SAACC,GAAD,OAAaA,EAAS,CAC3DC,QAASD,EAAOC,QAAU1B,EAAsB2B,SAASF,EAAOC,SAAW,KAC3EI,QAAS,CAAEC,cAAeN,EAAOK,QAAQE,iBACvC,QAIJ,OAFAnF,EAAsBS,WAAWgE,QAAQA,GAElCA,GAGT/D,OA1CgD,SA0CzCqE,EAA0EK,GAC/E,IAAMd,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,yBAAAA,OAA0CO,GAAWT,KACtEG,GAAUC,EAAAA,EAAAA,IAAM,MAAOJ,EAAKc,GAAST,MAAK,SAACC,GAAD,OAAaA,EAAS,CACpEC,QAAS1B,EAAsB2B,SAASF,EAAOC,UAC7C,QAIJ,OAFA7E,EAAsBU,OAAO+D,QAAQA,GAE9BA,GAlDuC,gBAqDzCM,GACL,IAAMT,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,yBAAAA,OAA0CO,GAAWT,KACtEG,GAAUC,EAAAA,EAAAA,IAAM,SAAUJ,GAGhC,OAFAtE,EAAqB,OAAQyE,QAAQA,GAE9BA,GAGT5D,eA7DgD,SA6DjCuE,GACb,IAAMd,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,yBAAAA,iBAAoDF,KACrEG,GAAUC,EAAAA,EAAAA,IAAM,OAAQJ,EAAKc,GAGnC,OAFApF,EAAsBa,eAAe4D,QAAQA,GAEtCA,GAGT3D,UArEgD,SAqEtCsE,GACR,IAAMd,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,yBAAAA,YAA+CF,KAChEG,GAAUC,EAAAA,EAAAA,IAAM,OAAQJ,EAAKc,GAGnC,OAFApF,EAAsBc,UAAU2D,QAAQA,GAEjCA,GAGT1D,iBA7EgD,SA6E/BgE,GACf,IAAMT,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,yBAAAA,sBAAyDF,KAC1EG,GAAUC,EAAAA,EAAAA,IAAM,OAAQJ,EAAK,CAAEe,eAAgBN,IAGrD,OAFA/E,EAAsBe,iBAAiB0D,QAAQA,GAExCA,GAGTzD,sBArFgD,YAqFwC,IAAhEsE,EAAgE,EAAhEA,KAAMC,EAA0D,EAA1DA,QAASC,EAAiD,EAAjDA,MAC/BlB,GAAMmB,EAAAA,EAAAA,GAAcjB,EAAAA,EAAAA,yBAAAA,oBAAuDF,IAAKgB,EAAMC,EAASC,GAC/Ff,GAAUC,EAAAA,EAAAA,IAAM,OAAOH,EAAAA,EAAAA,IAAWD,IACrCK,MAAK,SAACe,GAAD,MAA0C,CAC9CT,QAAS,CACPU,cAAeD,EAAST,QAAQI,gBAElCO,KAAMvD,EAAAA,KAAeqD,EAASG,SAASC,KAAI,SAACjB,GAAD,OAAa1B,EAAsB2B,SAASD,OACvFkB,WAAY,CACVT,KAAMI,EAASJ,KACfC,QAASG,EAASM,SAClBR,MAAOE,EAASF,MAChBS,MAAOP,EAASO,MAChBC,MAAOR,EAASQ,WAMtB,OAFAlG,EAAsBgB,sBAAsByD,QAAQA,GAE7CA,GAGTxD,mBA3GgD,SA2G7BV,EA3G6B,GA2GiD,IAA7D+E,EAA6D,EAA7DA,KAAMC,EAAuD,EAAvDA,QAASC,EAA8C,EAA9CA,MAC3ClB,GAAMmB,EAAAA,EAAAA,GAAcjB,EAAAA,EAAAA,yBAAAA,mBAAsDjE,GAAe+D,IAAKgB,EAAMC,EAASC,GAE7Gf,GAAUC,EAAAA,EAAAA,IAAM,OAAOH,EAAAA,EAAAA,IAAWD,IACrCK,MAAK,SAACe,GAAD,MAAuC,CAC3CE,KAAMvD,EAAAA,KAAeqD,EAASS,MAAML,KAAI,SAACM,GAAD,OAAUjF,EAAAA,EAAAA,SAAsBiF,OACxEL,WAAY,CACVT,KAAMI,EAASJ,KACfC,QAASG,EAASM,SAClBR,MAAOE,EAASF,MAChBS,MAAOP,EAASO,MAChBC,MAAOR,EAASQ,WAMtB,OAFAlG,EAAsBiB,mBAAmBwD,QAAQA,GAE1CA,GAGTvD,sBA/HgD,WAgI9C,IAAMoD,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,yBAAAA,wBAA2DF,KAG5EG,EAAU,IAAIrC,EAAAA,GAAQ,MAAOkC,GAChC+B,QACA1B,MAAK,SAACe,GAAD,OAAcA,EAASY,UAC5B3B,MAAK,SAACC,GACL,OAAOA,EAAOC,WAKlB,OAFA7E,EAAsBkB,sBAAsBuD,QAAQA,GAE7CA,S,2ECzQAhB,EAAuB,SAACC,GAA8C,IAAhC6C,EAAgC,wDAC3EC,EAAeC,EAAAA,YAAAA,QAAoB,4BAA8B,GACjEjD,EAAcgD,EAAaE,MAAK,SAACC,GAAD,OAAaA,EAAQC,OAASlD,KAEpE,IAAKF,GAAe+C,EAClB,MAAM,IAAIM,MAAJ,4CAA+CnD,EAA/C,iBAGR,OAAOF,GAGIsD,EAA+B,WAC1C,IAAMC,EAAuBN,EAAAA,YAAAA,QAAoB,yDAEjD,OAAOM,MAAAA,OAAP,EAAOA,EAAuB,IAGnBC,EAAoC,WAC/C,IAAMC,EAAcR,EAAAA,YAAAA,QAAoB,6BAExC,OAAOQ,MAAAA,OAAP,EAAOA,EAAc","sources":["webpack://graylog-web-interface/./src/domainActions/authentication/AuthenticationDomain.ts","webpack://graylog-web-interface/./src/logic/users/UserOverview.ts","webpack://graylog-web-interface/./src/logic/authentication/AuthenticationBackend.ts","webpack://graylog-web-interface/./src/stores/authentication/AuthenticationStore.ts","webpack://graylog-web-interface/./src/util/AuthenticationService.ts"],"sourcesContent":["/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { AuthenticationActions } from 'stores/authentication/AuthenticationStore';\n\nimport notifyingAction from '../notifyingAction';\n\nconst create = notifyingAction({\n action: AuthenticationActions.create,\n success: (authBackend) => ({\n message: `Authentication service \"${authBackend.title} was created successfully`,\n }),\n error: (error, authBackend) => ({\n message: `Creating authentication service \"${authBackend.title}\" failed with status: ${error}`,\n }),\n});\n\nconst load = notifyingAction({\n action: AuthenticationActions.load,\n error: (error, authBackendId) => ({\n message: `Loading authentication service with id \"${authBackendId}\" failed with status: ${error}`,\n }),\n notFoundRedirect: true,\n});\n\nconst loadActive = notifyingAction({\n action: AuthenticationActions.loadActive,\n error: (error) => ({\n message: `Loading active authentication service failed with status: ${error}`,\n }),\n});\n\nconst update = notifyingAction({\n action: AuthenticationActions.update,\n success: (authBackendId, authBackend) => ({\n message: `Authentication service \"${authBackend.title}\" was updated successfully`,\n }),\n error: (error, authBackendId, authBackend) => ({\n message: `Updating authentication service \"${authBackend.title}\" failed with status: ${error}`,\n }),\n});\n\nconst deleteBackend = notifyingAction({\n action: AuthenticationActions.delete,\n success: (authBackendId, authBackendTitle) => ({\n message: `Authentication service \"${authBackendTitle} was deleted successfully`,\n }),\n error: (error, authBackendId, authBackendTitle) => ({\n message: `Deleting authentication service \"${authBackendTitle}\" failed with status: ${error}`,\n }),\n});\n\nconst testConnection = notifyingAction({\n action: AuthenticationActions.testConnection,\n error: (error) => ({\n message: `Connection test failed with status: ${error}`,\n }),\n});\n\nconst testLogin = notifyingAction({\n action: AuthenticationActions.testLogin,\n error: (error) => ({\n message: `Login test failed with status: ${error}`,\n }),\n});\n\nconst setActiveBackend = notifyingAction({\n action: AuthenticationActions.setActiveBackend,\n success: (authBackendId, authBackendTitle) => ({\n message: `Authentication service \"${authBackendTitle} was ${authBackendId ? 'activated' : 'deactivated'} successfully`,\n }),\n error: (error, authBackendId, authBackendTitle) => ({\n message: `Activating authentication service \"${authBackendTitle}\" failed with status: ${error}`,\n }),\n});\n\nconst loadBackendsPaginated = notifyingAction({\n action: AuthenticationActions.loadBackendsPaginated,\n error: (error) => ({\n message: `Loading authentication services failed with status: ${error}`,\n }),\n});\n\nconst loadUsersPaginated = notifyingAction({\n action: AuthenticationActions.loadUsersPaginated,\n error: (authBackendId, error) => ({\n message: `Loading synchronized users for authentication service with id \"${authBackendId}\" failed with status: ${error}`,\n }),\n});\n\nconst loadActiveBackendType = notifyingAction({\n action: AuthenticationActions.loadActiveBackendType,\n error: (error) => ({\n message: `Loading active authentication service type failed with status: ${error}`,\n }),\n});\n\nexport default {\n create,\n update,\n load,\n loadActive,\n delete: deleteBackend,\n testConnection,\n testLogin,\n setActiveBackend,\n loadBackendsPaginated,\n loadUsersPaginated,\n loadActiveBackendType,\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport type { $PropertyType } from 'utility-types';\nimport * as Immutable from 'immutable';\n\nexport type AccountStatus = 'enabled' | 'disabled' | 'deleted';\n\nexport type UserOverviewJSON = {\n id: string;\n username: string;\n full_name: string;\n email: string;\n external_user: boolean | null | undefined;\n roles: Array;\n read_only: boolean | null | undefined;\n session_active: boolean | null | undefined;\n client_address: string;\n last_activity: string | null | undefined;\n enabled: boolean;\n auth_service_id: string;\n auth_service_uid: string;\n account_status: AccountStatus;\n};\n\ntype InternalState = {\n id: string;\n username: string;\n fullName: string;\n email: string;\n roles: Immutable.Set;\n readOnly: boolean;\n external: boolean;\n sessionActive: boolean;\n clientAddress: string;\n lastActivity: string | null | undefined;\n enabled: boolean;\n authServiceId: string;\n authServiceUid: string;\n accountStatus: AccountStatus;\n};\n\nexport default class UserOverview {\n _value: InternalState;\n\n constructor(\n id: $PropertyType,\n username: $PropertyType,\n fullName: $PropertyType,\n email: $PropertyType,\n roles: $PropertyType,\n readOnly: $PropertyType,\n external: $PropertyType,\n sessionActive: $PropertyType,\n clientAddress: $PropertyType,\n lastActivity: $PropertyType,\n enabled: $PropertyType,\n authServiceId: $PropertyType,\n authServiceUid: $PropertyType,\n accountStatus: $PropertyType,\n ) {\n this._value = {\n id,\n username,\n fullName,\n email,\n roles,\n readOnly,\n external,\n sessionActive,\n clientAddress,\n lastActivity,\n enabled,\n authServiceId,\n authServiceUid,\n accountStatus,\n };\n }\n\n get id() {\n return this._value.id;\n }\n\n get username() {\n return this._value.username;\n }\n\n get name() {\n return this._value.username;\n }\n\n get fullName() {\n return this._value.fullName;\n }\n\n get description() {\n return this._value.fullName;\n }\n\n get email() {\n return this._value.email;\n }\n\n get roles() {\n return this._value.roles;\n }\n\n get readOnly() {\n return this._value.readOnly;\n }\n\n get external() {\n return this._value.external;\n }\n\n get sessionActive() {\n return this._value.sessionActive;\n }\n\n get clientAddress() {\n return this._value.clientAddress;\n }\n\n get lastActivity() {\n return this._value.lastActivity;\n }\n\n get enabled() {\n return this._value.enabled;\n }\n\n get authServiceId() {\n return this._value.authServiceId;\n }\n\n get authServiceUid() {\n return this._value.authServiceUid;\n }\n\n get accountStatus() {\n return this._value.accountStatus;\n }\n\n toBuilder() {\n const {\n id,\n username,\n fullName,\n email,\n roles,\n readOnly,\n external,\n sessionActive,\n clientAddress,\n lastActivity,\n enabled,\n authServiceId,\n authServiceUid,\n accountStatus,\n } = this._value;\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return new Builder(Immutable.Map({\n id,\n username,\n fullName,\n email,\n roles,\n readOnly,\n external,\n sessionActive,\n clientAddress,\n lastActivity,\n enabled,\n authServiceId,\n authServiceUid,\n accountStatus,\n }));\n }\n\n static create(\n id: $PropertyType,\n username: $PropertyType,\n fullName: $PropertyType,\n email: $PropertyType,\n roles: $PropertyType,\n readOnly: $PropertyType,\n external: $PropertyType,\n sessionActive: $PropertyType,\n clientAddress: $PropertyType,\n lastActivity: $PropertyType,\n enabled: $PropertyType,\n authServiceId: $PropertyType,\n authServiceUid: $PropertyType,\n accountStatus: $PropertyType,\n ) {\n return new UserOverview(\n id,\n username,\n fullName,\n email,\n roles,\n readOnly,\n external,\n sessionActive,\n clientAddress,\n lastActivity,\n enabled,\n authServiceId,\n authServiceUid,\n accountStatus,\n );\n }\n\n toJSON(): UserOverviewJSON {\n const {\n id,\n username,\n fullName,\n email,\n roles,\n readOnly,\n external,\n sessionActive,\n clientAddress,\n lastActivity,\n enabled,\n authServiceId,\n authServiceUid,\n accountStatus,\n } = this._value;\n\n return {\n id,\n username,\n full_name: fullName,\n email,\n roles: roles.toArray(),\n read_only: readOnly,\n external_user: external,\n session_active: sessionActive,\n client_address: clientAddress,\n last_activity: lastActivity,\n enabled,\n auth_service_id: authServiceId,\n auth_service_uid: authServiceUid,\n account_status: accountStatus,\n };\n }\n\n static fromJSON(value: UserOverviewJSON) {\n const {\n id,\n username,\n full_name: fullName,\n email,\n roles,\n read_only: readOnly,\n external_user: external,\n session_active: sessionActive,\n client_address: clientAddress,\n last_activity: lastActivity,\n enabled,\n auth_service_id: authServiceId,\n auth_service_uid: authServiceUid,\n account_status: accountStatus,\n } = value;\n\n return UserOverview.create(id,\n username,\n fullName,\n email,\n Immutable.Set(roles),\n readOnly ?? false,\n external ?? false,\n sessionActive ?? false,\n clientAddress,\n lastActivity,\n enabled,\n authServiceId,\n authServiceUid,\n accountStatus);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n static builder(): Builder {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return new Builder();\n }\n}\n\ntype BuilderState = Immutable.Map;\n\nclass Builder {\n value: BuilderState;\n\n constructor(value: BuilderState = Immutable.Map()) {\n this.value = value;\n }\n\n id(value: $PropertyType) {\n return new Builder(this.value.set('id', value));\n }\n\n username(value: $PropertyType) {\n return new Builder(this.value.set('username', value));\n }\n\n fullName(value: $PropertyType) {\n return new Builder(this.value.set('fullName', value));\n }\n\n email(value: $PropertyType) {\n return new Builder(this.value.set('email', value));\n }\n\n roles(value: $PropertyType) {\n return new Builder(this.value.set('roles', value));\n }\n\n readOnly(value: $PropertyType) {\n return new Builder(this.value.set('readOnly', value));\n }\n\n external(value: $PropertyType) {\n return new Builder(this.value.set('external', value));\n }\n\n sessionActive(value: $PropertyType) {\n return new Builder(this.value.set('sessionActive', value));\n }\n\n clientAddress(value: $PropertyType) {\n return new Builder(this.value.set('clientAddress', value));\n }\n\n lastActivity(value: $PropertyType) {\n return new Builder(this.value.set('lastActivity', value));\n }\n\n enabled(value: $PropertyType) {\n return new Builder(this.value.set('enabled', value));\n }\n\n authServiceId(value: $PropertyType) {\n return new Builder(this.value.set('authServiceId', value));\n }\n\n authServiceUid(value: $PropertyType) {\n return new Builder(this.value.set('authServiceUid', value));\n }\n\n accountStatus(value: $PropertyType) {\n return new Builder(this.value.set('accountStatus', value));\n }\n\n build() {\n const {\n id,\n username,\n fullName,\n email,\n roles,\n readOnly,\n external,\n sessionActive,\n clientAddress,\n lastActivity,\n enabled,\n authServiceId,\n authServiceUid,\n accountStatus,\n } = this.value.toObject();\n\n return new UserOverview(\n id,\n username,\n fullName,\n email,\n roles,\n readOnly,\n external,\n sessionActive,\n clientAddress,\n lastActivity,\n enabled,\n authServiceId,\n authServiceUid,\n accountStatus,\n );\n }\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as Immutable from 'immutable';\nimport type { $PropertyType } from 'utility-types';\n\nimport type { DirectoryServiceAuthenticationService } from 'components/authentication/types';\nimport { getAuthServicePlugin } from 'util/AuthenticationService';\nimport type { DirectoryServiceBackendConfig } from 'logic/authentication/directoryServices/types';\nimport type { OktaBackendConfig } from 'logic/authentication/okta/types';\n\ntype InternalState = {\n id: string,\n title: string,\n description: string,\n defaultRoles: Immutable.List,\n config: DirectoryServiceBackendConfig | OktaBackendConfig,\n};\n\ntype TypedConfig = {\n type: string,\n};\n\nexport type AuthenticationBackendJSON = {\n id: string,\n title: string,\n description: string,\n default_roles: Array,\n config: DirectoryServiceBackendConfig | OktaBackendConfig,\n};\n\nconst configFromJson = (config: $PropertyType) => {\n const authService = getAuthServicePlugin((config as TypedConfig).type, true);\n\n if (authService && typeof authService.configFromJson === 'function') {\n return (authService as DirectoryServiceAuthenticationService).configFromJson(config);\n }\n\n return config;\n};\n\nconst configToJson = (config: $PropertyType) => {\n const authService = getAuthServicePlugin((config as TypedConfig).type, true);\n\n if (authService && typeof authService.configToJson === 'function') {\n return authService.configToJson(config);\n }\n\n return config;\n};\n\nexport default class AuthenticationBackend {\n _value: InternalState;\n\n constructor(\n id: $PropertyType,\n title: $PropertyType,\n description: $PropertyType,\n defaultRoles: $PropertyType,\n config: $PropertyType,\n ) {\n this._value = {\n id,\n title,\n description,\n defaultRoles,\n config,\n };\n }\n\n get id(): $PropertyType {\n return this._value.id;\n }\n\n get title(): $PropertyType {\n return this._value.title;\n }\n\n get description(): $PropertyType {\n return this._value.description;\n }\n\n get defaultRoles(): $PropertyType {\n return this._value.defaultRoles;\n }\n\n get config(): $PropertyType {\n return this._value.config;\n }\n\n toBuilder(): Builder {\n const {\n id,\n title,\n description,\n defaultRoles,\n config,\n } = this._value;\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return new Builder(Immutable.Map({\n id,\n title,\n description,\n defaultRoles,\n config,\n }));\n }\n\n toJSON() {\n const {\n id,\n title,\n description,\n defaultRoles = Immutable.List(),\n config,\n } = this._value;\n\n const formattedConfig = configToJson(config);\n\n return {\n id,\n title,\n description,\n default_roles: defaultRoles.toJS(),\n config: formattedConfig,\n };\n }\n\n static fromJSON(value: AuthenticationBackendJSON) {\n const {\n id,\n title,\n description,\n default_roles: defaultRoles,\n config,\n } = value;\n\n const formattedConfig = configFromJson(config);\n\n return new AuthenticationBackend(\n id,\n title,\n description,\n Immutable.List(defaultRoles),\n formattedConfig,\n );\n }\n\n static builder(): Builder {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return new Builder();\n }\n}\n\ntype InternalBuilderState = Immutable.Map;\n\nclass Builder {\n value: InternalBuilderState;\n\n constructor(value: InternalBuilderState = Immutable.Map()) {\n this.value = value;\n }\n\n id(value: $PropertyType): Builder {\n return new Builder(this.value.set('id', value));\n }\n\n title(value: $PropertyType): Builder {\n return new Builder(this.value.set('title', value));\n }\n\n description(value: $PropertyType): Builder {\n return new Builder(this.value.set('description', value));\n }\n\n defaultRoles(value: $PropertyType): Builder {\n return new Builder(this.value.set('defaultRoles', value));\n }\n\n config(value: $PropertyType): Builder {\n return new Builder(this.value.set('config', value));\n }\n\n build(): AuthenticationBackend {\n const {\n id,\n title,\n description,\n defaultRoles,\n config,\n } = this.value.toObject();\n\n return new AuthenticationBackend(\n id,\n title,\n description,\n defaultRoles,\n config,\n );\n }\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport * as Immutable from 'immutable';\nimport type { $PropertyType } from 'utility-types/dist/utility-types';\n\nimport AuthenticationBackend from 'logic/authentication/AuthenticationBackend';\nimport { qualifyUrl } from 'util/URLUtils';\nimport fetch, { Builder } from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\nimport PaginationURL from 'util/PaginationURL';\nimport type { PaginatedUsers } from 'stores/users/UsersStore';\nimport type { PaginatedResponseType, Pagination, PaginatedList } from 'stores/PaginationTypes';\nimport type { AuthenticationBackendJSON } from 'logic/authentication/AuthenticationBackend';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport type { UserOverviewJSON } from 'logic/users/UserOverview';\nimport UserOverview from 'logic/users/UserOverview';\n\nexport type AuthenticationBackendCreate = {\n title: $PropertyType,\n description: $PropertyType,\n config: {\n type: string,\n },\n};\n\nexport type AuthenticationBackendUpdate = {\n id: $PropertyType,\n title: $PropertyType,\n description: $PropertyType,\n config: {\n type: string,\n },\n};\n\nexport type PaginatedBackends = PaginatedList & {\n context: {\n activeBackend: AuthenticationBackend | undefined | null,\n },\n};\n\nexport type ConnectionTestPayload = {\n backend_configuration: AuthenticationBackendCreate,\n backend_id: string | undefined | null,\n};\nexport type ConnectionTestResult = {\n success: boolean,\n message: string,\n errors: Array,\n};\nexport type LoginTestPayload = {\n backend_id: string | undefined | null,\n backend_configuration: AuthenticationBackendCreate,\n user_login: {\n username: string,\n password: string,\n },\n};\n\nexport type LoginTestResult = {\n success: boolean,\n message: string,\n errors: Array,\n result: {\n user_exists: boolean,\n login_success: boolean,\n user_details: {\n dn: string,\n entryUUID: string,\n uid: string,\n cn: string,\n email: string,\n },\n },\n};\n\nexport type LoadResponse = {\n backend: AuthenticationBackend | undefined | null,\n};\n\nexport type LoadActiveResponse = LoadResponse & {\n context: {\n backendsTotal: number,\n },\n};\n\nexport type ActionsType = {\n create: (AuthenticationBackendCreate) => Promise,\n delete: (authBackendId: $PropertyType | undefined | null, authBackendTitle: $PropertyType) => Promise,\n load: (id: string) => Promise,\n loadActive: () => Promise,\n loadBackendsPaginated: (pagination: Pagination) => Promise,\n loadUsersPaginated: (authBackendId: string, pagination: Pagination) => Promise,\n loadActiveBackendType: () => Promise,\n setActiveBackend: (authBackendId: $PropertyType | undefined | null, authBackendTitle: $PropertyType) => Promise,\n testConnection: (payload: ConnectionTestPayload) => Promise,\n testLogin: (payload: LoginTestPayload) => Promise,\n update: (id: string, AuthenticationBackendUpdate) => Promise,\n};\n\nexport const AuthenticationActions = singletonActions(\n 'Authentication',\n () => Reflux.createActions({\n create: { asyncResult: true },\n delete: { asyncResult: true },\n load: { asyncResult: true },\n loadActive: { asyncResult: true },\n loadBackendsPaginated: { asyncResult: true },\n loadUsersPaginated: { asyncResult: true },\n loadActiveBackendType: { asyncResult: true },\n setActiveBackend: { asyncResult: true },\n testConnection: { asyncResult: true },\n testLogin: { asyncResult: true },\n update: { asyncResult: true },\n }),\n);\n\ntype PaginatedBackendsResponse = PaginatedResponseType & {\n context: {\n active_backend: AuthenticationBackendJSON | null | undefined,\n },\n backends: Array,\n};\n\ntype PaginatedUsersResponse = PaginatedResponseType & {\n users: Array,\n};\n\nexport const AuthenticationStore = singletonStore(\n 'Authentication',\n () => Reflux.createStore<{ authenticators: any }>({\n listenables: [AuthenticationActions],\n\n getInitialState() {\n return {\n authenticators: null,\n };\n },\n\n create(authBackend: AuthenticationBackendCreate): Promise {\n const url = qualifyUrl(ApiRoutes.AuthenticationController.create().url);\n const promise = fetch('POST', url, authBackend).then((result) => (result ? {\n backend: AuthenticationBackend.fromJSON(result.backend),\n } : null));\n AuthenticationActions.create.promise(promise);\n\n return promise;\n },\n\n load(backendId: string): Promise {\n const url = qualifyUrl(ApiRoutes.AuthenticationController.load(encodeURIComponent(backendId)).url);\n const promise = fetch('GET', url).then((result) => (result ? {\n backend: AuthenticationBackend.fromJSON(result.backend),\n } : null));\n\n AuthenticationActions.load.promise(promise);\n\n return promise;\n },\n\n loadActive(): Promise {\n const url = qualifyUrl(ApiRoutes.AuthenticationController.loadActive().url);\n const promise = fetch('GET', url).then((result) => (result ? {\n backend: result.backend ? AuthenticationBackend.fromJSON(result.backend) : null,\n context: { backendsTotal: result.context.backends_total },\n } : null));\n\n AuthenticationActions.loadActive.promise(promise);\n\n return promise;\n },\n\n update(backendId: null | undefined | $PropertyType, payload: AuthenticationBackendUpdate): Promise {\n const url = qualifyUrl(ApiRoutes.AuthenticationController.update(backendId).url);\n const promise = fetch('PUT', url, payload).then((result) => (result ? {\n backend: AuthenticationBackend.fromJSON(result.backend),\n } : null));\n\n AuthenticationActions.update.promise(promise);\n\n return promise;\n },\n\n delete(backendId: null | undefined | $PropertyType): Promise {\n const url = qualifyUrl(ApiRoutes.AuthenticationController.delete(backendId).url);\n const promise = fetch('DELETE', url);\n AuthenticationActions.delete.promise(promise);\n\n return promise;\n },\n\n testConnection(payload: ConnectionTestPayload): Promise {\n const url = qualifyUrl(ApiRoutes.AuthenticationController.testConnection().url);\n const promise = fetch('POST', url, payload);\n AuthenticationActions.testConnection.promise(promise);\n\n return promise;\n },\n\n testLogin(payload: LoginTestPayload): Promise {\n const url = qualifyUrl(ApiRoutes.AuthenticationController.testLogin().url);\n const promise = fetch('POST', url, payload);\n AuthenticationActions.testLogin.promise(promise);\n\n return promise;\n },\n\n setActiveBackend(backendId: null | undefined | $PropertyType): Promise {\n const url = qualifyUrl(ApiRoutes.AuthenticationController.updateConfiguration().url);\n const promise = fetch('POST', url, { active_backend: backendId });\n AuthenticationActions.setActiveBackend.promise(promise);\n\n return promise;\n },\n\n loadBackendsPaginated({ page, perPage, query }: Pagination): Promise {\n const url = PaginationURL(ApiRoutes.AuthenticationController.servicesPaginated().url, page, perPage, query);\n const promise = fetch('GET', qualifyUrl(url))\n .then((response: PaginatedBackendsResponse) => ({\n context: {\n activeBackend: response.context.active_backend,\n },\n list: Immutable.List(response.backends.map((backend) => AuthenticationBackend.fromJSON(backend))),\n pagination: {\n page: response.page,\n perPage: response.per_page,\n query: response.query,\n count: response.count,\n total: response.total,\n },\n }));\n\n AuthenticationActions.loadBackendsPaginated.promise(promise);\n\n return promise;\n },\n\n loadUsersPaginated(authBackendId, { page, perPage, query }: Pagination): Promise {\n const url = PaginationURL(ApiRoutes.AuthenticationController.loadUsersPaginated(authBackendId).url, page, perPage, query);\n\n const promise = fetch('GET', qualifyUrl(url))\n .then((response: PaginatedUsersResponse) => ({\n list: Immutable.List(response.users.map((user) => UserOverview.fromJSON(user))),\n pagination: {\n page: response.page,\n perPage: response.per_page,\n query: response.query,\n count: response.count,\n total: response.total,\n },\n }));\n\n AuthenticationActions.loadUsersPaginated.promise(promise);\n\n return promise;\n },\n\n loadActiveBackendType(): Promise {\n const url = qualifyUrl(ApiRoutes.AuthenticationController.loadActiveBackendType().url);\n\n // no authentication required\n const promise = new Builder('GET', url)\n .build()\n .then((response) => response.json())\n .then((result: { backend: string | undefined }) => {\n return result.backend;\n });\n\n AuthenticationActions.loadActiveBackendType.promise(promise);\n\n return promise;\n },\n }),\n);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const getAuthServicePlugin = (type: string, throwError: boolean = false) => {\n const authServices = PluginStore.exports('authentication.services') || [];\n const authService = authServices.find((service) => service.name === type);\n\n if (!authService && throwError) {\n throw new Error(`Authentication service with type \"${type}\" not found.`);\n }\n\n return authService;\n};\n\nexport const getEnterpriseGroupSyncPlugin = () => {\n const authGroupSyncPlugins = PluginStore.exports('authentication.enterprise.directoryServices.groupSync');\n\n return authGroupSyncPlugins?.[0];\n};\n\nexport const getEnterpriseAuthenticationPlugin = () => {\n const authPlugins = PluginStore.exports('authentication.enterprise');\n\n return authPlugins?.[0];\n};\n"],"names":["create","notifyingAction","action","AuthenticationActions","success","authBackend","message","title","error","load","authBackendId","notFoundRedirect","loadActive","update","delete","authBackendTitle","testConnection","testLogin","setActiveBackend","loadBackendsPaginated","loadUsersPaginated","loadActiveBackendType","UserOverview","id","username","fullName","email","roles","readOnly","external","sessionActive","clientAddress","lastActivity","enabled","authServiceId","authServiceUid","accountStatus","this","_value","Builder","Immutable","full_name","toArray","read_only","external_user","session_active","client_address","last_activity","auth_service_id","auth_service_uid","account_status","value","set","toObject","AuthenticationBackend","description","defaultRoles","config","formattedConfig","authService","getAuthServicePlugin","type","configToJson","default_roles","toJS","configFromJson","singletonActions","Reflux","asyncResult","singletonStore","listenables","getInitialState","authenticators","url","qualifyUrl","ApiRoutes","promise","fetch","then","result","backend","fromJSON","backendId","encodeURIComponent","context","backendsTotal","backends_total","payload","active_backend","page","perPage","query","PaginationURL","response","activeBackend","list","backends","map","pagination","per_page","count","total","users","user","build","json","throwError","authServices","PluginStore","find","service","name","Error","getEnterpriseGroupSyncPlugin","authGroupSyncPlugins","getEnterpriseAuthenticationPlugin","authPlugins"],"sourceRoot":""}