homebridge-config-ui-x 5.12.1-beta.7 → 5.12.1-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +8 -3
- package/public/{chunk-KAPGBFLJ.js → chunk-2WY7OHS3.js} +1 -1
- package/public/{chunk-S5H22WRF.js → chunk-5VQ42S62.js} +1 -1
- package/public/{chunk-JTQQTKY7.js → chunk-ABEGZR4S.js} +1 -1
- package/public/{chunk-KLWYBXMO.js → chunk-B5VZPCMG.js} +1 -1
- package/public/{chunk-4J3J7FSY.js → chunk-BG5R3K3W.js} +1 -1
- package/public/{chunk-JNPGEJ3W.js → chunk-C3OHEJYI.js} +1 -1
- package/public/{chunk-7LOFSGZK.js → chunk-DFIU7YL4.js} +1 -1
- package/public/{chunk-PQPDMNKK.js → chunk-DLFCGYGB.js} +1 -1
- package/public/{chunk-F332UHUK.js → chunk-DZHTCVQ3.js} +1 -1
- package/public/chunk-E773VJLI.js +1 -0
- package/public/chunk-END6WICU.js +1 -0
- package/public/chunk-EOQA6LYA.js +1 -0
- package/public/{chunk-5VXOT5GC.js → chunk-ESCWTBUZ.js} +1 -1
- package/public/{chunk-UCTE5J3F.js → chunk-EYMA3MVV.js} +1 -1
- package/public/{chunk-VY4NTNG3.js → chunk-GEK4M54S.js} +1 -1
- package/public/{chunk-GFJO2QTW.js → chunk-GZD66OFT.js} +1 -1
- package/public/chunk-IB247UL5.js +4 -0
- package/public/{chunk-YIHVWXAX.js → chunk-ICKLYQ7C.js} +2 -2
- package/public/{chunk-PSSWIPLS.js → chunk-IMI2RZ46.js} +1 -1
- package/public/{chunk-K73S26T3.js → chunk-IZWQYACB.js} +1 -1
- package/public/{chunk-2QUH2FXS.js → chunk-JJGNR7WT.js} +1 -1
- package/public/{chunk-7AD56BSX.js → chunk-JMPDHTJK.js} +1 -1
- package/public/{chunk-EKYMLGZU.js → chunk-JP5PZ43M.js} +1 -1
- package/public/{chunk-IXSMCZ5A.js → chunk-JRGRN6QD.js} +1 -1
- package/public/{chunk-KDNXPUO5.js → chunk-LABZFZLD.js} +1 -1
- package/public/{chunk-ZH3VNDIS.js → chunk-MBLEJVQV.js} +1 -1
- package/public/chunk-MGXPEQE7.js +19 -0
- package/public/{chunk-SCW535TW.js → chunk-NT7IQCMH.js} +1 -1
- package/public/{chunk-WZXTVC6W.js → chunk-OMEQ6FGM.js} +1 -1
- package/public/{chunk-G5C66QEU.js → chunk-OX22563K.js} +1 -1
- package/public/{chunk-MTYIEY2M.js → chunk-PE2GX5FN.js} +1 -1
- package/public/{chunk-RGRPV7TK.js → chunk-PIUE42YY.js} +1 -1
- package/public/{chunk-6P53ACWC.js → chunk-PJYTYQ2O.js} +1 -1
- package/public/{chunk-VFZPU4ZL.js → chunk-QTJHXXNA.js} +1 -1
- package/public/{chunk-ARR3OK4P.js → chunk-R6GUMZUN.js} +1 -1
- package/public/{chunk-BADNEAHD.js → chunk-SHCRZWO6.js} +1 -1
- package/public/{chunk-YQXFTYEI.js → chunk-SNF4UEIW.js} +6 -6
- package/public/{chunk-S3E6JDMS.js → chunk-SSWIXX3X.js} +1 -1
- package/public/{chunk-3WNDNRRB.js → chunk-U42INEHF.js} +1 -1
- package/public/{chunk-55DZYJHI.js → chunk-UWIOFP4B.js} +1 -1
- package/public/{chunk-ZMEMMUUF.js → chunk-UZZUODGJ.js} +1 -1
- package/public/index.html +1 -1
- package/public/{main-XUQ5G5JD.js → main-KLJYWDOJ.js} +1 -1
- package/public/chunk-3VAD7GQK.js +0 -1
- package/public/chunk-C5UZ5BUH.js +0 -1
- package/public/chunk-D3QQAOPW.js +0 -1
- package/public/chunk-HOHCTPYN.js +0 -4
- package/public/chunk-HZA5LDUU.js +0 -19
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as d,b as l,c as m}from"./chunk-Q2RBJQKF.js";import{a as z}from"./chunk-
|
|
1
|
+
import{a as d,b as l,c as m}from"./chunk-Q2RBJQKF.js";import{a as z}from"./chunk-OX22563K.js";import{I as f}from"./chunk-JMPDHTJK.js";import{F as o,R as r,X as p,aa as a,d as e}from"./chunk-JJ5CEM72.js";import{h as c}from"./chunk-VJN6YUS2.js";var R=(()=>{class n{$ws=a(z);$api=a(f);io;fitAddon;webLinksAddon;resize;elementResize;dataDisposable=null;isInitializing=!1;hasUserTyped=!1;destroy$=new e;term;destroyTerminal(){this.destroy$.next(),this.destroy$.complete(),this.dataDisposable&&(this.dataDisposable.dispose(),this.dataDisposable=null),this.io&&this.io.end(),this.term&&(this.term.dispose(),this.term=null),this.resize&&this.resize.complete(),this.elementResize&&this.elementResize.complete(),this.destroy$=new e,this.isInitializing=!1,this.hasUserTyped=!1}destroyPersistentSession(){return c(this,null,function*(){this.destroyTerminal();try{yield this.$api.post("/platform-tools/terminal/destroy-persistent-session",{})}catch(t){console.error("Failed to destroy persistent session:",t)}})}detachTerminal(){this.destroy$.next(),this.destroy$.complete(),this.dataDisposable&&(this.dataDisposable.dispose(),this.dataDisposable=null),this.term&&this.term.dispose(),this.resize&&this.resize.complete(),this.elementResize&&this.elementResize.complete(),this.destroy$=new e,this.isInitializing=!1}hasActiveSession(){return this.io&&this.io.socket&&this.io.socket.connected}hasUserTypedInSession(){return this.hasUserTyped}isTerminalReady(){return this.term&&!this.isInitializing}reconnectTerminal(t,s={},h){if(this.isInitializing)return!1;this.isInitializing=!0,this.elementResize=h,this.io&&this.io.socket&&this.io.socket.connected?(this.term=new m(s),this.fitAddon=new d,this.webLinksAddon=new l,setTimeout(()=>{this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}),this.resize=new e,this.term.open(t.nativeElement),setTimeout(()=>{this.fitAddon.activate(this.term),this.fitAddon.fit()}),this.io.socket.removeAllListeners("stdout"),this.io.socket.removeAllListeners("process-exit"),this.io.socket.on("stdout",i=>{this.term.write(i)}),this.io.socket.on("process-exit",()=>{this.startSession()}),this.dataDisposable&&this.dataDisposable.dispose(),this.dataDisposable=this.term.onData(i=>{this.hasUserTyped=!0,this.io.socket.emit("stdin",i)}),this.term.onResize(i=>{this.resize.next(i)}),this.resize.pipe(o(500),r(this.destroy$)).subscribe(i=>{this.io.socket.emit("resize",i)}),this.elementResize&&this.elementResize.pipe(o(100),r(this.destroy$)).subscribe({next:()=>{this.fitAddon.fit()}}),this.io.socket.emit("start-session",{cols:this.term.cols,rows:this.term.rows}),this.isInitializing=!1):this.startTerminal(t,s,h)}startTerminal(t,s={},h){return this.isInitializing?!1:(this.isInitializing=!0,this.elementResize=h,this.io=this.$ws.connectToNamespace("platform-tools/terminal"),this.term=new m(s),setTimeout(()=>{this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}),this.fitAddon=new d,this.webLinksAddon=new l,this.resize=new e,this.term.open(t.nativeElement),setTimeout(()=>{this.fitAddon.activate(this.term),this.fitAddon.fit()}),this.io.connected.pipe(o(200),r(this.destroy$)).subscribe(()=>{this.startSession()}),this.io.socket.on("disconnect",()=>{this.term.write(`
|
|
2
2
|
\r
|
|
3
3
|
\rTerminal disconnected. Is the server running?
|
|
4
4
|
\r
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as z}from"./chunk-
|
|
1
|
+
import{a as z}from"./chunk-OX22563K.js";import{e as k}from"./chunk-DZHTCVQ3.js";import{a as g}from"./chunk-GIBUKDL3.js";import"./chunk-GEK4M54S.js";import{b as M}from"./chunk-JJGNR7WT.js";import{C as R,D as T,F as I,I as D}from"./chunk-JMPDHTJK.js";import{Ab as h,Dc as m,Ec as c,Fc as w,Jb as o,Kb as i,Lb as p,Sb as S,Ua as $,Za as r,Zb as u,aa as n,kc as a,lc as s,ma as y,nb as C,sa as f,w as l,xc as b,zb as v}from"./chunk-JJ5CEM72.js";import{h as E}from"./chunk-VJN6YUS2.js";var B=t=>({command:t});function O(t,x){if(t&1&&(o(0,"div",7),a(1),i()),t&2){let e=u();r(),s(e.error())}}function j(t,x){t&1&&(o(0,"p",9),a(1),m(2,"translate"),i(),o(3,"div",10)(4,"div",11),p(5,"i",12),i()()),t&2&&(r(),s(c(2,1,"restart.please_wait_while_server_restarts")))}function A(t,x){if(t&1&&(o(0,"div",8)(1,"p"),a(2),m(3,"translate"),i(),p(4,"p",13),m(5,"translate"),i()),t&2){let e=u();r(2),s(c(3,2,"platform.docker.server_long_time")),r(2),S("innerHTML",w(5,4,"platform.docker.run_with_restart",b(7,B,e.command)),$)}}var Q=(()=>{class t{$api=n(D);$router=n(k);$settings=n(M);$toastr=n(I);$translate=n(R);$ws=n(z);destroyRef=n(y);io;timeout=f(!1);error=f(!1);command='<span class="font-monospace">--restart=always</span>';ngOnInit(){this.initialize()}initialize(){return E(this,null,function*(){this.io=this.$ws.connectToNamespace("status"),this.io.connected.subscribe(()=>{this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{})}),this.io.socket.connected&&(this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{}));try{yield this.$api.put("/platform-tools/docker/restart-container",{}),this.checkIfServerUp()}catch(e){this.error.set(this.$translate.instant("restart.toast_server_restart_error")),console.error(e),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}})}ngOnDestroy(){this.io.end()}checkIfServerUp(){l(1e4).pipe(g(this.destroyRef)).subscribe(()=>{this.io.socket.on("homebridge-status",e=>{(e.status==="ok"||e.status==="pending")&&(this.$toastr.success(this.$translate.instant("platform.docker.container_restarted"),this.$translate.instant("toast.title_success")),this.$router.navigate(["/"]))})}),l(6e4).pipe(g(this.destroyRef)).subscribe(()=>{this.$toastr.warning(this.$translate.instant("restart.toast_server_restart_timeout"),this.$translate.instant("toast.title_warning"),{timeOut:1e4}),this.timeout.set(!0)})}static \u0275fac=function(d){return new(d||t)};static \u0275cmp=C({type:t,selectors:[["ng-component"]],decls:14,vars:8,consts:[[1,"d-flex","justify-content-between"],[1,"primary-text","m-0"],[1,"my-4","align-items-center",2,"max-width","1000px","margin","auto"],[1,"w-100","text-center","primary-text","mb-5"],[1,"fab","fa-docker",2,"font-size","75px"],[1,"text-center"],[1,"primary-text","mb-4"],[1,"alert","alert-error","my-4"],[1,"alert","alert-warning","my-4"],[1,"grey-text"],[1,"justify-content-center","my-4"],[1,"restart-progress-box","primary-text"],[1,"fas","fa-circle-notch","fa-spin"],[1,"grey-text","mb-0",3,"innerHTML"]],template:function(d,_){d&1&&(o(0,"div",0)(1,"h3",1),a(2),m(3,"translate"),i()(),o(4,"div",2)(5,"div",3),p(6,"i",4),i(),o(7,"div",5)(8,"h4",6),a(9),m(10,"translate"),i(),v(11,O,2,1,"div",7)(12,j,6,3),v(13,A,6,9,"div",8),i()()),d&2&&(r(2),s(c(3,4,"menu.restart.title")),r(7),s(c(10,6,"platform.docker.title_restarting")),r(2),h(_.error()?11:12),r(2),h(_.timeout()?13:-1))},dependencies:[T],styles:[".restart-progress-box[_ngcontent-%COMP%]{font-size:22px;font-weight:300;margin-top:15px}"]})}return t})();export{Q as ContainerRestartComponent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as Ee}from"./chunk-CU6MTMVY.js";import{a as ae}from"./chunk-YKLNKZD5.js";import{a as Se}from"./chunk-PSSWIPLS.js";import{n as R,o as ie}from"./chunk-HOWYXHPL.js";import{a as ne}from"./chunk-I5AP453W.js";import{s as I,t as we}from"./chunk-BNNKKGLH.js";import{c as Ce}from"./chunk-F332UHUK.js";import{a as xe}from"./chunk-GIBUKDL3.js";import{b as K}from"./chunk-VY4NTNG3.js";import{B as ge,C as G,D as L,b as W,c as j,d as g,e as P,f as X,g as q,j as S,m as Y,q as Z,r as ee,s as te}from"./chunk-WZXTVC6W.js";import{a as Ie,b as he}from"./chunk-2QUH2FXS.js";import{C as k,D as M,F,I as B}from"./chunk-7AD56BSX.js";import{Ab as h,Cb as de,Db as pe,Dc as o,Eb as ce,Ec as s,Fb as E,Fc as ve,Gb as r,Hb as a,Ib as d,Jb as D,Kb as T,Kc as oe,Lb as z,Rb as N,Sb as re,Xb as _,Yb as O,Za as e,Zb as v,aa as p,ea as le,ga as A,ha as V,hc as ue,ic as $,jc as Q,kc as m,lc as u,ma as me,mb as J,mc as c,nb as U,nc as fe,sa as y,xc as be,yb as f,yc as _e,zb as C}from"./chunk-JJ5CEM72.js";import{g as Be,h as w}from"./chunk-VJN6YUS2.js";function Ae(n,x){n&1&&(r(0,"ngb-alert",13)(1,"p",20),m(2),o(3,"translate"),a()()),n&2&&(E("dismissible",!1),e(2),u(s(3,2,"login.invalid_password")))}var ye=(()=>{class n{$activeModal=p(I);$api=p(B);$toastr=p(F);$translate=p(k);invalidCredentials=y(!1);formGroup=new q({password:new S("",[g.required])});disable2fa(){return w(this,null,function*(){this.invalidCredentials.set(!1);try{yield this.$api.post("/users/otp/deactivate",this.formGroup.value),this.$activeModal.close()}catch{this.formGroup.setValue({password:""}),this.invalidCredentials.set(!0)}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["ng-component"]],decls:34,vars:27,consts:[[1,"modal-content",2,"min-height","300px"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-key","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],[1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["type","password","autocomplete","current-password",1,"form-control","custom-input",3,"formControl","placeholder"],["type","error",1,"mt-3","mb-0",3,"dismissible"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"click","disabled"],[1,"mb-0"]],template:function(l,i){l&1&&(r(0,"div",0)(1,"div",1)(2,"h5",2),m(3),o(4,"translate"),a(),r(5,"button",3),o(6,"translate"),_("click",function(){return i.dismissModal()}),a()(),r(7,"div",4)(8,"div",5),d(9,"i",6),a(),r(10,"ul",7)(11,"li"),m(12),o(13,"translate"),a()(),r(14,"ul",8)(15,"li",9)(16,"label",10),m(17),o(18,"translate"),a(),r(19,"div",11),d(20,"input",12),o(21,"translate"),a()()(),C(22,Ae,4,4,"ngb-alert",13),a(),r(23,"div",14)(24,"div",15)(25,"button",16),o(26,"translate"),_("click",function(){return i.dismissModal()}),m(27),o(28,"translate"),a()(),d(29,"div",17),r(30,"div",18)(31,"button",19),_("click",function(){return i.disable2fa()}),m(32),o(33,"translate"),a()()()()),l&2&&(e(3),u(s(4,11,"users.setup_2fa_disable")),e(2),f("aria-label",s(6,13,"form.button_close")),e(7),u(s(13,15,"users.setup_2fa_disable_current_password")),e(5),u(s(18,17,"users.label_password")),e(3),E("formControl",i.formGroup.controls.password)("placeholder",s(21,19,"users.label_password")),e(2),h(i.invalidCredentials()&&!i.formGroup.controls.password.value?22:-1),e(3),f("aria-label",s(26,21,"form.button_close")),e(2),c(" ",s(28,23,"form.button_close")," "),e(4),E("disabled",i.formGroup.invalid),e(),c(" ",s(33,25,"form.button_continue")," "))},dependencies:[G,j,P,L,Z,ne,M],encapsulation:2})}return n})();var Ue=Be(Ie(),1);var Ve=n=>({timeDiffError:n});function Ne(n,x){n&1&&(r(0,"li"),m(1),o(2,"translate"),a()),n&2&&(e(),u(s(2,1,"users.setup_2fa_scan_qr_code")))}function Fe(n,x){if(n&1&&(r(0,"ngb-alert",8)(1,"p",16),m(2),o(3,"translate"),a(),r(4,"p",17),m(5),o(6,"translate"),a()()),n&2){let t=v();E("dismissible",!1),e(2),u(s(3,3,"users.setup_2fa_cannot_setup_2fa")),e(3),u(ve(6,5,"users.setup_2fa_server_time_out",be(8,Ve,t.timeDiffError())))}}function je(n,x){n&1&&d(0,"i",27)}function Pe(n,x){n&1&&d(0,"i",28)}function qe(n,x){if(n&1){let t=N();r(0,"div",21),m(1),o(2,"translate"),d(3,"br"),m(4),r(5,"a",26),_("click",function(){A(t);let i=v(2);return V(i.copySecretToClipboard())}),C(6,je,1,0,"i",27)(7,Pe,1,0,"i",28),a()()}if(n&2){let t=v(2);e(),c(" ",s(2,3,"users.setup_2fa_scan_qr_manual")),e(3),c(" ",t.otpSecret()," "),e(2),h(t.secretCopied()?6:7)}}function Ge(n,x){if(n&1&&(r(0,"ul",9)(1,"li",18)(2,"div",19),d(3,"app-qrcode",20),a(),C(4,qe,8,5,"div",21),a(),r(5,"li",22)(6,"label",23),m(7),o(8,"translate"),a(),r(9,"div",24),d(10,"input",25),a()()()),n&2){let t=v();e(3),E("data",t.otpString()),e(),h(t.otpSecret()?4:-1),e(3),u(s(8,4,"users.setup_2fa_enter_code")),e(3),E("formControl",t.formGroup.controls.code)}}function Le(n,x){if(n&1){let t=N();r(0,"button",29),o(1,"translate"),_("click",function(){A(t);let i=v();return V(i.dismissModal())}),m(2),o(3,"translate"),a()}n&2&&(f("aria-label",s(1,2,"form.button_close")),e(2),c(" ",s(3,4,"form.button_close")," "))}function Re(n,x){if(n&1){let t=N();r(0,"button",29),o(1,"translate"),_("click",function(){A(t);let i=v();return V(i.dismissModal())}),m(2),o(3,"translate"),a()}n&2&&(f("aria-label",s(1,2,"form.button_close")),e(2),c(" ",s(3,4,"form.button_close")," "))}function ze(n,x){if(n&1){let t=N();r(0,"button",30),_("click",function(){A(t);let i=v();return V(i.enable2fa())}),m(1),o(2,"translate"),a()}if(n&2){let t=v();E("disabled",t.formGroup.invalid),e(),c(" ",s(2,2,"form.button_continue")," ")}}var Me=(()=>{class n{$activeModal=p(I);$api=p(B);$toastr=p(F);$translate=p(k);modalData=p(R);user=this.modalData.user;timeDiffError=y(null);otpString=y(void 0);otpSecret=y(void 0);secretCopied=y(!1);copyTimeout=null;formGroup=new q({code:new S("",[g.required,g.minLength(6),g.maxLength(6)])});ngOnInit(){this.initialize()}initialize(){return w(this,null,function*(){try{let t=yield this.$api.post("/users/otp/setup",{});this.checkTimeDiff(t.timestamp),this.timeDiffError()||(this.otpString.set(t.otpauth),this.otpSecret.set(new URL(t.otpauth).searchParams.get("secret")||""))}catch(t){this.$activeModal.dismiss(),console.error(t),this.$toastr.error(this.$translate.instant("users.setup_2fa_enable_error"),this.$translate.instant("toast.title_error"))}})}enable2fa(){return w(this,null,function*(){try{yield this.$api.post("/users/otp/activate",this.formGroup.value),this.$activeModal.close()}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("users.setup_2fa_activate_error"),this.$translate.instant("toast.title_error"))}})}copySecretToClipboard(){return w(this,null,function*(){let t=this.otpSecret();t&&(yield navigator.clipboard.writeText(t),this.secretCopied.set(!0),this.copyTimeout&&clearTimeout(this.copyTimeout),this.copyTimeout=setTimeout(()=>{this.secretCopied.set(!1)},3e3))})}dismissModal(){this.$activeModal.dismiss("Dismiss")}checkTimeDiff(t){let l=(0,Ue.default)(t).diff(new Date,"millisecond");l<-5e3||l>5e3?this.timeDiffError.set(l):this.timeDiffError.set(null)}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["ng-component"]],decls:24,vars:15,consts:[[1,"modal-content","setup2fa"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-key","primary-text",2,"font-size","75px"],[1,"mb-3"],["type","error",1,"mb-0",3,"dismissible"],[1,"list-group","list-group-box","mb-0"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"disabled"],[1,"fw-bold","mb-1"],[1,"mb-0"],[1,"list-group-item","text-center"],[1,"text-center","w-100","d-flex","justify-content-center","my-2"],[1,"mx-auto",2,"width","175px","height","175px",3,"data"],[1,"grey-text","small","mt-0","mb-1"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],[1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["type","text","placeholder","eg. 123456","autocomplete","one-time-code","autocapitalize","none","inputmode","numeric","pattern","[0-9]*",1,"form-control","custom-input",3,"formControl"],["href","javascript:void(0)",1,"ms-1","text-primary",3,"click"],[1,"fas","fa-check","green-text"],[1,"fas","fa-copy"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"]],template:function(l,i){l&1&&(r(0,"div",0)(1,"div",1)(2,"h5",2),m(3),o(4,"translate"),a(),r(5,"button",3),o(6,"translate"),_("click",function(){return i.dismissModal()}),a()(),r(7,"div",4)(8,"div",5),d(9,"i",6),a(),r(10,"ul",7)(11,"li"),m(12),o(13,"translate"),a(),C(14,Ne,3,3,"li"),a(),C(15,Fe,7,10,"ngb-alert",8),C(16,Ge,11,6,"ul",9),a(),r(17,"div",10)(18,"div",11),C(19,Le,4,6,"button",12),a(),r(20,"div",13),C(21,Re,4,6,"button",12),a(),r(22,"div",14),C(23,ze,3,4,"button",15),a()()()),l&2&&(e(3),u(s(4,9,"users.setup_2fa")),e(2),f("aria-label",s(6,11,"form.button_close")),e(7),u(s(13,13,"users.setup_2fa_warning")),e(2),h(i.timeDiffError()?-1:14),e(),h(i.timeDiffError()?15:-1),e(),h(i.timeDiffError()?-1:16),e(3),h(i.timeDiffError()?-1:19),e(2),h(i.timeDiffError()?21:-1),e(2),h(i.timeDiffError()?-1:23))},dependencies:[ne,Ee,G,j,P,ge,L,Z,M],encapsulation:2})}return n})();var De=(()=>{class n{$activeModal=p(I);$api=p(B);$toastr=p(F);$translate=p(k);modalData=p(ie);existingUsers=this.modalData.existingUsers;form=new q({username:new S("",[g.required]),name:new S("",[g.required]),password:new S("",[g.compose([g.required,g.minLength(4)])]),passwordConfirm:new S("",[g.required]),admin:new S(!0)},this.matchPassword);ngOnInit(){this.form.controls.username.addValidators(this.duplicateUsernameValidator.bind(this)),this.form.controls.username.updateValueAndValidity()}onSubmit(l){return w(this,arguments,function*({value:t}){try{yield this.$api.post("/users",t),this.$activeModal.close()}catch(i){this.$toastr.error(i.error?.message||i.message,this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}duplicateUsernameValidator(t){if(!t.value)return null;let l=t.value.trim();return l&&this.existingUsers.some(b=>b.username===l)?{duplicateUsername:!0}:null}matchPassword(t){let l=t.get("password")?.value,i=t.get("passwordConfirm")?.value;return l!==i?(t.get("passwordConfirm")?.setErrors({matchPassword:!0}),{matchPassword:!0}):null}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["ng-component"]],decls:63,vars:52,consts:[[1,"modal-content"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-user-plus","primary-text",2,"font-size","75px"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],["for","form-username",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["formControlName","username","type","text","id","form-username","autofocus","","autocomplete","username","autocapitalize","none",1,"form-control","custom-input"],["for","form-name",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","name","type","text","id","form-name","autocomplete","name",1,"form-control","custom-input"],["for","form-pass",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","password","type","password","autocomplete","new-password","id","form-pass",1,"form-control","custom-input"],["for","form-pass-confirm",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","passwordConfirm","type","password","autocomplete","new-password","id","form-pass-confirm",1,"form-control","custom-input"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"text-start"],[1,"text-end","grey-text","d-flex","align-items-center"],["formControlName","admin","type","checkbox","id","isAdmin",1,"rendux-input"],["for","isAdmin",1,"rendux-label","ms-3"],[1,"modal-footer","justify-content-between"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","submit",1,"btn","btn-primary",3,"disabled"]],template:function(l,i){l&1&&(r(0,"div",0)(1,"form",1),_("ngSubmit",function(){return i.onSubmit(i.form)}),r(2,"div",2)(3,"h5",3),m(4),o(5,"translate"),a(),r(6,"button",4),o(7,"translate"),_("click",function(){return i.dismissModal()}),a()(),r(8,"div",5)(9,"div",6),d(10,"i",7),a(),r(11,"ul",8)(12,"li",9)(13,"label",10),m(14),o(15,"translate"),d(16,"app-required-indicator"),a(),r(17,"div",11),d(18,"input",12),o(19,"translate"),a()(),r(20,"li",9)(21,"label",13),m(22),o(23,"translate"),d(24,"app-required-indicator"),a(),r(25,"div",11),d(26,"input",14),o(27,"translate"),a()(),r(28,"li",9)(29,"label",15),m(30),o(31,"translate"),d(32,"app-required-indicator"),a(),r(33,"div",11),d(34,"input",16),o(35,"translate"),a()(),r(36,"li",9)(37,"label",17),m(38),o(39,"translate"),d(40,"app-required-indicator"),a(),r(41,"div",11),d(42,"input",18),o(43,"translate"),a()(),r(44,"li",19)(45,"span",20),m(46),o(47,"translate"),d(48,"app-required-indicator"),a(),r(49,"div",21),d(50,"input",22),o(51,"translate"),d(52,"label",23),a()()()(),r(53,"div",24)(54,"div",20)(55,"button",25),_("click",function(){return i.dismissModal()}),m(56),o(57,"translate"),a()(),d(58,"div",26),r(59,"div",27)(60,"button",28),m(61),o(62,"translate"),a()()()()()),l&2&&(e(),E("formGroup",i.form),e(3),u(s(5,24,"users.title_add_user")),e(2),f("aria-label",s(7,26,"form.button_close")),e(8),c(" ",s(15,28,"users.label_username")),e(4),$("is-invalid",i.form.controls.username.touched&&i.form.controls.username.invalid),f("aria-label",s(19,30,"users.label_username")),e(4),c(" ",s(23,32,"users.label_full_name")),e(4),$("is-invalid",i.form.controls.name.touched&&i.form.controls.name.invalid),f("aria-label",s(27,34,"users.label_full_name")),e(4),c(" ",s(31,36,"users.label_password")),e(4),$("is-invalid",i.form.controls.password.touched&&i.form.controls.password.invalid),f("aria-label",s(35,38,"users.label_password")),e(4),c(" ",s(39,40,"users.label_confirm_password")),e(4),$("is-invalid",i.form.controls.passwordConfirm.touched&&i.form.controls.passwordConfirm.invalid),f("aria-label",s(43,42,"users.label_confirm_password")),e(4),c(" ",s(47,44,"users.label_admin_user")),e(4),f("aria-label",s(51,46,"users.label_admin_user")),e(6),c(" ",s(57,48,"form.button_close")," "),e(4),E("disabled",!i.form.valid),e(),c(" ",s(62,50,"form.button_save")," "))},dependencies:[G,Y,j,W,P,X,L,te,ee,ae,M],encapsulation:2})}return n})();function Oe(n,x){n&1&&d(0,"app-required-indicator")}function Je(n,x){if(n&1&&(r(0,"li",9)(1,"label",29),m(2),o(3,"translate"),d(4,"app-required-indicator"),a(),r(5,"div",11),d(6,"input",30),o(7,"translate"),a()()),n&2){let t=v();e(2),c(" ",s(3,4,"users.label_confirm_password")),e(4),$("is-invalid",t.form.controls.passwordConfirm.touched&&t.form.controls.passwordConfirm.invalid),f("aria-label",s(7,6,"users.label_confirm_password"))}}function Qe(n,x){n&1&&(r(0,"div",22)(1,"div",25),m(2),o(3,"translate"),a()()),n&2&&(e(2),u(s(3,1,"common.phrases.are_you_sure")))}var Te=(()=>{class n{$activeModal=p(I);$api=p(B);$auth=p(K);$toastr=p(F);$translate=p(k);modalData=p(R);user=this.modalData.user;existingUsers=this.modalData.existingUsers||[];isCurrentUser=y(!1);deleteMode=y(!1);initialFormValue={};form=new q({username:new S("",[g.required]),name:new S("",[g.required]),password:new S("",[g.minLength(4)]),passwordConfirm:new S(""),admin:new S(!0)},this.matchPassword);isLastAdmin=oe(()=>this.user?.admin?this.existingUsers.filter(l=>l.admin).length<=1:!1);canDelete=oe(()=>!this.isCurrentUser()&&!this.isLastAdmin());ngOnInit(){this.user&&(this.isCurrentUser.set(this.$auth.user.username===this.user.username),this.form.patchValue(this.user),this.initialFormValue=this.form.getRawValue(),this.form.controls.username.addValidators(this.duplicateUsernameValidator.bind(this)),this.form.controls.username.updateValueAndValidity(),this.isLastAdmin()&&this.form.controls.admin.disable())}onSubmit(l){return w(this,arguments,function*({value:t}){if(this.user){if(this.deleteMode()){try{yield this.$api.delete(`/users/${this.user.id}`),this.$activeModal.close()}catch(i){console.error(i),this.$toastr.error(i.error?.message||i.message,this.$translate.instant("toast.title_error"))}return}try{yield this.$api.patch(`/users/${this.user.id}`,t),this.$activeModal.close(),this.isCurrentUser()&&t.username!==this.$auth.user.username&&this.$auth.logout()}catch(i){console.error(i),this.$toastr.error(i.error?.message||i.message,this.$translate.instant("toast.title_error"))}}})}toggleDeleteMode(t){this.deleteMode.set(!this.deleteMode()),this.deleteMode()?this.form.disable():(this.form.enable(),this.isLastAdmin()&&this.form.controls.admin.disable()),t.target.blur()}isFormUnchanged(){return this.form.controls.password.value?!1:JSON.stringify(this.form.getRawValue())===JSON.stringify(this.initialFormValue)}duplicateUsernameValidator(t){if(!t.value)return null;let l=t.value.trim();return l&&this.existingUsers.some(b=>b.id!==this.user.id&&b.username===l)?{duplicateUsername:!0}:null}dismissModal(){this.$activeModal.dismiss("Dismiss")}matchPassword(t){let l=t.get("password")?.value,i=t.get("passwordConfirm")?.value;return l!==i?(t.get("passwordConfirm")?.setErrors({matchPassword:!0}),{matchPassword:!0}):null}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["ng-component"]],decls:60,vars:57,consts:[[1,"modal-content"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-user-pen","primary-text",2,"font-size","75px"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],["for","form-username",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["formControlName","username","type","text","id","form-username","autocomplete","off","autocapitalize","none",1,"form-control","custom-input"],["for","form-name",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","name","type","text","id","form-name","autocomplete","name",1,"form-control","custom-input"],["for","form-pass",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","password","type","password","autocomplete","new-password","id","form-pass",1,"form-control","custom-input"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"text-start"],[1,"text-end","grey-text","d-flex","align-items-center"],["type","checkbox","formControlName","admin","id","isAdmin",1,"rendux-input"],["for","isAdmin",1,"rendux-label","ms-3"],[1,"alert","alert-warning","mt-3","mb-0"],[1,"modal-footer","justify-content-between"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","button",1,"btn","btn-elegant","me-2",3,"click","disabled"],["type","submit",1,"btn",3,"disabled"],["for","form-pass-confirm",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","passwordConfirm","type","password","autocomplete","new-password","id","form-pass-confirm",1,"form-control","custom-input"]],template:function(l,i){l&1&&(r(0,"div",0)(1,"form",1),_("ngSubmit",function(){return i.onSubmit(i.form)}),r(2,"div",2)(3,"h5",3),m(4),o(5,"translate"),a(),r(6,"button",4),o(7,"translate"),_("click",function(){return i.dismissModal()}),a()(),r(8,"div",5)(9,"div",6),d(10,"i",7),a(),r(11,"ul",8)(12,"li",9)(13,"label",10),m(14),o(15,"translate"),d(16,"app-required-indicator"),a(),r(17,"div",11),d(18,"input",12),o(19,"translate"),a()(),r(20,"li",9)(21,"label",13),m(22),o(23,"translate"),d(24,"app-required-indicator"),a(),r(25,"div",11),d(26,"input",14),o(27,"translate"),a()(),r(28,"li",9)(29,"label",15),m(30),o(31,"translate"),C(32,Oe,1,0,"app-required-indicator"),a(),r(33,"div",11),d(34,"input",16),o(35,"translate"),a()(),C(36,Je,8,8,"li",9),r(37,"li",17)(38,"span",18),m(39),o(40,"translate"),d(41,"app-required-indicator"),a(),r(42,"div",19),d(43,"input",20),o(44,"translate"),d(45,"label",21),a()()(),C(46,Qe,4,3,"div",22),a(),r(47,"div",23)(48,"div",18)(49,"button",24),_("click",function(){return i.dismissModal()}),m(50),o(51,"translate"),a()(),d(52,"div",25),r(53,"div",26)(54,"button",27),o(55,"translate"),_("click",function(ke){return i.toggleDeleteMode(ke)}),d(56,"i"),a(),r(57,"button",28),m(58),o(59,"translate"),a()()()()()),l&2&&(e(),E("formGroup",i.form),e(3),u(s(5,31,"users.title_edit_user")),e(2),f("aria-label",s(7,33,"form.button_close")),e(5),ue("opacity",i.deleteMode()?"0.25":"1"),e(3),c(" ",s(15,35,"users.label_username")),e(4),$("is-invalid",i.form.controls.username.touched&&i.form.controls.username.invalid),f("aria-label",s(19,37,"users.label_username")),e(4),c(" ",s(23,39,"users.label_full_name")),e(4),$("is-invalid",i.form.controls.name.touched&&i.form.controls.name.invalid),f("aria-label",s(27,41,"users.label_full_name")),e(4),c(" ",s(31,43,"users.label_new_password")),e(2),h(i.form.controls.password.value?32:-1),e(2),$("is-invalid",i.form.controls.password.touched&&i.form.controls.password.invalid),f("aria-label",s(35,45,"users.label_new_password")),e(2),h(i.form.controls.password.value?36:-1),e(3),c(" ",s(40,47,"users.label_admin_user")),e(4),f("aria-label",s(44,49,"users.label_admin_user")),e(3),h(i.deleteMode()?46:-1),e(4),c(" ",s(51,51,"form.button_close")," "),e(4),E("disabled",!i.canDelete()),f("aria-label",s(55,53,"users.button_delete_user")),e(2),Q(i.deleteMode()?"fas fa-undo":"fas fa-trash"),e(),Q(i.deleteMode()?"btn-danger":"btn-primary"),E("disabled",!i.deleteMode()&&(!i.form.valid||i.isFormUnchanged())),e(),c(" ",s(59,55,i.deleteMode()?"form.button_delete":"form.button_save")," "))},dependencies:[G,Y,j,W,P,X,L,te,ee,ae,M],encapsulation:2})}return n})();var $e=(()=>{class n{$activeModal=p(I);dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["ng-component"]],decls:46,vars:36,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fa","fa-question-circle-o","primary-text",2,"font-size","75px"],[1,"ms-2"],[1,"mb-0"],[1,"mb-2","grey-text"],[1,"modal-footer","justify-content-between"],[1,"text-start"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-end"]],template:function(l,i){l&1&&(r(0,"div",0)(1,"form")(2,"div",1)(3,"h5",2),m(4),o(5,"translate"),a(),r(6,"button",3),o(7,"translate"),_("click",function(){return i.dismissModal()}),a()(),r(8,"div",4)(9,"div",5),d(10,"i",6),a(),r(11,"h5",7),m(12),o(13,"translate"),a(),r(14,"ul",8)(15,"li"),m(16),o(17,"translate"),a(),r(18,"ul",9)(19,"li"),m(20),o(21,"translate"),a(),r(22,"li"),m(23),o(24,"translate"),a(),r(25,"li"),m(26),o(27,"translate"),o(28,"translate"),a(),r(29,"li"),m(30),o(31,"translate"),a(),r(32,"li"),m(33),o(34,"translate"),a()(),r(35,"li"),m(36),o(37,"translate"),a()(),d(38,"app-support-banner"),a(),r(39,"div",10),d(40,"div",11),r(41,"div",12)(42,"button",13),_("click",function(){return i.dismissModal()}),m(43),o(44,"translate"),a()(),d(45,"div",14),a()()()),l&2&&(e(4),u(s(5,12,"support.title")),e(2),f("aria-label",s(7,14,"form.button_close")),e(6),u(s(13,16,"users.title_users")),e(4),u(s(17,18,"users.support.acc_1")),e(4),u(s(21,20,"menu.label_status")),e(3),u(s(24,22,"menu.label_plugins")),e(3),fe("",s(27,24,"menu.label_accessories")," (",s(28,26,"users.support.control"),")"),e(4),u(s(31,28,"menu.linux.label_logs")),e(3),u(s(34,30,"support.title")),e(3),u(s(37,32,"users.support.acc_2")),e(7),c(" ",s(44,34,"form.button_close")," "))},dependencies:[Se,M],encapsulation:2})}return n})();var He=(n,x)=>({"fa-user-secret":n,"fa-user":x});function Ke(n,x){if(n&1){let t=N();D(0,"button",21),O("click",function(){A(t);let i=v(2).$implicit,b=v();return V(b.disable2fa(i))}),m(1),o(2,"translate"),T()}if(n&2){let t=v(2).$implicit,l=v();re("disabled",t.username!==l.username),e(),c(" ",s(2,2,"users.setup_2fa_disable")," ")}}function We(n,x){if(n&1){let t=N();D(0,"button",22),O("click",function(){A(t);let i=v(2).$implicit,b=v();return V(b.setup2fa(i))}),m(1),o(2,"translate"),T()}if(n&2){let t=v(2).$implicit,l=v();re("disabled",t.username!==l.username),e(),c(" ",s(2,2,"users.setup_2fa")," ")}}function Xe(n,x){if(n&1&&C(0,Ke,3,4,"button",19)(1,We,3,4,"button",20),n&2){let t=v().$implicit;h(t.otpActive?0:1)}}function Ye(n,x){n&1&&z(0,"div")}function Ze(n,x){if(n&1){let t=N();D(0,"div",9)(1,"div",10)(2,"div",11)(3,"div",12)(4,"span",13)(5,"h4"),m(6),T(),D(7,"h5",14),z(8,"i",15),m(9),T()()(),D(10,"div",16),C(11,Xe,2,1)(12,Ye,1,0,"div"),D(13,"div")(14,"button",17),o(15,"translate"),O("click",function(){let i=A(t).$implicit,b=v();return V(b.openEditUser(i))}),z(16,"i",18),T()()()()()()}if(n&2){let t=x.$implicit;e(6),u(t.name),e(2),Q(_e(8,He,t.admin,!t.admin)),e(),c(" ",t.username," "),e(2),h(t.admin?11:12),e(3),f("aria-label",s(15,6,"form.button_edit"))}}var ci=(()=>{class n{injector=p(le);destroyRef=p(me);$api=p(B);$auth=p(K);$modal=p(we);$route=p(Ce);$settings=p(he);$translate=p(k);homebridgeUsers=y([]);username=this.$auth.user.username;isAdmin=this.$auth.user.admin;ngOnInit(){let t=this.$translate.instant("users.title_users");this.$settings.setPageTitle(t),this.$route.data.pipe(xe(this.destroyRef)).subscribe(l=>{this.homebridgeUsers.set(l.homebridgeUsers)})}reloadUsers(){return w(this,null,function*(){let t=yield this.$api.get("/users");this.homebridgeUsers.set(t)})}openAddNewUser(){return w(this,null,function*(){let t=J([{provide:ie,useValue:{existingUsers:this.homebridgeUsers()}}],this.injector),l=this.$modal.open(De,{size:"lg",backdrop:"static",injector:t});try{yield l.result,this.reloadUsers()}catch{}})}openEditUser(t){return w(this,null,function*(){let l=J([{provide:R,useValue:{user:t,existingUsers:this.homebridgeUsers()}}],this.injector),i=this.$modal.open(Te,{size:"lg",backdrop:"static",injector:l});try{yield i.result,this.reloadUsers()}catch{}})}setup2fa(t){return w(this,null,function*(){let l=J([{provide:R,useValue:{user:t}}],this.injector),i=this.$modal.open(Me,{size:"lg",backdrop:"static",injector:l});try{yield i.result,this.reloadUsers()}catch{}})}disable2fa(t){return w(this,null,function*(){let l=J([{provide:R,useValue:{user:t}}],this.injector),i=this.$modal.open(ye,{size:"lg",backdrop:"static",injector:l});try{yield i.result,this.reloadUsers()}catch{}})}openSupport(){this.$modal.open($e,{size:"lg",backdrop:"static"})}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["app-users"]],decls:15,vars:9,consts:[[1,"row","mb-3"],[1,"col-6"],[1,"primary-text","m-0"],[1,"col-6","text-end"],[1,"btn","btn-elegant","waves-effect","m-0","me-2",3,"click"],[1,"fas","fa-user-plus"],["type","button",1,"btn","btn-elegant","my-0","me-0",3,"click"],[1,"fa","fa-question-circle-o"],[1,"row"],[1,"col-md-6","mb-4"],[1,"card","card-body"],[1,"d-flex","flex-column"],[1,"d-flex","flex-row","mb-3"],[1,"me-auto","my-0"],[1,"small","text-truncate","grey-text"],[1,"fas"],[1,"d-flex","flex-row","justify-content-between"],[1,"btn","btn-elegant","m-0",3,"click"],[1,"fas","fa-user-pen"],[1,"btn","btn-elegant","m-0",3,"disabled"],[1,"btn","btn-primary","m-0",3,"disabled"],[1,"btn","btn-elegant","m-0",3,"click","disabled"],[1,"btn","btn-primary","m-0",3,"click","disabled"]],template:function(l,i){l&1&&(D(0,"div",0)(1,"div",1)(2,"h3",2),m(3),o(4,"translate"),T()(),D(5,"div",3)(6,"button",4),o(7,"translate"),O("click",function(){return i.openAddNewUser()}),z(8,"i",5),T(),D(9,"button",6),o(10,"translate"),O("click",function(){return i.openSupport()}),z(11,"i",7),T()()(),D(12,"div",8),pe(13,Ze,17,11,"div",9,de),T()),l&2&&(e(3),u(s(4,3,"users.title_users")),e(3),f("aria-label",s(7,5,"users.button_add_user")),e(3),f("aria-label",s(10,7,"support.title")),e(4),ce(i.homebridgeUsers()))},dependencies:[M],encapsulation:2})}return n})();export{ci as UsersComponent};
|
|
1
|
+
import{a as Ee}from"./chunk-CU6MTMVY.js";import{a as ae}from"./chunk-YKLNKZD5.js";import{a as Se}from"./chunk-IMI2RZ46.js";import{n as R,o as ie}from"./chunk-HOWYXHPL.js";import{a as ne}from"./chunk-I5AP453W.js";import{s as I,t as we}from"./chunk-BNNKKGLH.js";import{c as Ce}from"./chunk-DZHTCVQ3.js";import{a as xe}from"./chunk-GIBUKDL3.js";import{b as K}from"./chunk-GEK4M54S.js";import{B as ge,C as G,D as L,b as W,c as j,d as g,e as P,f as X,g as q,j as S,m as Y,q as Z,r as ee,s as te}from"./chunk-OMEQ6FGM.js";import{a as Ie,b as he}from"./chunk-JJGNR7WT.js";import{C as k,D as M,F,I as B}from"./chunk-JMPDHTJK.js";import{Ab as h,Cb as de,Db as pe,Dc as o,Eb as ce,Ec as s,Fb as E,Fc as ve,Gb as r,Hb as a,Ib as d,Jb as D,Kb as T,Kc as oe,Lb as z,Rb as N,Sb as re,Xb as _,Yb as O,Za as e,Zb as v,aa as p,ea as le,ga as A,ha as V,hc as ue,ic as $,jc as Q,kc as m,lc as u,ma as me,mb as J,mc as c,nb as U,nc as fe,sa as y,xc as be,yb as f,yc as _e,zb as C}from"./chunk-JJ5CEM72.js";import{g as Be,h as w}from"./chunk-VJN6YUS2.js";function Ae(n,x){n&1&&(r(0,"ngb-alert",13)(1,"p",20),m(2),o(3,"translate"),a()()),n&2&&(E("dismissible",!1),e(2),u(s(3,2,"login.invalid_password")))}var ye=(()=>{class n{$activeModal=p(I);$api=p(B);$toastr=p(F);$translate=p(k);invalidCredentials=y(!1);formGroup=new q({password:new S("",[g.required])});disable2fa(){return w(this,null,function*(){this.invalidCredentials.set(!1);try{yield this.$api.post("/users/otp/deactivate",this.formGroup.value),this.$activeModal.close()}catch{this.formGroup.setValue({password:""}),this.invalidCredentials.set(!0)}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["ng-component"]],decls:34,vars:27,consts:[[1,"modal-content",2,"min-height","300px"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-key","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],[1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["type","password","autocomplete","current-password",1,"form-control","custom-input",3,"formControl","placeholder"],["type","error",1,"mt-3","mb-0",3,"dismissible"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"click","disabled"],[1,"mb-0"]],template:function(l,i){l&1&&(r(0,"div",0)(1,"div",1)(2,"h5",2),m(3),o(4,"translate"),a(),r(5,"button",3),o(6,"translate"),_("click",function(){return i.dismissModal()}),a()(),r(7,"div",4)(8,"div",5),d(9,"i",6),a(),r(10,"ul",7)(11,"li"),m(12),o(13,"translate"),a()(),r(14,"ul",8)(15,"li",9)(16,"label",10),m(17),o(18,"translate"),a(),r(19,"div",11),d(20,"input",12),o(21,"translate"),a()()(),C(22,Ae,4,4,"ngb-alert",13),a(),r(23,"div",14)(24,"div",15)(25,"button",16),o(26,"translate"),_("click",function(){return i.dismissModal()}),m(27),o(28,"translate"),a()(),d(29,"div",17),r(30,"div",18)(31,"button",19),_("click",function(){return i.disable2fa()}),m(32),o(33,"translate"),a()()()()),l&2&&(e(3),u(s(4,11,"users.setup_2fa_disable")),e(2),f("aria-label",s(6,13,"form.button_close")),e(7),u(s(13,15,"users.setup_2fa_disable_current_password")),e(5),u(s(18,17,"users.label_password")),e(3),E("formControl",i.formGroup.controls.password)("placeholder",s(21,19,"users.label_password")),e(2),h(i.invalidCredentials()&&!i.formGroup.controls.password.value?22:-1),e(3),f("aria-label",s(26,21,"form.button_close")),e(2),c(" ",s(28,23,"form.button_close")," "),e(4),E("disabled",i.formGroup.invalid),e(),c(" ",s(33,25,"form.button_continue")," "))},dependencies:[G,j,P,L,Z,ne,M],encapsulation:2})}return n})();var Ue=Be(Ie(),1);var Ve=n=>({timeDiffError:n});function Ne(n,x){n&1&&(r(0,"li"),m(1),o(2,"translate"),a()),n&2&&(e(),u(s(2,1,"users.setup_2fa_scan_qr_code")))}function Fe(n,x){if(n&1&&(r(0,"ngb-alert",8)(1,"p",16),m(2),o(3,"translate"),a(),r(4,"p",17),m(5),o(6,"translate"),a()()),n&2){let t=v();E("dismissible",!1),e(2),u(s(3,3,"users.setup_2fa_cannot_setup_2fa")),e(3),u(ve(6,5,"users.setup_2fa_server_time_out",be(8,Ve,t.timeDiffError())))}}function je(n,x){n&1&&d(0,"i",27)}function Pe(n,x){n&1&&d(0,"i",28)}function qe(n,x){if(n&1){let t=N();r(0,"div",21),m(1),o(2,"translate"),d(3,"br"),m(4),r(5,"a",26),_("click",function(){A(t);let i=v(2);return V(i.copySecretToClipboard())}),C(6,je,1,0,"i",27)(7,Pe,1,0,"i",28),a()()}if(n&2){let t=v(2);e(),c(" ",s(2,3,"users.setup_2fa_scan_qr_manual")),e(3),c(" ",t.otpSecret()," "),e(2),h(t.secretCopied()?6:7)}}function Ge(n,x){if(n&1&&(r(0,"ul",9)(1,"li",18)(2,"div",19),d(3,"app-qrcode",20),a(),C(4,qe,8,5,"div",21),a(),r(5,"li",22)(6,"label",23),m(7),o(8,"translate"),a(),r(9,"div",24),d(10,"input",25),a()()()),n&2){let t=v();e(3),E("data",t.otpString()),e(),h(t.otpSecret()?4:-1),e(3),u(s(8,4,"users.setup_2fa_enter_code")),e(3),E("formControl",t.formGroup.controls.code)}}function Le(n,x){if(n&1){let t=N();r(0,"button",29),o(1,"translate"),_("click",function(){A(t);let i=v();return V(i.dismissModal())}),m(2),o(3,"translate"),a()}n&2&&(f("aria-label",s(1,2,"form.button_close")),e(2),c(" ",s(3,4,"form.button_close")," "))}function Re(n,x){if(n&1){let t=N();r(0,"button",29),o(1,"translate"),_("click",function(){A(t);let i=v();return V(i.dismissModal())}),m(2),o(3,"translate"),a()}n&2&&(f("aria-label",s(1,2,"form.button_close")),e(2),c(" ",s(3,4,"form.button_close")," "))}function ze(n,x){if(n&1){let t=N();r(0,"button",30),_("click",function(){A(t);let i=v();return V(i.enable2fa())}),m(1),o(2,"translate"),a()}if(n&2){let t=v();E("disabled",t.formGroup.invalid),e(),c(" ",s(2,2,"form.button_continue")," ")}}var Me=(()=>{class n{$activeModal=p(I);$api=p(B);$toastr=p(F);$translate=p(k);modalData=p(R);user=this.modalData.user;timeDiffError=y(null);otpString=y(void 0);otpSecret=y(void 0);secretCopied=y(!1);copyTimeout=null;formGroup=new q({code:new S("",[g.required,g.minLength(6),g.maxLength(6)])});ngOnInit(){this.initialize()}initialize(){return w(this,null,function*(){try{let t=yield this.$api.post("/users/otp/setup",{});this.checkTimeDiff(t.timestamp),this.timeDiffError()||(this.otpString.set(t.otpauth),this.otpSecret.set(new URL(t.otpauth).searchParams.get("secret")||""))}catch(t){this.$activeModal.dismiss(),console.error(t),this.$toastr.error(this.$translate.instant("users.setup_2fa_enable_error"),this.$translate.instant("toast.title_error"))}})}enable2fa(){return w(this,null,function*(){try{yield this.$api.post("/users/otp/activate",this.formGroup.value),this.$activeModal.close()}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("users.setup_2fa_activate_error"),this.$translate.instant("toast.title_error"))}})}copySecretToClipboard(){return w(this,null,function*(){let t=this.otpSecret();t&&(yield navigator.clipboard.writeText(t),this.secretCopied.set(!0),this.copyTimeout&&clearTimeout(this.copyTimeout),this.copyTimeout=setTimeout(()=>{this.secretCopied.set(!1)},3e3))})}dismissModal(){this.$activeModal.dismiss("Dismiss")}checkTimeDiff(t){let l=(0,Ue.default)(t).diff(new Date,"millisecond");l<-5e3||l>5e3?this.timeDiffError.set(l):this.timeDiffError.set(null)}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["ng-component"]],decls:24,vars:15,consts:[[1,"modal-content","setup2fa"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-key","primary-text",2,"font-size","75px"],[1,"mb-3"],["type","error",1,"mb-0",3,"dismissible"],[1,"list-group","list-group-box","mb-0"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"disabled"],[1,"fw-bold","mb-1"],[1,"mb-0"],[1,"list-group-item","text-center"],[1,"text-center","w-100","d-flex","justify-content-center","my-2"],[1,"mx-auto",2,"width","175px","height","175px",3,"data"],[1,"grey-text","small","mt-0","mb-1"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],[1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["type","text","placeholder","eg. 123456","autocomplete","one-time-code","autocapitalize","none","inputmode","numeric","pattern","[0-9]*",1,"form-control","custom-input",3,"formControl"],["href","javascript:void(0)",1,"ms-1","text-primary",3,"click"],[1,"fas","fa-check","green-text"],[1,"fas","fa-copy"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"]],template:function(l,i){l&1&&(r(0,"div",0)(1,"div",1)(2,"h5",2),m(3),o(4,"translate"),a(),r(5,"button",3),o(6,"translate"),_("click",function(){return i.dismissModal()}),a()(),r(7,"div",4)(8,"div",5),d(9,"i",6),a(),r(10,"ul",7)(11,"li"),m(12),o(13,"translate"),a(),C(14,Ne,3,3,"li"),a(),C(15,Fe,7,10,"ngb-alert",8),C(16,Ge,11,6,"ul",9),a(),r(17,"div",10)(18,"div",11),C(19,Le,4,6,"button",12),a(),r(20,"div",13),C(21,Re,4,6,"button",12),a(),r(22,"div",14),C(23,ze,3,4,"button",15),a()()()),l&2&&(e(3),u(s(4,9,"users.setup_2fa")),e(2),f("aria-label",s(6,11,"form.button_close")),e(7),u(s(13,13,"users.setup_2fa_warning")),e(2),h(i.timeDiffError()?-1:14),e(),h(i.timeDiffError()?15:-1),e(),h(i.timeDiffError()?-1:16),e(3),h(i.timeDiffError()?-1:19),e(2),h(i.timeDiffError()?21:-1),e(2),h(i.timeDiffError()?-1:23))},dependencies:[ne,Ee,G,j,P,ge,L,Z,M],encapsulation:2})}return n})();var De=(()=>{class n{$activeModal=p(I);$api=p(B);$toastr=p(F);$translate=p(k);modalData=p(ie);existingUsers=this.modalData.existingUsers;form=new q({username:new S("",[g.required]),name:new S("",[g.required]),password:new S("",[g.compose([g.required,g.minLength(4)])]),passwordConfirm:new S("",[g.required]),admin:new S(!0)},this.matchPassword);ngOnInit(){this.form.controls.username.addValidators(this.duplicateUsernameValidator.bind(this)),this.form.controls.username.updateValueAndValidity()}onSubmit(l){return w(this,arguments,function*({value:t}){try{yield this.$api.post("/users",t),this.$activeModal.close()}catch(i){this.$toastr.error(i.error?.message||i.message,this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}duplicateUsernameValidator(t){if(!t.value)return null;let l=t.value.trim();return l&&this.existingUsers.some(b=>b.username===l)?{duplicateUsername:!0}:null}matchPassword(t){let l=t.get("password")?.value,i=t.get("passwordConfirm")?.value;return l!==i?(t.get("passwordConfirm")?.setErrors({matchPassword:!0}),{matchPassword:!0}):null}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["ng-component"]],decls:63,vars:52,consts:[[1,"modal-content"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-user-plus","primary-text",2,"font-size","75px"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],["for","form-username",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["formControlName","username","type","text","id","form-username","autofocus","","autocomplete","username","autocapitalize","none",1,"form-control","custom-input"],["for","form-name",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","name","type","text","id","form-name","autocomplete","name",1,"form-control","custom-input"],["for","form-pass",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","password","type","password","autocomplete","new-password","id","form-pass",1,"form-control","custom-input"],["for","form-pass-confirm",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","passwordConfirm","type","password","autocomplete","new-password","id","form-pass-confirm",1,"form-control","custom-input"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"text-start"],[1,"text-end","grey-text","d-flex","align-items-center"],["formControlName","admin","type","checkbox","id","isAdmin",1,"rendux-input"],["for","isAdmin",1,"rendux-label","ms-3"],[1,"modal-footer","justify-content-between"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","submit",1,"btn","btn-primary",3,"disabled"]],template:function(l,i){l&1&&(r(0,"div",0)(1,"form",1),_("ngSubmit",function(){return i.onSubmit(i.form)}),r(2,"div",2)(3,"h5",3),m(4),o(5,"translate"),a(),r(6,"button",4),o(7,"translate"),_("click",function(){return i.dismissModal()}),a()(),r(8,"div",5)(9,"div",6),d(10,"i",7),a(),r(11,"ul",8)(12,"li",9)(13,"label",10),m(14),o(15,"translate"),d(16,"app-required-indicator"),a(),r(17,"div",11),d(18,"input",12),o(19,"translate"),a()(),r(20,"li",9)(21,"label",13),m(22),o(23,"translate"),d(24,"app-required-indicator"),a(),r(25,"div",11),d(26,"input",14),o(27,"translate"),a()(),r(28,"li",9)(29,"label",15),m(30),o(31,"translate"),d(32,"app-required-indicator"),a(),r(33,"div",11),d(34,"input",16),o(35,"translate"),a()(),r(36,"li",9)(37,"label",17),m(38),o(39,"translate"),d(40,"app-required-indicator"),a(),r(41,"div",11),d(42,"input",18),o(43,"translate"),a()(),r(44,"li",19)(45,"span",20),m(46),o(47,"translate"),d(48,"app-required-indicator"),a(),r(49,"div",21),d(50,"input",22),o(51,"translate"),d(52,"label",23),a()()()(),r(53,"div",24)(54,"div",20)(55,"button",25),_("click",function(){return i.dismissModal()}),m(56),o(57,"translate"),a()(),d(58,"div",26),r(59,"div",27)(60,"button",28),m(61),o(62,"translate"),a()()()()()),l&2&&(e(),E("formGroup",i.form),e(3),u(s(5,24,"users.title_add_user")),e(2),f("aria-label",s(7,26,"form.button_close")),e(8),c(" ",s(15,28,"users.label_username")),e(4),$("is-invalid",i.form.controls.username.touched&&i.form.controls.username.invalid),f("aria-label",s(19,30,"users.label_username")),e(4),c(" ",s(23,32,"users.label_full_name")),e(4),$("is-invalid",i.form.controls.name.touched&&i.form.controls.name.invalid),f("aria-label",s(27,34,"users.label_full_name")),e(4),c(" ",s(31,36,"users.label_password")),e(4),$("is-invalid",i.form.controls.password.touched&&i.form.controls.password.invalid),f("aria-label",s(35,38,"users.label_password")),e(4),c(" ",s(39,40,"users.label_confirm_password")),e(4),$("is-invalid",i.form.controls.passwordConfirm.touched&&i.form.controls.passwordConfirm.invalid),f("aria-label",s(43,42,"users.label_confirm_password")),e(4),c(" ",s(47,44,"users.label_admin_user")),e(4),f("aria-label",s(51,46,"users.label_admin_user")),e(6),c(" ",s(57,48,"form.button_close")," "),e(4),E("disabled",!i.form.valid),e(),c(" ",s(62,50,"form.button_save")," "))},dependencies:[G,Y,j,W,P,X,L,te,ee,ae,M],encapsulation:2})}return n})();function Oe(n,x){n&1&&d(0,"app-required-indicator")}function Je(n,x){if(n&1&&(r(0,"li",9)(1,"label",29),m(2),o(3,"translate"),d(4,"app-required-indicator"),a(),r(5,"div",11),d(6,"input",30),o(7,"translate"),a()()),n&2){let t=v();e(2),c(" ",s(3,4,"users.label_confirm_password")),e(4),$("is-invalid",t.form.controls.passwordConfirm.touched&&t.form.controls.passwordConfirm.invalid),f("aria-label",s(7,6,"users.label_confirm_password"))}}function Qe(n,x){n&1&&(r(0,"div",22)(1,"div",25),m(2),o(3,"translate"),a()()),n&2&&(e(2),u(s(3,1,"common.phrases.are_you_sure")))}var Te=(()=>{class n{$activeModal=p(I);$api=p(B);$auth=p(K);$toastr=p(F);$translate=p(k);modalData=p(R);user=this.modalData.user;existingUsers=this.modalData.existingUsers||[];isCurrentUser=y(!1);deleteMode=y(!1);initialFormValue={};form=new q({username:new S("",[g.required]),name:new S("",[g.required]),password:new S("",[g.minLength(4)]),passwordConfirm:new S(""),admin:new S(!0)},this.matchPassword);isLastAdmin=oe(()=>this.user?.admin?this.existingUsers.filter(l=>l.admin).length<=1:!1);canDelete=oe(()=>!this.isCurrentUser()&&!this.isLastAdmin());ngOnInit(){this.user&&(this.isCurrentUser.set(this.$auth.user.username===this.user.username),this.form.patchValue(this.user),this.initialFormValue=this.form.getRawValue(),this.form.controls.username.addValidators(this.duplicateUsernameValidator.bind(this)),this.form.controls.username.updateValueAndValidity(),this.isLastAdmin()&&this.form.controls.admin.disable())}onSubmit(l){return w(this,arguments,function*({value:t}){if(this.user){if(this.deleteMode()){try{yield this.$api.delete(`/users/${this.user.id}`),this.$activeModal.close()}catch(i){console.error(i),this.$toastr.error(i.error?.message||i.message,this.$translate.instant("toast.title_error"))}return}try{yield this.$api.patch(`/users/${this.user.id}`,t),this.$activeModal.close(),this.isCurrentUser()&&t.username!==this.$auth.user.username&&this.$auth.logout()}catch(i){console.error(i),this.$toastr.error(i.error?.message||i.message,this.$translate.instant("toast.title_error"))}}})}toggleDeleteMode(t){this.deleteMode.set(!this.deleteMode()),this.deleteMode()?this.form.disable():(this.form.enable(),this.isLastAdmin()&&this.form.controls.admin.disable()),t.target.blur()}isFormUnchanged(){return this.form.controls.password.value?!1:JSON.stringify(this.form.getRawValue())===JSON.stringify(this.initialFormValue)}duplicateUsernameValidator(t){if(!t.value)return null;let l=t.value.trim();return l&&this.existingUsers.some(b=>b.id!==this.user.id&&b.username===l)?{duplicateUsername:!0}:null}dismissModal(){this.$activeModal.dismiss("Dismiss")}matchPassword(t){let l=t.get("password")?.value,i=t.get("passwordConfirm")?.value;return l!==i?(t.get("passwordConfirm")?.setErrors({matchPassword:!0}),{matchPassword:!0}):null}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["ng-component"]],decls:60,vars:57,consts:[[1,"modal-content"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-user-pen","primary-text",2,"font-size","75px"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],["for","form-username",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["formControlName","username","type","text","id","form-username","autocomplete","off","autocapitalize","none",1,"form-control","custom-input"],["for","form-name",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","name","type","text","id","form-name","autocomplete","name",1,"form-control","custom-input"],["for","form-pass",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","password","type","password","autocomplete","new-password","id","form-pass",1,"form-control","custom-input"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"text-start"],[1,"text-end","grey-text","d-flex","align-items-center"],["type","checkbox","formControlName","admin","id","isAdmin",1,"rendux-input"],["for","isAdmin",1,"rendux-label","ms-3"],[1,"alert","alert-warning","mt-3","mb-0"],[1,"modal-footer","justify-content-between"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","button",1,"btn","btn-elegant","me-2",3,"click","disabled"],["type","submit",1,"btn",3,"disabled"],["for","form-pass-confirm",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","passwordConfirm","type","password","autocomplete","new-password","id","form-pass-confirm",1,"form-control","custom-input"]],template:function(l,i){l&1&&(r(0,"div",0)(1,"form",1),_("ngSubmit",function(){return i.onSubmit(i.form)}),r(2,"div",2)(3,"h5",3),m(4),o(5,"translate"),a(),r(6,"button",4),o(7,"translate"),_("click",function(){return i.dismissModal()}),a()(),r(8,"div",5)(9,"div",6),d(10,"i",7),a(),r(11,"ul",8)(12,"li",9)(13,"label",10),m(14),o(15,"translate"),d(16,"app-required-indicator"),a(),r(17,"div",11),d(18,"input",12),o(19,"translate"),a()(),r(20,"li",9)(21,"label",13),m(22),o(23,"translate"),d(24,"app-required-indicator"),a(),r(25,"div",11),d(26,"input",14),o(27,"translate"),a()(),r(28,"li",9)(29,"label",15),m(30),o(31,"translate"),C(32,Oe,1,0,"app-required-indicator"),a(),r(33,"div",11),d(34,"input",16),o(35,"translate"),a()(),C(36,Je,8,8,"li",9),r(37,"li",17)(38,"span",18),m(39),o(40,"translate"),d(41,"app-required-indicator"),a(),r(42,"div",19),d(43,"input",20),o(44,"translate"),d(45,"label",21),a()()(),C(46,Qe,4,3,"div",22),a(),r(47,"div",23)(48,"div",18)(49,"button",24),_("click",function(){return i.dismissModal()}),m(50),o(51,"translate"),a()(),d(52,"div",25),r(53,"div",26)(54,"button",27),o(55,"translate"),_("click",function(ke){return i.toggleDeleteMode(ke)}),d(56,"i"),a(),r(57,"button",28),m(58),o(59,"translate"),a()()()()()),l&2&&(e(),E("formGroup",i.form),e(3),u(s(5,31,"users.title_edit_user")),e(2),f("aria-label",s(7,33,"form.button_close")),e(5),ue("opacity",i.deleteMode()?"0.25":"1"),e(3),c(" ",s(15,35,"users.label_username")),e(4),$("is-invalid",i.form.controls.username.touched&&i.form.controls.username.invalid),f("aria-label",s(19,37,"users.label_username")),e(4),c(" ",s(23,39,"users.label_full_name")),e(4),$("is-invalid",i.form.controls.name.touched&&i.form.controls.name.invalid),f("aria-label",s(27,41,"users.label_full_name")),e(4),c(" ",s(31,43,"users.label_new_password")),e(2),h(i.form.controls.password.value?32:-1),e(2),$("is-invalid",i.form.controls.password.touched&&i.form.controls.password.invalid),f("aria-label",s(35,45,"users.label_new_password")),e(2),h(i.form.controls.password.value?36:-1),e(3),c(" ",s(40,47,"users.label_admin_user")),e(4),f("aria-label",s(44,49,"users.label_admin_user")),e(3),h(i.deleteMode()?46:-1),e(4),c(" ",s(51,51,"form.button_close")," "),e(4),E("disabled",!i.canDelete()),f("aria-label",s(55,53,"users.button_delete_user")),e(2),Q(i.deleteMode()?"fas fa-undo":"fas fa-trash"),e(),Q(i.deleteMode()?"btn-danger":"btn-primary"),E("disabled",!i.deleteMode()&&(!i.form.valid||i.isFormUnchanged())),e(),c(" ",s(59,55,i.deleteMode()?"form.button_delete":"form.button_save")," "))},dependencies:[G,Y,j,W,P,X,L,te,ee,ae,M],encapsulation:2})}return n})();var $e=(()=>{class n{$activeModal=p(I);dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["ng-component"]],decls:46,vars:36,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fa","fa-question-circle-o","primary-text",2,"font-size","75px"],[1,"ms-2"],[1,"mb-0"],[1,"mb-2","grey-text"],[1,"modal-footer","justify-content-between"],[1,"text-start"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-end"]],template:function(l,i){l&1&&(r(0,"div",0)(1,"form")(2,"div",1)(3,"h5",2),m(4),o(5,"translate"),a(),r(6,"button",3),o(7,"translate"),_("click",function(){return i.dismissModal()}),a()(),r(8,"div",4)(9,"div",5),d(10,"i",6),a(),r(11,"h5",7),m(12),o(13,"translate"),a(),r(14,"ul",8)(15,"li"),m(16),o(17,"translate"),a(),r(18,"ul",9)(19,"li"),m(20),o(21,"translate"),a(),r(22,"li"),m(23),o(24,"translate"),a(),r(25,"li"),m(26),o(27,"translate"),o(28,"translate"),a(),r(29,"li"),m(30),o(31,"translate"),a(),r(32,"li"),m(33),o(34,"translate"),a()(),r(35,"li"),m(36),o(37,"translate"),a()(),d(38,"app-support-banner"),a(),r(39,"div",10),d(40,"div",11),r(41,"div",12)(42,"button",13),_("click",function(){return i.dismissModal()}),m(43),o(44,"translate"),a()(),d(45,"div",14),a()()()),l&2&&(e(4),u(s(5,12,"support.title")),e(2),f("aria-label",s(7,14,"form.button_close")),e(6),u(s(13,16,"users.title_users")),e(4),u(s(17,18,"users.support.acc_1")),e(4),u(s(21,20,"menu.label_status")),e(3),u(s(24,22,"menu.label_plugins")),e(3),fe("",s(27,24,"menu.label_accessories")," (",s(28,26,"users.support.control"),")"),e(4),u(s(31,28,"menu.linux.label_logs")),e(3),u(s(34,30,"support.title")),e(3),u(s(37,32,"users.support.acc_2")),e(7),c(" ",s(44,34,"form.button_close")," "))},dependencies:[Se,M],encapsulation:2})}return n})();var He=(n,x)=>({"fa-user-secret":n,"fa-user":x});function Ke(n,x){if(n&1){let t=N();D(0,"button",21),O("click",function(){A(t);let i=v(2).$implicit,b=v();return V(b.disable2fa(i))}),m(1),o(2,"translate"),T()}if(n&2){let t=v(2).$implicit,l=v();re("disabled",t.username!==l.username),e(),c(" ",s(2,2,"users.setup_2fa_disable")," ")}}function We(n,x){if(n&1){let t=N();D(0,"button",22),O("click",function(){A(t);let i=v(2).$implicit,b=v();return V(b.setup2fa(i))}),m(1),o(2,"translate"),T()}if(n&2){let t=v(2).$implicit,l=v();re("disabled",t.username!==l.username),e(),c(" ",s(2,2,"users.setup_2fa")," ")}}function Xe(n,x){if(n&1&&C(0,Ke,3,4,"button",19)(1,We,3,4,"button",20),n&2){let t=v().$implicit;h(t.otpActive?0:1)}}function Ye(n,x){n&1&&z(0,"div")}function Ze(n,x){if(n&1){let t=N();D(0,"div",9)(1,"div",10)(2,"div",11)(3,"div",12)(4,"span",13)(5,"h4"),m(6),T(),D(7,"h5",14),z(8,"i",15),m(9),T()()(),D(10,"div",16),C(11,Xe,2,1)(12,Ye,1,0,"div"),D(13,"div")(14,"button",17),o(15,"translate"),O("click",function(){let i=A(t).$implicit,b=v();return V(b.openEditUser(i))}),z(16,"i",18),T()()()()()()}if(n&2){let t=x.$implicit;e(6),u(t.name),e(2),Q(_e(8,He,t.admin,!t.admin)),e(),c(" ",t.username," "),e(2),h(t.admin?11:12),e(3),f("aria-label",s(15,6,"form.button_edit"))}}var ci=(()=>{class n{injector=p(le);destroyRef=p(me);$api=p(B);$auth=p(K);$modal=p(we);$route=p(Ce);$settings=p(he);$translate=p(k);homebridgeUsers=y([]);username=this.$auth.user.username;isAdmin=this.$auth.user.admin;ngOnInit(){let t=this.$translate.instant("users.title_users");this.$settings.setPageTitle(t),this.$route.data.pipe(xe(this.destroyRef)).subscribe(l=>{this.homebridgeUsers.set(l.homebridgeUsers)})}reloadUsers(){return w(this,null,function*(){let t=yield this.$api.get("/users");this.homebridgeUsers.set(t)})}openAddNewUser(){return w(this,null,function*(){let t=J([{provide:ie,useValue:{existingUsers:this.homebridgeUsers()}}],this.injector),l=this.$modal.open(De,{size:"lg",backdrop:"static",injector:t});try{yield l.result,this.reloadUsers()}catch{}})}openEditUser(t){return w(this,null,function*(){let l=J([{provide:R,useValue:{user:t,existingUsers:this.homebridgeUsers()}}],this.injector),i=this.$modal.open(Te,{size:"lg",backdrop:"static",injector:l});try{yield i.result,this.reloadUsers()}catch{}})}setup2fa(t){return w(this,null,function*(){let l=J([{provide:R,useValue:{user:t}}],this.injector),i=this.$modal.open(Me,{size:"lg",backdrop:"static",injector:l});try{yield i.result,this.reloadUsers()}catch{}})}disable2fa(t){return w(this,null,function*(){let l=J([{provide:R,useValue:{user:t}}],this.injector),i=this.$modal.open(ye,{size:"lg",backdrop:"static",injector:l});try{yield i.result,this.reloadUsers()}catch{}})}openSupport(){this.$modal.open($e,{size:"lg",backdrop:"static"})}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["app-users"]],decls:15,vars:9,consts:[[1,"row","mb-3"],[1,"col-6"],[1,"primary-text","m-0"],[1,"col-6","text-end"],[1,"btn","btn-elegant","waves-effect","m-0","me-2",3,"click"],[1,"fas","fa-user-plus"],["type","button",1,"btn","btn-elegant","my-0","me-0",3,"click"],[1,"fa","fa-question-circle-o"],[1,"row"],[1,"col-md-6","mb-4"],[1,"card","card-body"],[1,"d-flex","flex-column"],[1,"d-flex","flex-row","mb-3"],[1,"me-auto","my-0"],[1,"small","text-truncate","grey-text"],[1,"fas"],[1,"d-flex","flex-row","justify-content-between"],[1,"btn","btn-elegant","m-0",3,"click"],[1,"fas","fa-user-pen"],[1,"btn","btn-elegant","m-0",3,"disabled"],[1,"btn","btn-primary","m-0",3,"disabled"],[1,"btn","btn-elegant","m-0",3,"click","disabled"],[1,"btn","btn-primary","m-0",3,"click","disabled"]],template:function(l,i){l&1&&(D(0,"div",0)(1,"div",1)(2,"h3",2),m(3),o(4,"translate"),T()(),D(5,"div",3)(6,"button",4),o(7,"translate"),O("click",function(){return i.openAddNewUser()}),z(8,"i",5),T(),D(9,"button",6),o(10,"translate"),O("click",function(){return i.openSupport()}),z(11,"i",7),T()()(),D(12,"div",8),pe(13,Ze,17,11,"div",9,de),T()),l&2&&(e(3),u(s(4,3,"users.title_users")),e(3),f("aria-label",s(7,5,"users.button_add_user")),e(3),f("aria-label",s(10,7,"support.title")),e(4),ce(i.homebridgeUsers()))},dependencies:[M],encapsulation:2})}return n})();export{ci as UsersComponent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as H}from"./chunk-HOWYXHPL.js";import{s as k}from"./chunk-BNNKKGLH.js";import{D as h}from"./chunk-
|
|
1
|
+
import{a as H}from"./chunk-HOWYXHPL.js";import{s as k}from"./chunk-BNNKKGLH.js";import{D as h}from"./chunk-JMPDHTJK.js";import{Ab as c,Dc as b,Ec as _,Jb as o,Kb as a,Lb as m,Rb as y,Sb as f,Ua as r,Yb as u,Za as i,Zb as l,aa as v,ga as L,ha as D,jc as E,kc as C,lc as B,mc as M,nb as T,uc as g,yb as p,zb as d}from"./chunk-JJ5CEM72.js";function S(t,x){if(t&1&&m(0,"i",14),t&2){let e=l();E(g("fas ",e.faIconClass," mb-3"))}}function w(t,x){if(t&1&&m(0,"p",7),t&2){let e=l();f("innerHTML",e.message2,r)}}function z(t,x){if(t&1&&m(0,"p",7),t&2){let e=l();f("innerHTML",e.message3,r)}}function A(t,x){if(t&1){let e=y();o(0,"button",15),u("click",function(){L(e);let n=l();return D(n.closeModal())}),C(1),a()}if(t&2){let e=l();E(g("btn ",e.confirmButtonClass||"btn-primary")),i(),M(" ",e.confirmButtonLabel," ")}}var O=(()=>{class t{$activeModal=v(k);modalData=v(H);title=this.modalData.title;message=this.modalData.message;message2=this.modalData.message2;message3=this.modalData.message3;confirmButtonLabel=this.modalData.confirmButtonLabel;confirmButtonClass=this.modalData.confirmButtonClass;faIconClass=this.modalData.faIconClass;ctaButtonLabel=this.modalData.ctaButtonLabel;ctaButtonLink=this.modalData.ctaButtonLink;dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(){this.$activeModal.close()}static \u0275fac=function(s){return new(s||t)};static \u0275cmp=T({type:t,selectors:[["ng-component"]],decls:20,vars:16,consts:[["role","dialog","aria-modal","true",1,"modal-content"],[1,"modal-header"],["id","confirm-modal-title",1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body","text-center"],[2,"font-size","75px",3,"class"],[1,"mb-0","text-center",3,"innerHTML"],[1,"mt-2","mb-0","text-center",3,"innerHTML"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",3,"class"],[2,"font-size","75px"],["type","button","data-bs-dismiss","modal",3,"click"]],template:function(s,n){s&1&&(o(0,"div",0)(1,"div",1)(2,"h5",2),C(3),a(),o(4,"button",3),b(5,"translate"),u("click",function(){return n.dismissModal()}),a()(),o(6,"div",4),d(7,S,1,3,"i",5),m(8,"p",6),d(9,w,1,1,"p",7),d(10,z,1,1,"p",7),a(),o(11,"div",8)(12,"div",9)(13,"button",10),b(14,"translate"),u("click",function(){return n.dismissModal()}),C(15),b(16,"translate"),a()(),m(17,"div",11),o(18,"div",12),d(19,A,2,4,"button",13),a()()()),s&2&&(p("aria-labelledby","confirm-modal-title"),i(3),B(n.title),i(),p("aria-label",_(5,10,"form.button_close")),i(3),c(n.faIconClass?7:-1),i(),f("innerHTML",n.message,r),i(),c(n.message2?9:-1),i(),c(n.message3?10:-1),i(3),p("aria-label",_(14,12,"form.button_cancel")),i(2),M(" ",_(16,14,"form.button_cancel")," "),i(4),c(n.confirmButtonLabel?19:-1))},dependencies:[h],encapsulation:2})}return t})();export{O as a};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as b}from"./chunk-
|
|
1
|
+
import{a as b}from"./chunk-OMEQ6FGM.js";import{Lb as f,W as p,_,aa as d,ba as M,bc as w,cc as C,dc as y,nb as a,oa as v,pa as h,sb as u,v as c,vc as E,ya as l}from"./chunk-JJ5CEM72.js";var q=["editorContainer"],I="[_nghost-%COMP%]{display:block;height:200px}.editor-container[_ngcontent-%COMP%]{width:100%;height:98%}",D=new _("NGX_MONACO_EDITOR_CONFIG"),O=!1,N,R=(()=>{class t{constructor(){this.config=d(D),this.onInit=new v,this._insideNg=!1}set insideNg(e){this._insideNg=e,this._editor&&(this._editor.dispose(),this.initMonaco(this._options,this.insideNg))}get insideNg(){return this._insideNg}ngAfterViewInit(){O?N.then(()=>{this.initMonaco(this._options,this.insideNg)}):(O=!0,N=new Promise(e=>{let i=this.config.baseUrl;if((i==="assets"||!i)&&(i="./assets/monaco/min/vs"),typeof window.monaco=="object"){this.initMonaco(this._options,this.insideNg),e();return}let o=s=>{let g=s||window.require,m={paths:{vs:`${i}`}};Object.assign(m,this.config.requireConfig||{}),g.config(m),g(["vs/editor/editor.main"],()=>{typeof this.config.onMonacoLoad=="function"&&this.config.onMonacoLoad(),this.initMonaco(this._options,this.insideNg),e()})};if(this.config.monacoRequire)o(this.config.monacoRequire);else if(window.require)if(window.require.config)o();else{var n=`${i}/loader.js`,r=new XMLHttpRequest;r.addEventListener("load",()=>{let s=document.createElement("script");s.type="text/javascript",s.text=["var nodeRequire = require;",r.responseText.replace('"use strict";',""),"var monacoAmdRequire = require;","require = nodeRequire;","require.nodeRequire = require;"].join(`
|
|
2
2
|
`),document.body.appendChild(s),o(window.monacoAmdRequire)}),r.open("GET",n),r.send()}else{let s=document.createElement("script");s.type="text/javascript",s.src=`${i}/loader.js`,s.addEventListener("load",()=>{o()}),document.body.appendChild(s)}}))}ngOnDestroy(){this._windowResizeSubscription&&this._windowResizeSubscription.unsubscribe(),this._editor&&(this._editor.dispose(),this._editor=void 0)}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=a({type:t,selectors:[["ng-component"]],viewQuery:function(i,o){if(i&1&&w(q,7),i&2){let n;C(n=y())&&(o._editorContainer=n.first)}},inputs:{insideNg:"insideNg"},outputs:{onInit:"onInit"},standalone:!1,decls:0,vars:0,template:function(i,o){},encapsulation:2})}}return t})(),k=(()=>{class t extends R{constructor(){super(...arguments),this.zone=d(h),this._value="",this.propagateChange=e=>{},this.onTouched=()=>{}}set options(e){this._options=Object.assign({},this.config.defaultOptions,e),this._editor&&(this._editor.dispose(),this.initMonaco(this._options,this.insideNg))}get options(){return this._options}set model(e){this.options.model=e,this._editor&&(this._editor.dispose(),this.initMonaco(this.options,this.insideNg))}writeValue(e){this._value=e||"",setTimeout(()=>{this._editor&&!this.options.model&&this._editor.setValue(this._value)})}registerOnChange(e){this.propagateChange=e}registerOnTouched(e){this.onTouched=e}setDisabledState(e){this.options.readOnly=e||this._options.readOnly}initMonaco(e,i){let o=!!e.model;if(o){let n=monaco.editor.getModel(e.model.uri||"");n?(e.model=n,e.model.setValue(this._value)):e.model=monaco.editor.createModel(e.model.value,e.model.language,e.model.uri)}i?this._editor=monaco.editor.create(this._editorContainer.nativeElement,e):this.zone.runOutsideAngular(()=>{this._editor=monaco.editor.create(this._editorContainer.nativeElement,e)}),o||this._editor.setValue(this._value),this._editor.onDidChangeModelContent(n=>{let r=this._editor.getValue();this.zone.run(()=>{this.propagateChange(r),this._value=r})}),this._editor.onDidBlurEditorWidget(()=>{this.onTouched()}),this._editor.setTheme=n=>{this.options.theme=n,monaco.editor.setTheme(n)},this._windowResizeSubscription&&this._windowResizeSubscription.unsubscribe(),this._windowResizeSubscription=c(window,"resize").subscribe(()=>this._editor.layout()),this.onInit.emit(this._editor)}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=l(t)))(o||t)}})()}static{this.\u0275cmp=a({type:t,selectors:[["ngx-monaco-editor"]],inputs:{options:"options",model:"model"},features:[E([{provide:b,useExisting:p(()=>t),multi:!0}]),u],decls:2,vars:0,consts:[["editorContainer",""],[1,"editor-container"]],template:function(i,o){i&1&&f(0,"div",1,0)},styles:["[_nghost-%COMP%]{display:block;height:200px}.editor-container[_ngcontent-%COMP%]{width:100%;height:98%}"],changeDetection:0})}}return t})(),Q=(()=>{class t extends R{constructor(){super(...arguments),this.zone=d(h)}set options(e){this._options=Object.assign({},this.config.defaultOptions,e),this._editor&&(this._editor.dispose(),this.initMonaco(this._options,this.insideNg))}get options(){return this._options}set originalModel(e){this._originalModel=e,this._editor&&(this._editor.dispose(),this.initMonaco(this.options,this.insideNg))}set modifiedModel(e){this._modifiedModel=e,this._editor&&(this._editor.dispose(),this.initMonaco(this.options,this.insideNg))}initMonaco(e,i){if(!this._originalModel||!this._modifiedModel)throw new Error("originalModel or modifiedModel not found for ngx-monaco-diff-editor");this._originalModel.language=this._originalModel.language||e.language,this._modifiedModel.language=this._modifiedModel.language||e.language;let o=monaco.editor.createModel(this._originalModel.code,this._originalModel.language),n=monaco.editor.createModel(this._modifiedModel.code,this._modifiedModel.language);this._editorContainer.nativeElement.innerHTML="";let r=e.theme;i?this._editor=monaco.editor.createDiffEditor(this._editorContainer.nativeElement,e):this.zone.runOutsideAngular(()=>{this._editor=monaco.editor.createDiffEditor(this._editorContainer.nativeElement,e)}),e.theme=r,this._editor.setModel({original:o,modified:n}),this._windowResizeSubscription&&this._windowResizeSubscription.unsubscribe(),this._windowResizeSubscription=c(window,"resize").subscribe(()=>this._editor.layout()),this.onInit.emit(this._editor)}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=l(t)))(o||t)}})()}static{this.\u0275cmp=a({type:t,selectors:[["ngx-monaco-diff-editor"]],inputs:{options:"options",originalModel:"originalModel",modifiedModel:"modifiedModel"},features:[u],decls:2,vars:0,consts:[["editorContainer",""],[1,"editor-container"]],template:function(i,o){i&1&&f(0,"div",1,0)},styles:[I],changeDetection:0})}}return t})();function U(t={}){return M([{provide:D,useValue:t}])}export{k as a,Q as b,U as c};
|