homebridge-config-ui-x
Version:
A web based management, configuration and control platform for Homebridge.
1 lines • 8.03 kB
JavaScript
import{a as E}from"./chunk-D39XL-zh.js";import{$ as Le,Cn as a3,E as Dy,Fr as se$1,I as Ga,Jr as ve,Kr as v3,Ln as db,M as Fe,Nn as cp,Sn as a$,Tn as ac,Un as g,Yr as vy,Yt as Va,b as Co,br as pb,cn as Xt,d as Ay,fn as Z,hr as nc,jt as S_,lt as NU,n as $T,pt as Ot,rn as Wf,rr as jd,sr as kt,st as My,tt as Ln,u as An,ut as N_,vt as Py,wr as q,xr as pe}from"./chunk-D96TCRAL.js";import{l as le$1}from"./chunk-DZYp0NQB.js";import{n as zt}from"./chunk-CdJ3i4Aq.js";import{B as Hn,H as Jn,I as $,K as Se,R as Cn,U as Kn,W as Ln$1,Y as Ye,Z as _n,ct as zt$1,ft as he,ot as ve$1,rt as pt,st as zn}from"./main-E3N63CH7.js";var oe=[`password`];var ae=[`username`];var re=[`otp`];function se(i,S){if(i&1&&(Va(0,`div`,8)(1,`span`,12),Dy(2,`i`,13),jd(),Dy(3,`input`,14,0),S_(5,`translate`),db(),jd(),Va(6,`div`,8)(7,`span`,12),Dy(8,`i`,15),jd(),Dy(9,`input`,16,1),S_(11,`translate`),db(),jd()),i&2){let e=ve();se$1(3),Ay(`is-invalid`,e.form.controls.username.dirty&&e.form.controls.username.errors),vy(`placeholder`,N_(5,6,`users.label_username`)),pb(),se$1(6),Ay(`is-invalid`,e.form.controls.password.dirty&&e.form.controls.password.errors),vy(`placeholder`,N_(11,8,`users.label_password`)),pb()}}function le(i,S){i&1&&(Va(0,`div`,8)(1,`span`,12),Dy(2,`i`,17),jd(),Dy(3,`input`,18,2),S_(5,`translate`),db(),jd()),i&2&&(se$1(3),vy(`placeholder`,N_(5,1,`login.label_2fa_code`)),pb())}function de(i,S){i&1&&(Va(0,`div`,9)(1,`div`,12),Dy(2,`i`,19),jd(),Va(3,`div`,20)(4,`div`,21),Ot(5),S_(6,`translate`),jd(),Dy(7,`div`,22),S_(8,`translate`),jd()()),i&2&&(se$1(5),Py(N_(6,2,`login.invalid_credentials`)),se$1(2),vy(`innerHTML`,N_(8,4,`login.invalid_credentials_2`),Ga))}function me(i,S){i&1&&(Va(0,`div`,9)(1,`div`,12),Dy(2,`i`,19),jd(),Va(3,`div`,20)(4,`div`,21),Ot(5),S_(6,`translate`),jd(),Dy(7,`div`,22),S_(8,`translate`),jd()()),i&2&&(se$1(5),Py(N_(6,2,`login.invalid_code`)),se$1(2),vy(`innerHTML`,N_(8,4,`login.invalid_credentials_2`),Ga))}var Me=(()=>{class i{destroyRef=g(Z);$auth=g(he);$router=g(le$1);$settings=g(zt);targetRoute;validNonAdminRoutes=[`/accessories`,`/plugins`,`/logs`,`/support`];passwordInput=a$(`password`);usernameInput=a$(`username`);otpInput=a$(`otp`);backgroundStyle=q(``);invalidCredentials=q(!1);invalid2faCode=q(!1);twoFactorCodeRequired=q(!1);inProgress=q(!1);form=new $({username:new Se(``,{nonNullable:!0,validators:[ve$1.required]}),password:new Se(``,{nonNullable:!0,validators:[ve$1.required]}),otp:new Se(``,{nonNullable:!0})});formInvalid=a3(this.form.statusChanges.pipe(cp(this.form.status),pe(()=>this.form.invalid)),{initialValue:this.form.invalid});ngOnInit(){this.form.valueChanges.pipe(Wf(500),An(this.destroyRef)).subscribe(()=>{let e=this.passwordInput()?.nativeElement.value;e&&e!==this.form.controls.password.value&&this.form.controls.password.setValue(e)}),this.targetRoute=window.sessionStorage.getItem(`target_route`)||`/`,window.sessionStorage.removeItem(`target_route`),this.setBackground()}ngAfterViewInit(){window.matchMedia(`(hover: none) and (pointer: coarse)`).matches||this.usernameInput()?.nativeElement.focus()}onSubmit(){return E(this,null,function*(){this.invalidCredentials.set(!1),this.invalid2faCode.set(!1),this.inProgress.set(!0),document.getElementById(`submit-button`)?.blur();let e=this.passwordInput()?.nativeElement.value;e&&e!==this.form.controls.password.value&&this.form.controls.password.setValue(e);let s=this.usernameInput()?.nativeElement.value;if(s&&s!==this.form.controls.username.value&&this.form.controls.username.setValue(s),this.twoFactorCodeRequired()){let t=this.otpInput()?.nativeElement.value;t&&t!==this.form.controls.otp.value&&this.form.controls.otp.setValue(t)}try{yield this.$auth.login(this.form.getRawValue()),!this.$auth.user.admin&&!this.validNonAdminRoutes.includes(this.targetRoute)&&(this.targetRoute=`/`),this.$router.navigateByUrl(this.targetRoute)}catch(t){if(t.status===412){let f=this.form.controls.otp;this.twoFactorCodeRequired()?(f.setErrors({invalidCode:!0}),this.invalid2faCode.set(!0)):(f.setValidators([ve$1.required,ve$1.minLength(6),ve$1.maxLength(6)]),f.updateValueAndValidity()),this.twoFactorCodeRequired.set(!0),setTimeout(()=>{document.getElementById(`form-ota`)?.focus()},100)}else this.invalidCredentials.set(!0)}this.inProgress.set(!1)})}setBackground(){return E(this,null,function*(){if(this.$settings.settingsLoaded||(yield Ln(this.$settings.onSettingsLoaded)),this.$settings.env.customWallpaperHash){let e=`${Co.api.base}/auth/wallpaper/${this.$settings.env.customWallpaperHash}`;this.backgroundStyle.set(`url('${e}') center/cover`)}})}static ɵfac=function(s){return new(s||i)};static ɵcmp=nc({type:i,selectors:[[`app-login`]],viewQuery:function(s,t){s&1&&My(t.passwordInput,oe,5)(t.usernameInput,ae,5)(t.otpInput,re,5),s&2&&$T(3)},decls:15,vars:15,consts:[[`username`,``],[`password`,``],[`otp`,``],[1,`login-container`,`gradient`,`d-flex`,`align-items-start`,`justify-content-center`],[1,`w-100`,`login-card`,`d-flex`,`py-4`,`flex-column`],[`ngSrc`,`assets/homebridge-color-round.webp`,`alt`,`Homebridge Logo`,`height`,`100`,`width`,`100`,`priority`,`true`,1,`homebridge-logo`,`mx-auto`,`my-3`],[`novalidate`,``,3,`ngSubmit`,`formGroup`],[1,`mb-4`,`text-center`],[1,`input-group`,`mb-4`],[1,`input-group`,`no-border`,`mb-4`],[1,`text-center`],[`tabindex`,`0`,`id`,`submit-button`,`type`,`submit`,1,`btn`,`btn-primary`,`mb-2`,3,`disabled`],[1,`input-group-text`,`custom-input`],[`aria-hidden`,`true`,1,`fas`,`fa-user`,`primary-text`,`fa-lg`],[`formControlName`,`username`,`name`,`username`,`type`,`text`,`id`,`form-username`,`autocomplete`,`username`,`autocapitalize`,`none`,`tabindex`,`0`,`required`,``,1,`form-control`,`custom-input`,3,`placeholder`],[`aria-hidden`,`true`,1,`fas`,`fa-lock`,`primary-text`,`fa-lg`],[`formControlName`,`password`,`name`,`password`,`type`,`password`,`id`,`form-pass`,`autocomplete`,`current-password`,`tabindex`,`0`,`required`,``,1,`form-control`,`custom-input`,3,`placeholder`],[`aria-hidden`,`true`,1,`fas`,`fa-key`,`primary-text`,`fa-lg`],[`formControlName`,`otp`,`type`,`text`,`id`,`form-ota`,`autocomplete`,`one-time-code`,`autocapitalize`,`none`,`inputmode`,`numeric`,`pattern`,`[0-9]*`,`tabindex`,`0`,1,`form-control`,`custom-input`,3,`placeholder`],[`aria-hidden`,`true`,1,`fas`,`fa-exclamation-triangle`,`pink-text`,`fa-lg`],[1,`form-control`,`custom-input`],[1,`small`,`grey-text`,`fw-semibold`],[1,`small`,`grey-text`,3,`innerHTML`]],template:function(s,t){s&1&&(Va(0,`div`,3)(1,`div`,4),Dy(2,`img`,5),Va(3,`form`,6),ac(`ngSubmit`,function(){return t.onSubmit()}),Va(4,`h4`,7),Ot(5),S_(6,`translate`),jd(),Fe(7,se,12,10)(8,le,6,3,`div`,8),Fe(9,de,9,6,`div`,9),Fe(10,me,9,6,`div`,9),Va(11,`div`,10)(12,`button`,11),Ot(13),S_(14,`translate`),jd()()()()()),s&2&&(Xt(`background`,t.backgroundStyle()),Ay(`anim`,!t.backgroundStyle()),se$1(3),vy(`formGroup`,t.form),se$1(2),Py(N_(6,11,`setup.welcome_to_homebridge`)),se$1(2),Le(t.twoFactorCodeRequired()?8:7),se$1(2),Le(t.invalidCredentials()?9:-1),se$1(),Le(t.invalid2faCode()?10:-1),se$1(2),vy(`disabled`,t.formInvalid()),se$1(),kt(` `,N_(14,13,`form.button_continue`),` `))},dependencies:[Kn,zn,Ye,Hn,Ln$1,pt,zt$1,Jn,Cn,_n,NU,v3],styles:[`.login-container[_ngcontent-%COMP%]{z-index:-1;padding-top:2em;padding-bottom:2em;min-height:100%;background-size:300% 300%}.anim[_ngcontent-%COMP%]{-webkit-animation:_ngcontent-%COMP%_gradient 20s ease infinite;-moz-animation:gradient 20s ease infinite;animation:_ngcontent-%COMP%_gradient 20s ease infinite}@keyframes _ngcontent-%COMP%_gradient{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.login-card[_ngcontent-%COMP%]{max-width:550px;border-radius:1rem;padding-right:25px;padding-left:25px;background-color:#ffffffe6}.login-card[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus{background-color:inherit!important}@media screen and (max-width:575px){.login-card[_ngcontent-%COMP%]{margin-left:1em;margin-right:1em}}.homebridge-logo[_ngcontent-%COMP%]{margin-bottom:10px}`]})}return i})();export{Me as LoginComponent};