homebridge-config-ui-x
Version:
A web based management, configuration and control platform for Homebridge.
2 lines (1 loc) • 7.84 kB
JavaScript
import{a as q,b as $}from"./chunk-IL6HHVES.js";import{d as G}from"./chunk-LKBXKG4K.js";import{B as Z,C as ee,D as te,c as Q,d as u,e as U,f as W,g as j,j as y,m as J,r as K,s as X,z as Y}from"./chunk-BQZ376DP.js";import{b as A}from"./chunk-RFCSHRPV.js";import{f as O}from"./chunk-3APJQTJL.js";import{Ea as n,G as E,Gb as D,Hb as L,Jb as B,Kb as b,Lc as T,Mb as g,Nb as C,Ob as F,P as N,Ra as P,Zc as z,aa as c,cb as v,cd as H,db as h,dc as d,ec as l,ib as m,jb as a,kb as o,la as k,lb as r,o as I,p as M,qa as p,qc as w,xb as R,za as S,zb as V}from"./chunk-LTGI3NYM.js";import{h as x}from"./chunk-B4AJQJMI.js";var ie=["password"],ne=["username"],oe=["otp"];function ae(i,_){if(i&1&&(a(0,"div",8)(1,"span",12),r(2,"i",13),o(),r(3,"input",14,0),d(5,"translate"),o(),a(6,"div",8)(7,"span",12),r(8,"i",15),o(),r(9,"input",16,1),d(11,"translate"),o()),i&2){let e=V();n(3),b("is-invalid",e.form.controls.username.dirty&&e.form.controls.username.errors),m("placeholder",l(5,6,"users.label_username")),n(6),b("is-invalid",e.form.controls.password.dirty&&e.form.controls.password.errors),m("placeholder",l(11,8,"users.label_password"))}}function re(i,_){i&1&&(a(0,"div",8)(1,"span",12),r(2,"i",17),o(),r(3,"input",18,2),d(5,"translate"),o()),i&2&&(n(3),m("placeholder",l(5,1,"login.label_2fa_code")))}function se(i,_){i&1&&(a(0,"div",9)(1,"div",12),r(2,"i",19),o(),a(3,"div",20)(4,"div",21),g(5),d(6,"translate"),o(),r(7,"div",22),d(8,"translate"),o()()),i&2&&(n(5),C(l(6,2,"login.invalid_credentials")),n(2),m("innerHTML",l(8,4,"login.invalid_credentials_2"),S))}function de(i,_){i&1&&(a(0,"div",9)(1,"div",12),r(2,"i",19),o(),a(3,"div",20)(4,"div",21),g(5),d(6,"translate"),o(),r(7,"div",22),d(8,"translate"),o()()),i&2&&(n(5),C(l(6,2,"login.invalid_code")),n(2),m("innerHTML",l(8,4,"login.invalid_credentials_2"),S))}var Se=(()=>{class i{destroyRef=c(k);$auth=c(G);$router=c(O);$settings=c(A);targetRoute;validNonAdminRoutes=["/accessories","/plugins","/logs","/support"];passwordInput=w("password");usernameInput=w("username");otpInput=w("otp");backgroundStyle=p("");invalidCredentials=p(!1);invalid2faCode=p(!1);twoFactorCodeRequired=p(!1);inProgress=p(!1);form=new j({username:new y("",{nonNullable:!0,validators:[u.required]}),password:new y("",{nonNullable:!0,validators:[u.required]}),otp:new y("",{nonNullable:!0})});formInvalid=$(this.form.statusChanges.pipe(N(this.form.status),M(()=>this.form.invalid)),{initialValue:this.form.invalid});ngOnInit(){this.form.valueChanges.pipe(E(500),q(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 x(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([u.required,u.minLength(6),u.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 x(this,null,function*(){if(this.$settings.settingsLoaded||(yield I(this.$settings.onSettingsLoaded)),this.$settings.env.customWallpaperHash){let e=`${H.api.base}/auth/wallpaper/${this.$settings.env.customWallpaperHash}`;this.backgroundStyle.set(`url('${e}') center/cover`)}})}static \u0275fac=function(s){return new(s||i)};static \u0275cmp=P({type:i,selectors:[["app-login"]],viewQuery:function(s,t){s&1&&D(t.passwordInput,ie,5)(t.usernameInput,ne,5)(t.otpInput,oe,5),s&2&&L(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&&(a(0,"div",3)(1,"div",4),r(2,"img",5),a(3,"form",6),R("ngSubmit",function(){return t.onSubmit()}),a(4,"h4",7),g(5),d(6,"translate"),o(),v(7,ae,12,10)(8,re,6,3,"div",8),v(9,se,9,6,"div",9),v(10,de,9,6,"div",9),a(11,"div",10)(12,"button",11),g(13),d(14,"translate"),o()()()()()),s&2&&(B("background",t.backgroundStyle()),b("anim",!t.backgroundStyle()),n(3),m("formGroup",t.form),n(2),C(l(6,11,"setup.welcome_to_homebridge")),n(2),h(t.twoFactorCodeRequired()?8:7),n(2),h(t.invalidCredentials()?9:-1),n(),h(t.invalid2faCode()?10:-1),n(2),m("disabled",t.formInvalid()),n(),F(" ",l(14,13,"form.button_continue")," "))},dependencies:[ee,J,Q,U,W,Y,Z,te,X,K,T,z],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}"],changeDetection:0})}return i})();export{Se as LoginComponent};