UNPKG

homebridge-config-ui-x

Version:

A web based management, configuration and control platform for Homebridge.

2 lines (1 loc) • 29.9 kB
import{a as we}from"./chunk-4IBV7BRV.js";import{a as O}from"./chunk-XDYDSLCQ.js";import{a as Ee}from"./chunk-I5W4KUW4.js";import{n as R,o as ie}from"./chunk-CG4JSQF7.js";import{a as ne}from"./chunk-BHEY3G3X.js";import{s as I,t as ge}from"./chunk-YATM6BZO.js";import{c as ve}from"./chunk-ODMFCOQJ.js";import{a as _e}from"./chunk-XPK2EQJA.js";import{b as xe,c as Q}from"./chunk-2GN26TCR.js";import{B as Ce,C as G,D as L,b as W,c as P,d as y,e as q,f as X,g as j,j as S,m as Y,q as Z,r as ee,s as te}from"./chunk-ORSKS7BY.js";import{a as Be,b as he}from"./chunk-4NRNA47I.js";import{C as k,D as M,F,I as B}from"./chunk-QCMOCU6Q.js";import{Ab as C,Cb as me,Db as pe,Dc as o,Eb as ce,Ec as s,Fb as E,Fc as be,Gb as r,Hb as n,Ib as m,Jb as $,Kb as T,Lb as z,Lc as oe,Sb as V,Tb as ae,Xb as _,Ya as i,Yb as J,Zb as v,aa as p,ea as le,ga as A,ha as N,ic as g,jc as re,kc as d,lb as H,lc as u,ma as de,mb as D,mc as c,nc as ue,sa as U,xb as b,zb as x,zc as fe}from"./chunk-ZMC752RO.js";import{g as ke,h as w}from"./chunk-B4AJQJMI.js";function Ie(a,h){a&1&&(r(0,"ngb-alert",13)(1,"p",20),d(2),o(3,"translate"),n()()),a&2&&(E("dismissible",!1),i(2),u(s(3,2,"login.invalid_password")))}var ye=(()=>{class a{$activeModal=p(I);$api=p(B);$auth=p(Q);$notification=p(xe);$toastr=p(F);$translate=p(k);invalidCredentials=U(!1);formGroup=new j({password:new S("",[y.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(),this.$toastr.success(this.$translate.instant("users.setup_2fa_disable_success"),this.$translate.instant("toast.title_success")),this.$notification.legacyOtpDetected.set(!1);try{yield this.$auth.refreshSession()}catch(e){console.error("Failed to refresh session after disabling 2FA:",e)}}catch(e){this.formGroup.setValue({password:""}),this.invalidCredentials.set(!0)}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(l){return new(l||a)};static \u0275cmp=D({type:a,selectors:[["app-users-2fa-disable"]],decls:35,vars:29,consts:[[1,"modal-content","modal-content-min-h"],[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","icon-xl"],[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"],["for","disable-2fa-password",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["id","disable-2fa-password","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,t){l&1&&(r(0,"div",0)(1,"div",1)(2,"h5",2),d(3),o(4,"translate"),n(),r(5,"button",3),o(6,"translate"),_("click",function(){return t.dismissModal()}),n()(),r(7,"div",4)(8,"div",5),m(9,"i",6),n(),r(10,"ul",7)(11,"li"),d(12),o(13,"translate"),n()(),r(14,"ul",8)(15,"li",9)(16,"label",10),d(17),o(18,"translate"),m(19,"app-required-indicator"),n(),r(20,"div",11),m(21,"input",12),o(22,"translate"),n()()(),x(23,Ie,4,4,"ngb-alert",13),n(),r(24,"div",14)(25,"div",15)(26,"button",16),o(27,"translate"),_("click",function(){return t.dismissModal()}),d(28),o(29,"translate"),n()(),m(30,"div",17),r(31,"div",18)(32,"button",19),_("click",function(){return t.disable2fa()}),d(33),o(34,"translate"),n()()()()),l&2&&(i(3),u(s(4,13,"users.setup_2fa_disable")),i(2),b("aria-label",s(6,15,"form.button_close")),i(7),u(s(13,17,"users.setup_2fa_disable_current_password")),i(5),c(" ",s(18,19,"users.label_password")),i(4),g("is-invalid",t.formGroup.controls.password.touched&&t.formGroup.controls.password.invalid),E("formControl",t.formGroup.controls.password)("placeholder",s(22,21,"users.label_password")),i(2),C(t.invalidCredentials()&&!t.formGroup.controls.password.value?23:-1),i(3),b("aria-label",s(27,23,"form.button_close")),i(2),c(" ",s(29,25,"form.button_close")," "),i(4),E("disabled",t.formGroup.invalid),i(),c(" ",s(34,27,"form.button_continue")," "))},dependencies:[G,P,q,L,Z,ne,O,M],styles:[".modal-content-min-h[_ngcontent-%COMP%]{min-height:300px}"],changeDetection:0})}return a})();var Se=ke(Be(),1);var Ae=a=>({timeDiffError:a});function Ne(a,h){a&1&&(r(0,"li"),d(1),o(2,"translate"),n()),a&2&&(i(),u(s(2,1,"users.setup_2fa_scan_qr_code")))}function Ve(a,h){if(a&1&&(r(0,"ngb-alert",8)(1,"p",16),d(2),o(3,"translate"),n(),r(4,"p",17),d(5),o(6,"translate"),n()()),a&2){let e=v();E("dismissible",!1),i(2),u(s(3,3,"users.setup_2fa_cannot_setup_2fa")),i(3),u(be(6,5,"users.setup_2fa_server_time_out",fe(8,Ae,e.timeDiffError())))}}function Fe(a,h){a&1&&m(0,"i",27)}function Pe(a,h){a&1&&m(0,"i",28)}function qe(a,h){if(a&1){let e=V();r(0,"div",21),d(1),o(2,"translate"),m(3,"br"),d(4),r(5,"a",26),_("click",function(){A(e);let t=v(2);return N(t.copySecretToClipboard())}),x(6,Fe,1,0,"i",27)(7,Pe,1,0,"i",28),n()()}if(a&2){let e=v(2);i(),c(" ",s(2,3,"users.setup_2fa_scan_qr_manual")),i(3),c(" ",e.otpSecret()," "),i(2),C(e.secretCopied()?6:7)}}function je(a,h){if(a&1&&(r(0,"ul",9)(1,"li",18)(2,"div",19),m(3,"app-qrcode",20),n(),x(4,qe,8,5,"div",21),n(),r(5,"li",22)(6,"label",23),d(7),o(8,"translate"),m(9,"app-required-indicator"),n(),r(10,"div",24),m(11,"input",25),n()()()),a&2){let e=v();i(3),E("data",e.otpString()),i(),C(e.otpSecret()?4:-1),i(3),c(" ",s(8,6,"users.setup_2fa_enter_code")),i(4),g("is-invalid",e.formGroup.controls.code.touched&&e.formGroup.controls.code.invalid),E("formControl",e.formGroup.controls.code)}}function Ge(a,h){if(a&1){let e=V();r(0,"button",29),o(1,"translate"),_("click",function(){A(e);let t=v();return N(t.dismissModal())}),d(2),o(3,"translate"),n()}a&2&&(b("aria-label",s(1,2,"form.button_close")),i(2),c(" ",s(3,4,"form.button_close")," "))}function Le(a,h){if(a&1){let e=V();r(0,"button",29),o(1,"translate"),_("click",function(){A(e);let t=v();return N(t.dismissModal())}),d(2),o(3,"translate"),n()}a&2&&(b("aria-label",s(1,2,"form.button_close")),i(2),c(" ",s(3,4,"form.button_close")," "))}function Re(a,h){if(a&1){let e=V();r(0,"button",30),_("click",function(){A(e);let t=v();return N(t.enable2fa())}),d(1),o(2,"translate"),n()}if(a&2){let e=v();E("disabled",e.formGroup.invalid),i(),c(" ",s(2,2,"form.button_continue")," ")}}var Ue=(()=>{class a{$activeModal=p(I);$api=p(B);$toastr=p(F);$translate=p(k);modalData=p(R);user=this.modalData.user;timeDiffError=U(null);otpString=U(void 0);otpSecret=U(void 0);secretCopied=U(!1);copyTimeout=null;formGroup=new j({code:new S("",[y.required,y.minLength(6),y.maxLength(6)])});ngOnInit(){this.initialize()}initialize(){return w(this,null,function*(){try{let e=yield this.$api.post("/users/otp/setup",{});this.checkTimeDiff(e.timestamp),this.timeDiffError()||(this.otpString.set(e.otpauth),this.otpSecret.set(new URL(e.otpauth).searchParams.get("secret")||""))}catch(e){this.$activeModal.dismiss(),console.error(e),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(e){console.error(e),this.$toastr.error(this.$translate.instant("users.setup_2fa_activate_error"),this.$translate.instant("toast.title_error"))}})}copySecretToClipboard(){return w(this,null,function*(){let e=this.otpSecret();e&&(yield navigator.clipboard.writeText(e),this.secretCopied.set(!0),this.copyTimeout&&clearTimeout(this.copyTimeout),this.copyTimeout=setTimeout(()=>{this.secretCopied.set(!1)},3e3))})}dismissModal(){this.$activeModal.dismiss("Dismiss")}checkTimeDiff(e){let l=(0,Se.default)(e).diff(new Date,"millisecond");l<-5e3||l>5e3?this.timeDiffError.set(l):this.timeDiffError.set(null)}static \u0275fac=function(l){return new(l||a)};static \u0275cmp=D({type:a,selectors:[["app-users-2fa-enable"]],decls:24,vars:14,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","icon-xl"],[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","qrcode-size",3,"data"],[1,"grey-text","small","mt-0","mb-1"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],["for","enable-2fa-code",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["id","enable-2fa-code","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,t){l&1&&(r(0,"div",0)(1,"div",1)(2,"h5",2),d(3),o(4,"translate"),n(),r(5,"button",3),o(6,"translate"),_("click",function(){return t.dismissModal()}),n()(),r(7,"div",4)(8,"div",5),m(9,"i",6),n(),r(10,"ul",7)(11,"li"),d(12),o(13,"translate"),n(),x(14,Ne,3,3,"li"),n(),x(15,Ve,7,10,"ngb-alert",8)(16,je,12,8,"ul",9),n(),r(17,"div",10)(18,"div",11),x(19,Ge,4,6,"button",12),n(),r(20,"div",13),x(21,Le,4,6,"button",12),n(),r(22,"div",14),x(23,Re,3,4,"button",15),n()()()),l&2&&(i(3),u(s(4,8,"users.setup_2fa")),i(2),b("aria-label",s(6,10,"form.button_close")),i(7),u(s(13,12,"users.setup_2fa_warning")),i(2),C(t.timeDiffError()?-1:14),i(),C(t.timeDiffError()?15:16),i(4),C(t.timeDiffError()?-1:19),i(2),C(t.timeDiffError()?21:-1),i(2),C(t.timeDiffError()?-1:23))},dependencies:[ne,we,G,P,q,Ce,L,Z,O,M],styles:[".qrcode-size[_ngcontent-%COMP%]{width:175px;height:175px}"],changeDetection:0})}return a})();var De=(()=>{class a{$activeModal=p(I);$api=p(B);$toastr=p(F);$translate=p(k);modalData=p(ie);existingUsers=this.modalData.existingUsers;form=new j({username:new S("",{nonNullable:!0,validators:[y.required]}),name:new S("",{nonNullable:!0,validators:[y.required]}),password:new S("",{nonNullable:!0,validators:[y.required,y.minLength(4)]}),passwordConfirm:new S("",{nonNullable:!0,validators:[y.required]}),admin:new S(!0,{nonNullable:!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:e}){try{yield this.$api.post("/users",e),this.$activeModal.close()}catch(t){this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}duplicateUsernameValidator(e){if(!e.value)return null;let l=e.value.trim();return l&&this.existingUsers.some(f=>f.username===l)?{duplicateUsername:!0}:null}matchPassword(e){let l=e.get("password")?.value,t=e.get("passwordConfirm")?.value;return l!==t?(e.get("passwordConfirm")?.setErrors({matchPassword:!0}),{matchPassword:!0}):null}static \u0275fac=function(l){return new(l||a)};static \u0275cmp=D({type:a,selectors:[["app-users-add"]],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-4"],[1,"fas","fa-user-plus","primary-text","icon-xl"],[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","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,t){l&1&&(r(0,"div",0)(1,"form",1),_("ngSubmit",function(){return t.onSubmit(t.form)}),r(2,"div",2)(3,"h5",3),d(4),o(5,"translate"),n(),r(6,"button",4),o(7,"translate"),_("click",function(){return t.dismissModal()}),n()(),r(8,"div",5)(9,"div",6),m(10,"i",7),n(),r(11,"ul",8)(12,"li",9)(13,"label",10),d(14),o(15,"translate"),m(16,"app-required-indicator"),n(),r(17,"div",11),m(18,"input",12),o(19,"translate"),n()(),r(20,"li",9)(21,"label",13),d(22),o(23,"translate"),m(24,"app-required-indicator"),n(),r(25,"div",11),m(26,"input",14),o(27,"translate"),n()(),r(28,"li",9)(29,"label",15),d(30),o(31,"translate"),m(32,"app-required-indicator"),n(),r(33,"div",11),m(34,"input",16),o(35,"translate"),n()(),r(36,"li",9)(37,"label",17),d(38),o(39,"translate"),m(40,"app-required-indicator"),n(),r(41,"div",11),m(42,"input",18),o(43,"translate"),n()(),r(44,"li",19)(45,"span",20),d(46),o(47,"translate"),m(48,"app-required-indicator"),n(),r(49,"div",21),m(50,"input",22),o(51,"translate"),m(52,"label",23),n()()()(),r(53,"div",24)(54,"div",20)(55,"button",25),_("click",function(){return t.dismissModal()}),d(56),o(57,"translate"),n()(),m(58,"div",26),r(59,"div",27)(60,"button",28),d(61),o(62,"translate"),n()()()()()),l&2&&(i(),E("formGroup",t.form),i(3),u(s(5,24,"users.title_add_user")),i(2),b("aria-label",s(7,26,"form.button_close")),i(8),c(" ",s(15,28,"users.label_username")),i(4),g("is-invalid",t.form.controls.username.touched&&t.form.controls.username.invalid),b("aria-label",s(19,30,"users.label_username")),i(4),c(" ",s(23,32,"users.label_full_name")),i(4),g("is-invalid",t.form.controls.name.touched&&t.form.controls.name.invalid),b("aria-label",s(27,34,"users.label_full_name")),i(4),c(" ",s(31,36,"users.label_password")),i(4),g("is-invalid",t.form.controls.password.touched&&t.form.controls.password.invalid),b("aria-label",s(35,38,"users.label_password")),i(4),c(" ",s(39,40,"users.label_confirm_password")),i(4),g("is-invalid",t.form.controls.passwordConfirm.touched&&t.form.controls.passwordConfirm.invalid),b("aria-label",s(43,42,"users.label_confirm_password")),i(4),u(s(47,44,"users.label_admin_user")),i(4),b("aria-label",s(51,46,"users.label_admin_user")),i(6),c(" ",s(57,48,"form.button_close")," "),i(4),E("disabled",!t.form.valid),i(),c(" ",s(62,50,"form.button_save")," "))},dependencies:[G,Y,P,W,q,X,L,te,ee,O,M],encapsulation:2,changeDetection:0})}return a})();function Oe(a,h){a&1&&m(0,"app-required-indicator")}function ze(a,h){if(a&1&&(r(0,"li",9)(1,"label",29),d(2),o(3,"translate"),m(4,"app-required-indicator"),n(),r(5,"div",11),m(6,"input",30),o(7,"translate"),n()()),a&2){let e=v();i(2),c(" ",s(3,4,"users.label_confirm_password")),i(4),g("is-invalid",e.form.controls.passwordConfirm.touched&&e.form.controls.passwordConfirm.invalid),b("aria-label",s(7,6,"users.label_confirm_password"))}}function Je(a,h){a&1&&(r(0,"div",22)(1,"div",25),d(2),o(3,"translate"),n()()),a&2&&(i(2),u(s(3,1,"common.phrases.are_you_sure")))}var Me=(()=>{class a{$activeModal=p(I);$api=p(B);$auth=p(Q);$toastr=p(F);$translate=p(k);modalData=p(R);user=this.modalData.user;existingUsers=this.modalData.existingUsers||[];isCurrentUser=U(!1);deleteMode=U(!1);initialFormValue={};form=new j({username:new S("",{nonNullable:!0,validators:[y.required]}),name:new S("",{nonNullable:!0,validators:[y.required]}),password:new S("",{nonNullable:!0,validators:[y.minLength(4)]}),passwordConfirm:new S("",{nonNullable:!0}),admin:new S(!0,{nonNullable:!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:e}){if(this.user){if(this.deleteMode()){try{yield this.$api.delete(`/users/${this.user.id}`),this.$activeModal.close()}catch(t){console.error(t),this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error"))}return}try{yield this.$api.patch(`/users/${this.user.id}`,e),this.$activeModal.close(),this.isCurrentUser()&&e.username!==this.$auth.user.username&&this.$auth.logout()}catch(t){console.error(t),this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error"))}}})}toggleDeleteMode(e){this.deleteMode.set(!this.deleteMode()),this.deleteMode()?this.form.disable():(this.form.enable(),this.isLastAdmin()&&this.form.controls.admin.disable()),e.target.blur()}isFormUnchanged(){return this.form.controls.password.value?!1:JSON.stringify(this.form.getRawValue())===JSON.stringify(this.initialFormValue)}duplicateUsernameValidator(e){if(!e.value)return null;let l=e.value.trim();return l&&this.existingUsers.some(f=>f.id!==this.user.id&&f.username===l)?{duplicateUsername:!0}:null}dismissModal(){this.$activeModal.dismiss("Dismiss")}matchPassword(e){let l=e.get("password")?.value,t=e.get("passwordConfirm")?.value;return l!==t?(e.get("passwordConfirm")?.setErrors({matchPassword:!0}),{matchPassword:!0}):null}static \u0275fac=function(l){return new(l||a)};static \u0275cmp=D({type:a,selectors:[["app-users-edit"]],decls:60,vars:61,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-4"],[1,"fas","fa-user-pen","primary-text","icon-xl"],[1,"list-group","list-group-box"],[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","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",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,t){l&1&&(r(0,"div",0)(1,"form",1),_("ngSubmit",function(){return t.onSubmit(t.form)}),r(2,"div",2)(3,"h5",3),d(4),o(5,"translate"),n(),r(6,"button",4),o(7,"translate"),_("click",function(){return t.dismissModal()}),n()(),r(8,"div",5)(9,"div",6),m(10,"i",7),n(),r(11,"ul",8)(12,"li",9)(13,"label",10),d(14),o(15,"translate"),m(16,"app-required-indicator"),n(),r(17,"div",11),m(18,"input",12),o(19,"translate"),n()(),r(20,"li",9)(21,"label",13),d(22),o(23,"translate"),m(24,"app-required-indicator"),n(),r(25,"div",11),m(26,"input",14),o(27,"translate"),n()(),r(28,"li",9)(29,"label",15),d(30),o(31,"translate"),x(32,Oe,1,0,"app-required-indicator"),n(),r(33,"div",11),m(34,"input",16),o(35,"translate"),n()(),x(36,ze,8,8,"li",9),r(37,"li",17)(38,"span",18),d(39),o(40,"translate"),m(41,"app-required-indicator"),n(),r(42,"div",19),m(43,"input",20),o(44,"translate"),m(45,"label",21),n()()(),x(46,Je,4,3,"div",22),n(),r(47,"div",23)(48,"div",18)(49,"button",24),_("click",function(){return t.dismissModal()}),d(50),o(51,"translate"),n()(),m(52,"div",25),r(53,"div",26)(54,"button",27),o(55,"translate"),_("click",function(Te){return t.toggleDeleteMode(Te)}),m(56,"i"),n(),r(57,"button",28),d(58),o(59,"translate"),n()()()()()),l&2&&(i(),E("formGroup",t.form),i(3),u(s(5,35,"users.title_edit_user")),i(2),b("aria-label",s(7,37,"form.button_close")),i(5),g("opacity-muted",t.deleteMode())("mb-0",!t.deleteMode())("mb-4",t.deleteMode()),i(3),c(" ",s(15,39,"users.label_username")),i(4),g("is-invalid",t.form.controls.username.touched&&t.form.controls.username.invalid),b("aria-label",s(19,41,"users.label_username")),i(4),c(" ",s(23,43,"users.label_full_name")),i(4),g("is-invalid",t.form.controls.name.touched&&t.form.controls.name.invalid),b("aria-label",s(27,45,"users.label_full_name")),i(4),c(" ",s(31,47,"users.label_new_password")," "),i(2),C(t.form.controls.password.value?32:-1),i(2),g("is-invalid",t.form.controls.password.touched&&t.form.controls.password.invalid),b("aria-label",s(35,49,"users.label_new_password")),i(2),C(t.form.controls.password.value?36:-1),i(3),u(s(40,51,"users.label_admin_user")),i(4),b("aria-label",s(44,53,"users.label_admin_user")),i(3),C(t.deleteMode()?46:-1),i(4),c(" ",s(51,55,"form.button_close")," "),i(4),E("disabled",!t.canDelete()),b("aria-label",s(55,57,"users.button_delete_user")),i(2),re(t.deleteMode()?"fas fa-undo":"fas fa-trash"),i(),re(`btn ${t.deleteMode()?"btn-danger":"btn-primary"}`),E("disabled",!t.deleteMode()&&(!t.form.valid||t.isFormUnchanged())),i(),c(" ",s(59,59,t.deleteMode()?"form.button_delete":"form.button_save")," "))},dependencies:[G,Y,P,W,q,X,L,te,ee,O,M],encapsulation:2,changeDetection:0})}return a})();var $e=(()=>{class a{$activeModal=p(I);dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(l){return new(l||a)};static \u0275cmp=D({type:a,selectors:[["app-users-support"]],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","icon-xl"],[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,t){l&1&&(r(0,"div",0)(1,"form")(2,"div",1)(3,"h5",2),d(4),o(5,"translate"),n(),r(6,"button",3),o(7,"translate"),_("click",function(){return t.dismissModal()}),n()(),r(8,"div",4)(9,"div",5),m(10,"i",6),n(),r(11,"h5",7),d(12),o(13,"translate"),n(),r(14,"ul",8)(15,"li"),d(16),o(17,"translate"),n(),r(18,"ul",9)(19,"li"),d(20),o(21,"translate"),n(),r(22,"li"),d(23),o(24,"translate"),n(),r(25,"li"),d(26),o(27,"translate"),o(28,"translate"),n(),r(29,"li"),d(30),o(31,"translate"),n(),r(32,"li"),d(33),o(34,"translate"),n()(),r(35,"li"),d(36),o(37,"translate"),n()(),m(38,"app-support-banner"),n(),r(39,"div",10),m(40,"div",11),r(41,"div",12)(42,"button",13),_("click",function(){return t.dismissModal()}),d(43),o(44,"translate"),n()(),m(45,"div",14),n()()()),l&2&&(i(4),u(s(5,12,"support.title")),i(2),b("aria-label",s(7,14,"form.button_close")),i(6),u(s(13,16,"users.title_users")),i(4),u(s(17,18,"users.support.acc_1")),i(4),u(s(21,20,"menu.label_status")),i(3),u(s(24,22,"menu.label_plugins")),i(3),ue("",s(27,24,"menu.label_accessories")," (",s(28,26,"users.support.control"),")"),i(4),u(s(31,28,"menu.linux.label_logs")),i(3),u(s(34,30,"support.title")),i(3),u(s(37,32,"users.support.acc_2")),i(7),c(" ",s(44,34,"form.button_close")," "))},dependencies:[Ee,M],encapsulation:2,changeDetection:0})}return a})();function Qe(a,h){if(a&1){let e=V();$(0,"button",21),J("click",function(){A(e);let t=v(2).$implicit,f=v();return N(f.disable2fa(t))}),d(1),o(2,"translate"),T()}if(a&2){let e=v(2).$implicit,l=v();ae("disabled",e.username!==l.username),i(),c(" ",s(2,2,"users.setup_2fa_disable")," ")}}function He(a,h){if(a&1){let e=V();$(0,"button",22),J("click",function(){A(e);let t=v(2).$implicit,f=v();return N(f.setup2fa(t))}),d(1),o(2,"translate"),T()}if(a&2){let e=v(2).$implicit,l=v();ae("disabled",e.username!==l.username),i(),c(" ",s(2,2,"users.setup_2fa")," ")}}function Ke(a,h){if(a&1&&x(0,Qe,3,4,"button",19)(1,He,3,4,"button",20),a&2){let e=v().$implicit;C(e.otpActive?0:1)}}function We(a,h){a&1&&z(0,"div")}function Xe(a,h){if(a&1){let e=V();$(0,"div",9)(1,"div",10)(2,"div",11)(3,"div",12)(4,"span",13)(5,"h4"),d(6),T(),$(7,"h5",14),z(8,"i",15),d(9),T()()(),$(10,"div",16),x(11,Ke,2,1)(12,We,1,0,"div"),$(13,"div")(14,"button",17),o(15,"translate"),J("click",function(){let t=A(e).$implicit,f=v();return N(f.openEditUser(t))}),z(16,"i",18),T()()()()()()}if(a&2){let e=h.$implicit;i(6),u(e.name),i(2),g("fa-user-secret",e.admin)("fa-user",!e.admin),i(),c(" ",e.username," "),i(2),C(e.admin?11:12),i(3),b("aria-label",s(15,8,"form.button_edit"))}}var Ci=(()=>{class a{injector=p(le);destroyRef=p(de);$api=p(B);$auth=p(Q);$modal=p(ge);$route=p(ve);$settings=p(he);$translate=p(k);homebridgeUsers=U([]);username=this.$auth.user.username;isAdmin=this.$auth.user.admin;ngOnInit(){let e=this.$translate.instant("users.title_users");this.$settings.setPageTitle(e),this.$route.data.pipe(_e(this.destroyRef)).subscribe(l=>{this.homebridgeUsers.set(l.homebridgeUsers??[])})}reloadUsers(){return w(this,null,function*(){let e=yield this.$api.get("/users");this.homebridgeUsers.set(e)})}openAddNewUser(){return w(this,null,function*(){let e=H([{provide:ie,useValue:{existingUsers:this.homebridgeUsers()}}],this.injector),l=this.$modal.open(De,{size:"lg",backdrop:"static",injector:e});try{yield l.result,this.reloadUsers()}catch(t){}})}openEditUser(e){return w(this,null,function*(){let l=H([{provide:R,useValue:{user:e,existingUsers:this.homebridgeUsers()}}],this.injector),t=this.$modal.open(Me,{size:"lg",backdrop:"static",injector:l});try{yield t.result,this.reloadUsers()}catch(f){}})}setup2fa(e){return w(this,null,function*(){let l=H([{provide:R,useValue:{user:e}}],this.injector),t=this.$modal.open(Ue,{size:"lg",backdrop:"static",injector:l});try{yield t.result,this.reloadUsers()}catch(f){}})}disable2fa(e){return w(this,null,function*(){let l=H([{provide:R,useValue:{user:e}}],this.injector),t=this.$modal.open(ye,{size:"lg",backdrop:"static",injector:l});try{yield t.result,this.reloadUsers()}catch(f){}})}openSupport(){this.$modal.open($e,{size:"lg",backdrop:"static"})}static \u0275fac=function(l){return new(l||a)};static \u0275cmp=D({type:a,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"],["type","button",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"],["type","button",1,"btn","btn-elegant","m-0",3,"click"],[1,"fas","fa-user-pen"],["type","button",1,"btn","btn-elegant","m-0",3,"disabled"],["type","button",1,"btn","btn-primary","m-0",3,"disabled"],["type","button",1,"btn","btn-elegant","m-0",3,"click","disabled"],["type","button",1,"btn","btn-primary","m-0",3,"click","disabled"]],template:function(l,t){l&1&&($(0,"div",0)(1,"div",1)(2,"h3",2),d(3),o(4,"translate"),T()(),$(5,"div",3)(6,"button",4),o(7,"translate"),J("click",function(){return t.openAddNewUser()}),z(8,"i",5),T(),$(9,"button",6),o(10,"translate"),J("click",function(){return t.openSupport()}),z(11,"i",7),T()()(),$(12,"div",8),pe(13,Xe,17,10,"div",9,me),T()),l&2&&(i(3),u(s(4,3,"users.title_users")),i(3),b("aria-label",s(7,5,"users.button_add_user")),i(3),b("aria-label",s(10,7,"support.title")),i(4),ce(t.homebridgeUsers()))},dependencies:[M],encapsulation:2,changeDetection:0})}return a})();export{Ci as UsersComponent};