{"version":3,"sources":["src/app/auth/dto/ask-mfa.payload.ts","node_modules/ngx-turnstile/fesm2022/ngx-turnstile.mjs","node_modules/angular-code-input/fesm2022/angular-code-input.mjs","src/app/auth/partials/resend-timer/resend-timer.component.ts","src/app/auth/partials/resend-timer/resend-timer.component.html","src/app/auth/auth.component.ts","src/app/auth/auth.component.html","src/app/auth/auth-routing.module.ts","src/app/auth/auth.module.ts"],"sourcesContent":["export interface AskMfaPayload {\n message: string;\n transport: MfaTransport;\n maskedDestination: string;\n mfaOptions: MfaOptions;\n}\n\nexport interface MfaOptions {\n maxAttempts: number;\n attemptsInterval: number;\n codeLength: number;\n}\n\nexport enum MfaTransport {\n EMAIL = 'EMAIL',\n SMS = 'SMS',\n}\n","import * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Component, Input, Output, NgModule, forwardRef, Directive } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nlet NgxTurnstileService = /*#__PURE__*/(() => {\n class NgxTurnstileService {\n constructor() {}\n static ɵfac = function NgxTurnstileService_Factory(t) {\n return new (t || NgxTurnstileService)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgxTurnstileService,\n factory: NgxTurnstileService.ɵfac,\n providedIn: 'root'\n });\n }\n return NgxTurnstileService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst CALLBACK_NAME = 'onloadTurnstileCallback';\nlet NgxTurnstileComponent = /*#__PURE__*/(() => {\n class NgxTurnstileComponent {\n elementRef;\n zone;\n siteKey;\n action;\n cData;\n theme = 'auto';\n version = '0';\n tabIndex;\n appearance = 'always';\n resolved = new EventEmitter();\n widgetId;\n constructor(elementRef, zone) {\n this.elementRef = elementRef;\n this.zone = zone;\n }\n _getCloudflareTurnstileUrl() {\n if (this.version === '0') {\n return 'https://challenges.cloudflare.com/turnstile/v0/api.js';\n }\n throw 'Version not defined in ngx-turnstile component.';\n }\n ngAfterViewInit() {\n let turnstileOptions = {\n sitekey: this.siteKey,\n theme: this.theme,\n tabindex: this.tabIndex,\n action: this.action,\n cData: this.cData,\n appearance: this.appearance,\n callback: token => {\n this.zone.run(() => this.resolved.emit(token));\n },\n 'expired-callback': () => {\n this.zone.run(() => this.reset());\n }\n };\n const script = document.createElement('script');\n window[CALLBACK_NAME] = () => {\n if (!this.elementRef?.nativeElement) {\n return;\n }\n this.widgetId = window.turnstile.render(this.elementRef.nativeElement, turnstileOptions);\n };\n script.src = `${this._getCloudflareTurnstileUrl()}?render=explicit&onload=${CALLBACK_NAME}`;\n script.async = true;\n script.defer = true;\n document.head.appendChild(script);\n }\n reset() {\n if (this.widgetId) {\n this.resolved.emit(null);\n window.turnstile.reset(this.widgetId);\n }\n }\n ngOnDestroy() {\n if (this.widgetId) {\n window.turnstile.remove(this.widgetId);\n }\n }\n static ɵfac = function NgxTurnstileComponent_Factory(t) {\n return new (t || NgxTurnstileComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgxTurnstileComponent,\n selectors: [[\"ngx-turnstile\"]],\n inputs: {\n siteKey: \"siteKey\",\n action: \"action\",\n cData: \"cData\",\n theme: \"theme\",\n version: \"version\",\n tabIndex: \"tabIndex\",\n appearance: \"appearance\"\n },\n outputs: {\n resolved: \"resolved\"\n },\n exportAs: [\"ngx-turnstile\"],\n decls: 0,\n vars: 0,\n template: function NgxTurnstileComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n }\n return NgxTurnstileComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgxTurnstileModule = /*#__PURE__*/(() => {\n class NgxTurnstileModule {\n static ɵfac = function NgxTurnstileModule_Factory(t) {\n return new (t || NgxTurnstileModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgxTurnstileModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n return NgxTurnstileModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgxTurnstileValueAccessorDirective = /*#__PURE__*/(() => {\n class NgxTurnstileValueAccessorDirective {\n turnstileComp;\n onChange;\n onTouched;\n resolved = false;\n constructor(turnstileComp) {\n this.turnstileComp = turnstileComp;\n }\n ngOnInit() {\n this.turnstileComp.resolved.subscribe(token => {\n this.resolved = !!token;\n if (this.onChange) {\n this.onChange(token);\n }\n if (this.onTouched) {\n this.onTouched();\n }\n });\n }\n // Prevent form control from setting token value\n writeValue(value) {\n // reset turnstile component if form control sets the value after already receiving a valid token\n if (this.resolved) {\n this.resolved = false;\n this.turnstileComp.reset();\n }\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n static ɵfac = function NgxTurnstileValueAccessorDirective_Factory(t) {\n return new (t || NgxTurnstileValueAccessorDirective)(i0.ɵɵdirectiveInject(NgxTurnstileComponent));\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgxTurnstileValueAccessorDirective,\n selectors: [[\"ngx-turnstile\", \"formControl\", \"\"], [\"ngx-turnstile\", \"formControlName\", \"\"], [\"ngx-turnstile\", \"ngModel\", \"\"]],\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgxTurnstileValueAccessorDirective),\n multi: true\n }])]\n });\n }\n return NgxTurnstileValueAccessorDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgxTurnstileFormsModule = /*#__PURE__*/(() => {\n class NgxTurnstileFormsModule {\n static ɵfac = function NgxTurnstileFormsModule_Factory(t) {\n return new (t || NgxTurnstileFormsModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgxTurnstileFormsModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [NgxTurnstileModule]\n });\n }\n return NgxTurnstileFormsModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/*\n * Public API Surface of ngx-turnstile\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NgxTurnstileComponent, NgxTurnstileFormsModule, NgxTurnstileModule, NgxTurnstileService, NgxTurnstileValueAccessorDirective };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, EventEmitter, Component, Optional, Inject, ViewChildren, Input, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nconst _c0 = [\"input\"];\nfunction CodeInputComponent_span_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\")(1, \"input\", 1, 2);\n i0.ɵɵlistener(\"click\", function CodeInputComponent_span_0_Template_input_click_1_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r4 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r4.onClick($event));\n })(\"paste\", function CodeInputComponent_span_0_Template_input_paste_1_listener($event) {\n const restoredCtx = i0.ɵɵrestoreView(_r5);\n const i_r2 = restoredCtx.index;\n const ctx_r6 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r6.onPaste($event, i_r2));\n })(\"input\", function CodeInputComponent_span_0_Template_input_input_1_listener($event) {\n const restoredCtx = i0.ɵɵrestoreView(_r5);\n const i_r2 = restoredCtx.index;\n const ctx_r7 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r7.onInput($event, i_r2));\n })(\"keydown\", function CodeInputComponent_span_0_Template_input_keydown_1_listener($event) {\n const restoredCtx = i0.ɵɵrestoreView(_r5);\n const i_r2 = restoredCtx.index;\n const ctx_r8 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r8.onKeydown($event, i_r2));\n });\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"code-hidden\", ctx_r0.isCodeHidden);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"type\", ctx_r0.inputType)(\"disabled\", ctx_r0.disabled);\n i0.ɵɵattribute(\"inputmode\", ctx_r0.inputMode)(\"autocapitalize\", ctx_r0.autocapitalize);\n }\n}\nconst CodeInputComponentConfigToken = new InjectionToken('CodeInputComponentConfig');\nconst defaultComponentConfig = {\n codeLength: 4,\n inputType: 'tel',\n inputMode: 'numeric',\n initialFocusField: undefined,\n isCharsCode: false,\n isCodeHidden: false,\n isPrevFocusableAfterClearing: true,\n isFocusingOnLastByClickIfFilled: false,\n code: undefined,\n disabled: false,\n autocapitalize: undefined\n};\nvar InputState = /*#__PURE__*/function (InputState) {\n InputState[InputState[\"ready\"] = 0] = \"ready\";\n InputState[InputState[\"reset\"] = 1] = \"reset\";\n return InputState;\n}(InputState || {});\nlet CodeInputComponent = /*#__PURE__*/(() => {\n class CodeInputComponent {\n constructor(config) {\n /** @deprecated Use isCharsCode prop instead. */\n this.isNonDigitsCode = false;\n this.codeChanged = new EventEmitter();\n this.codeCompleted = new EventEmitter();\n this.placeholders = [];\n this.inputs = [];\n this.inputsStates = [];\n this.state = {\n isFocusingAfterAppearingCompleted: false,\n isInitialFocusFieldEnabled: false\n };\n Object.assign(this, defaultComponentConfig);\n if (!config) {\n return;\n }\n // filtering for only valid config props\n for (const prop in config) {\n if (!config.hasOwnProperty(prop)) {\n continue;\n }\n if (!defaultComponentConfig.hasOwnProperty(prop)) {\n continue;\n }\n // @ts-ignore\n this[prop] = config[prop];\n }\n }\n /**\n * Life cycle\n */\n ngOnInit() {\n // defining the state\n this.state.isInitialFocusFieldEnabled = !this.isEmpty(this.initialFocusField);\n // initiating the code\n this.onCodeLengthChanges();\n }\n ngAfterViewInit() {\n // initiation of the inputs\n this.inputsListSubscription = this.inputsList.changes.subscribe(this.onInputsListChanges.bind(this));\n this.onInputsListChanges(this.inputsList);\n }\n ngAfterViewChecked() {\n this.focusOnInputAfterAppearing();\n }\n ngOnChanges(changes) {\n if (changes.code) {\n this.onInputCodeChanges();\n }\n if (changes.codeLength) {\n this.onCodeLengthChanges();\n }\n }\n ngOnDestroy() {\n if (this.inputsListSubscription) {\n this.inputsListSubscription.unsubscribe();\n }\n }\n /**\n * Methods\n */\n reset(isChangesEmitting = false) {\n // resetting the code to its initial value or to an empty value\n this.onInputCodeChanges();\n if (this.state.isInitialFocusFieldEnabled) {\n // tslint:disable-next-line:no-non-null-assertion\n this.focusOnField(this.initialFocusField);\n }\n if (isChangesEmitting) {\n this.emitChanges();\n }\n }\n focusOnField(index) {\n if (index >= this._codeLength) {\n throw new Error('The index of the focusing input box should be less than the codeLength.');\n }\n this.inputs[index].focus();\n }\n onClick(e) {\n // handle click events only if the the prop is enabled\n if (!this.isFocusingOnLastByClickIfFilled) {\n return;\n }\n const target = e.target;\n const last = this.inputs[this._codeLength - 1];\n // already focused\n if (target === last) {\n return;\n }\n // check filling\n const isFilled = this.getCurrentFilledCode().length >= this._codeLength;\n if (!isFilled) {\n return;\n }\n // focusing on the last input if is filled\n setTimeout(() => last.focus());\n }\n onInput(e, i) {\n const target = e.target;\n const value = e.data || target.value;\n if (this.isEmpty(value)) {\n return;\n }\n // only digits are allowed if isCharsCode flag is absent/false\n if (!this.canInputValue(value)) {\n e.preventDefault();\n e.stopPropagation();\n this.setInputValue(target, null);\n this.setStateForInput(target, InputState.reset);\n return;\n }\n const values = value.toString().trim().split('');\n for (let j = 0; j < values.length; j++) {\n const index = j + i;\n if (index > this._codeLength - 1) {\n break;\n }\n this.setInputValue(this.inputs[index], values[j]);\n }\n this.emitChanges();\n const next = i + values.length;\n if (next > this._codeLength - 1) {\n target.blur();\n return;\n }\n this.inputs[next].focus();\n }\n onPaste(e, i) {\n e.preventDefault();\n e.stopPropagation();\n const data = e.clipboardData ? e.clipboardData.getData('text').trim() : undefined;\n if (this.isEmpty(data)) {\n return;\n }\n // Convert paste text into iterable\n // tslint:disable-next-line:no-non-null-assertion\n const values = data.split('');\n let valIndex = 0;\n for (let j = i; j < this.inputs.length; j++) {\n // The values end is reached. Loop exit\n if (valIndex === values.length) {\n break;\n }\n const input = this.inputs[j];\n const val = values[valIndex];\n // Cancel the loop when a value cannot be used\n if (!this.canInputValue(val)) {\n this.setInputValue(input, null);\n this.setStateForInput(input, InputState.reset);\n return;\n }\n this.setInputValue(input, val.toString());\n valIndex++;\n }\n this.inputs[i].blur();\n this.emitChanges();\n }\n async onKeydown(e, i) {\n const target = e.target;\n const isTargetEmpty = this.isEmpty(target.value);\n const prev = i - 1;\n // processing only the backspace and delete key events\n const isBackspaceKey = await this.isBackspaceKey(e);\n const isDeleteKey = this.isDeleteKey(e);\n if (!isBackspaceKey && !isDeleteKey) {\n return;\n }\n e.preventDefault();\n this.setInputValue(target, null);\n if (!isTargetEmpty) {\n this.emitChanges();\n }\n // preventing to focusing on the previous field if it does not exist or the delete key has been pressed\n if (prev < 0 || isDeleteKey) {\n return;\n }\n if (isTargetEmpty || this.isPrevFocusableAfterClearing) {\n this.inputs[prev].focus();\n }\n }\n onInputCodeChanges() {\n if (!this.inputs.length) {\n return;\n }\n if (this.isEmpty(this.code)) {\n this.inputs.forEach(input => {\n this.setInputValue(input, null);\n });\n return;\n }\n // tslint:disable-next-line:no-non-null-assertion\n const chars = this.code.toString().trim().split('');\n // checking if all the values are correct\n let isAllCharsAreAllowed = true;\n for (const char of chars) {\n if (!this.canInputValue(char)) {\n isAllCharsAreAllowed = false;\n break;\n }\n }\n this.inputs.forEach((input, index) => {\n const value = isAllCharsAreAllowed ? chars[index] : null;\n this.setInputValue(input, value);\n });\n }\n onCodeLengthChanges() {\n if (!this.codeLength) {\n return;\n }\n this._codeLength = this.codeLength;\n if (this._codeLength > this.placeholders.length) {\n const numbers = Array(this._codeLength - this.placeholders.length).fill(1);\n this.placeholders.splice(this.placeholders.length - 1, 0, ...numbers);\n } else if (this._codeLength < this.placeholders.length) {\n this.placeholders.splice(this._codeLength);\n }\n }\n onInputsListChanges(list) {\n if (list.length > this.inputs.length) {\n const inputsToAdd = list.filter((item, index) => index > this.inputs.length - 1);\n this.inputs.splice(this.inputs.length, 0, ...inputsToAdd.map(item => item.nativeElement));\n const states = Array(inputsToAdd.length).fill(InputState.ready);\n this.inputsStates.splice(this.inputsStates.length, 0, ...states);\n } else if (list.length < this.inputs.length) {\n this.inputs.splice(list.length);\n this.inputsStates.splice(list.length);\n }\n // filling the inputs after changing of their count\n this.onInputCodeChanges();\n }\n focusOnInputAfterAppearing() {\n if (!this.state.isInitialFocusFieldEnabled) {\n return;\n }\n if (this.state.isFocusingAfterAppearingCompleted) {\n return;\n }\n // tslint:disable-next-line:no-non-null-assertion\n this.focusOnField(this.initialFocusField);\n // tslint:disable-next-line:no-non-null-assertion\n this.state.isFocusingAfterAppearingCompleted = document.activeElement === this.inputs[this.initialFocusField];\n }\n emitChanges() {\n setTimeout(() => this.emitCode(), 50);\n }\n emitCode() {\n const code = this.getCurrentFilledCode();\n this.codeChanged.emit(code);\n if (code.length >= this._codeLength) {\n this.codeCompleted.emit(code);\n }\n }\n getCurrentFilledCode() {\n let code = '';\n for (const input of this.inputs) {\n if (!this.isEmpty(input.value)) {\n code += input.value;\n }\n }\n return code;\n }\n isBackspaceKey(e) {\n const isBackspace = e.key && e.key.toLowerCase() === 'backspace' || e.keyCode && e.keyCode === 8;\n if (isBackspace) {\n return Promise.resolve(true);\n }\n // process only key with placeholder keycode on android devices\n if (!e.keyCode || e.keyCode !== 229) {\n return Promise.resolve(false);\n }\n return new Promise(resolve => {\n setTimeout(() => {\n const input = e.target;\n const isReset = this.getStateForInput(input) === InputState.reset;\n if (isReset) {\n this.setStateForInput(input, InputState.ready);\n }\n // if backspace key pressed the caret will have position 0 (for single value field)\n resolve(input.selectionStart === 0 && !isReset);\n });\n });\n }\n isDeleteKey(e) {\n return e.key && e.key.toLowerCase() === 'delete' || e.keyCode && e.keyCode === 46;\n }\n setInputValue(input, value) {\n const isEmpty = this.isEmpty(value);\n const valueClassCSS = 'has-value';\n const emptyClassCSS = 'empty';\n if (isEmpty) {\n input.value = '';\n input.classList.remove(valueClassCSS);\n // tslint:disable-next-line:no-non-null-assertion\n input.parentElement.classList.add(emptyClassCSS);\n } else {\n input.value = value;\n input.classList.add(valueClassCSS);\n // tslint:disable-next-line:no-non-null-assertion\n input.parentElement.classList.remove(emptyClassCSS);\n }\n }\n canInputValue(value) {\n if (this.isEmpty(value)) {\n return false;\n }\n const isDigitsValue = /^[0-9]+$/.test(value.toString());\n return isDigitsValue || this.isCharsCode || this.isNonDigitsCode;\n }\n setStateForInput(input, state) {\n const index = this.inputs.indexOf(input);\n if (index < 0) {\n return;\n }\n this.inputsStates[index] = state;\n }\n getStateForInput(input) {\n const index = this.inputs.indexOf(input);\n return this.inputsStates[index];\n }\n isEmpty(value) {\n return value === null || value === undefined || !value.toString().length;\n }\n /** @nocollapse */\n static {\n this.ɵfac = function CodeInputComponent_Factory(t) {\n return new (t || CodeInputComponent)(i0.ɵɵdirectiveInject(CodeInputComponentConfigToken, 8));\n };\n }\n /** @nocollapse */\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CodeInputComponent,\n selectors: [[\"code-input\"]],\n viewQuery: function CodeInputComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inputsList = _t);\n }\n },\n inputs: {\n codeLength: \"codeLength\",\n inputType: \"inputType\",\n inputMode: \"inputMode\",\n initialFocusField: \"initialFocusField\",\n isNonDigitsCode: \"isNonDigitsCode\",\n isCharsCode: \"isCharsCode\",\n isCodeHidden: \"isCodeHidden\",\n isPrevFocusableAfterClearing: \"isPrevFocusableAfterClearing\",\n isFocusingOnLastByClickIfFilled: \"isFocusingOnLastByClickIfFilled\",\n code: \"code\",\n disabled: \"disabled\",\n autocapitalize: \"autocapitalize\"\n },\n outputs: {\n codeChanged: \"codeChanged\",\n codeCompleted: \"codeCompleted\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n decls: 1,\n vars: 1,\n consts: [[3, \"code-hidden\", 4, \"ngFor\", \"ngForOf\"], [\"autocomplete\", \"one-time-code\", 3, \"type\", \"disabled\", \"click\", \"paste\", \"input\", \"keydown\"], [\"input\", \"\"]],\n template: function CodeInputComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CodeInputComponent_span_0_Template, 3, 6, \"span\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngForOf\", ctx.placeholders);\n }\n },\n dependencies: [i1.NgForOf],\n styles: [\"[_nghost-%COMP%]{--text-security-type: disc;--item-spacing: 4px;--item-height: 4.375em;--item-border: 1px solid #dddddd;--item-border-bottom: 1px solid #dddddd;--item-border-has-value: 1px solid #dddddd;--item-border-bottom-has-value: 1px solid #dddddd;--item-border-focused: 1px solid #dddddd;--item-border-bottom-focused: 1px solid #dddddd;--item-shadow-focused: 0px 1px 5px rgba(221, 221, 221, 1);--item-border-radius: 5px;--item-background: transparent;--item-font-weight: 300;--color: #171516;display:flex;transform:translateZ(0);font-size:inherit;color:var(--color)}[_nghost-%COMP%] span[_ngcontent-%COMP%]{display:block;flex:1;padding-right:var(--item-spacing)}[_nghost-%COMP%] span[_ngcontent-%COMP%]:first-child{padding-left:var(--item-spacing)}[_nghost-%COMP%] span.code-hidden[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{text-security:var(--text-security-type);-webkit-text-security:var(--text-security-type);-moz-text-security:var(--text-security-type)}[_nghost-%COMP%] input[_ngcontent-%COMP%]{width:100%;height:var(--item-height);color:inherit;background:var(--item-background);text-align:center;font-size:inherit;font-weight:var(--item-font-weight);border:var(--item-border);border-bottom:var(--item-border-bottom);border-radius:var(--item-border-radius);-webkit-appearance:none;transform:translateZ(0);-webkit-transform:translate3d(0,0,0);outline:none}[_nghost-%COMP%] input.has-value[_ngcontent-%COMP%]{border:var(--item-border-has-value);border-bottom:var(--item-border-bottom-has-value)}[_nghost-%COMP%] input[_ngcontent-%COMP%]:focus{border:var(--item-border-focused);border-bottom:var(--item-border-bottom-focused);box-shadow:var(--item-shadow-focused)}\"]\n });\n }\n }\n return CodeInputComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CodeInputModule = /*#__PURE__*/(() => {\n class CodeInputModule {\n static forRoot(config) {\n return {\n ngModule: CodeInputModule,\n providers: [{\n provide: CodeInputComponentConfigToken,\n useValue: config\n }]\n };\n }\n /** @nocollapse */\n static {\n this.ɵfac = function CodeInputModule_Factory(t) {\n return new (t || CodeInputModule)();\n };\n }\n /** @nocollapse */\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: CodeInputModule\n });\n }\n /** @nocollapse */\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [CommonModule]\n });\n }\n }\n return CodeInputModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/*\n * Public API Surface of code-input\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CodeInputComponent, CodeInputComponentConfigToken, CodeInputModule, defaultComponentConfig };\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { map, share, takeWhile, timer } from 'rxjs';\nimport { MfaTransport } from '../../dto/ask-mfa.payload';\n\n@Component({\n selector: 'app-resend-timer',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './resend-timer.component.html',\n styleUrls: ['./resend-timer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ResendTimerComponent {\n private cd = inject(ChangeDetectorRef);\n\n @Input() seconds = 5;\n @Output() resendClick = new EventEmitter();\n allowResend = false;\n transports = MfaTransport;\n\n timeRemaining$ = this.getTimer();\n\n private getTimer() {\n return timer(0, 1000)\n .pipe(\n map((n) => {\n if (this.seconds - n === 0) {\n this.allowResend = true;\n }\n return n;\n })\n )\n .pipe(\n map((n) => (this.seconds - n) * 1000),\n takeWhile((n) => n >= 0),\n share()\n );\n }\n\n resend(transport: MfaTransport) {\n this.allowResend = false;\n this.resendClick.emit(transport);\n this.timeRemaining$ = this.getTimer();\n this.cd.detectChanges();\n }\n}\n","
\n @if (!allowResend) {\n
Не отримали код? Відправити повторно через:
\n }\n @if (!allowResend) {\n
\n \n {{ timeRemaining$ | async | date:'mm:ss' }}\n
\n }\n\n @if (allowResend) {\n
Надіслати повторно через:\n SMS / Email\n
\n }\n
\n","import { Component, DestroyRef, inject, OnInit, signal, ViewChild } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { AuthService } from './auth.service';\nimport { Router } from '@angular/router';\nimport { AuthResponseType } from './dto/auth-res';\nimport { AskMfaPayload, MfaTransport } from './dto/ask-mfa.payload';\nimport { AlertService } from '../shared/services/alert.service';\nimport { environment } from '../../environments/environment';\nimport { CodeInputComponent } from 'angular-code-input';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'app-auth',\n templateUrl: './auth.component.html',\n styleUrls: ['./auth.component.scss'],\n})\nexport class AuthComponent implements OnInit {\n private destroyRef = inject(DestroyRef);\n\n loading = signal(false);\n siteKey = environment.turnstileSiteKey;\n maskedDestination = signal('');\n badCode = signal(false);\n forceResend = signal(false);\n mfaPayload = signal(null);\n maxAttemptsReached = signal(false);\n recaptchaTokenSet = signal(false);\n codeSet = signal(false);\n\n loginForm = new FormGroup({\n login: new FormControl('', [Validators.required, Validators.minLength(4)]),\n password: new FormControl('', [\n Validators.required,\n Validators.minLength(8),\n ]),\n pin: new FormControl(''),\n cfToken: new FormControl(null, [Validators.required]),\n transport: new FormControl(MfaTransport.SMS, [\n Validators.required,\n ]),\n });\n\n @ViewChild('codeInput') codeInput!: CodeInputComponent;\n\n constructor(\n private authService: AuthService,\n private router: Router,\n private alertService: AlertService\n ) {\n }\n\n ngOnInit(): void {\n if (this.authService.isLoggedIn()) {\n this.router.navigate(['/news']);\n }\n this.loginValueHandler();\n }\n\n sendCaptchaResponse(captchaResponse: any) {\n this.loginForm.controls.cfToken.setValue(captchaResponse);\n this.recaptchaTokenSet.set(true);\n }\n\n onCodeChanged(_: string): void {\n this.badCode.set(false);\n }\n\n onCodeCompleted(code: string): void {\n this.loginForm.controls.pin.setValue(code);\n this.codeSet.set(true);\n }\n\n resendCode(transport: MfaTransport): void {\n this.loginForm.controls.transport.setValue(transport);\n this.maskedDestination.set('');\n this.badCode.set(false);\n this.forceResend.set(true);\n this.codeSet.set(false);\n this.codeInput.reset();\n this.submit();\n }\n\n resetTurnstile(): void {\n this.loginForm.controls.cfToken.setValue(null);\n this.recaptchaTokenSet.set(false);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window.turnstile.reset();\n }\n\n submit(): void {\n if (this.loading() || !this.loginForm.valid) {\n return;\n }\n\n if (this.mfaPayload() && !this.loginForm.value.pin && !this.forceResend) {\n return;\n }\n\n this.loading.set(true);\n this.forceResend.set(false);\n\n this.authService\n .login(\n this.loginForm.value.login || '',\n this.loginForm.value.password || '',\n this.loginForm.value.cfToken || '',\n this.loginForm.value.pin || '',\n this.loginForm.value.transport || ''\n )\n .subscribe({\n next: (res) => {\n this.loading.set(false);\n this.codeSet.set(false);\n this.resetTurnstile();\n\n switch (res.type) {\n case AuthResponseType.SUCCESS:\n window.location.href = '/'; // Need to full reload page\n break;\n case AuthResponseType.MFA_CODE_MAX_ATTEMPTS:\n this.maxAttemptsReached.set(true);\n break;\n case AuthResponseType.MFA_CODE_GENERATION_ERROR:\n this.alertService.showError(res.data);\n break;\n case AuthResponseType.INVALID_CAPTCHA:\n this.alertService.showError(res.data);\n break;\n case AuthResponseType.MFA_CODE_INVALID:\n this.badCode.set(true);\n this.loginForm.controls.pin.setValue('');\n break;\n case AuthResponseType.MFA_REQUIRED:\n this.mfaPayload.set(res.data);\n this.maskedDestination.set(this.mfaPayload()!.maskedDestination);\n break;\n default:\n break;\n }\n },\n error: (_) => {\n this.alertService.showError(\n 'Помилка авторизації. Перевірте логін та пароль.'\n );\n this.resetTurnstile();\n this.loading.set(false);\n this.codeSet.set(false);\n },\n });\n }\n\n private loginValueHandler(): void {\n this.loginForm.controls.login.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n const login = this.loginForm.controls.login.value;\n if (login && login.length > 0) {\n this.loginForm.controls.login.setValue(login.trim().toLowerCase(), { emitEvent: false });\n }\n });\n }\n}\n","
\n
\n
\n\n
\n
\n
\n
\n @if (!maxAttemptsReached()) {\n
{{ mfaPayload() ? 'Код підтвердження' : 'Вхід' }}
\n }\n @if (maxAttemptsReached()) {\n
Перевищено кількість спроб 🤨
\n }\n\n @if (!mfaPayload() && !maxAttemptsReached()) {\n
Введіть дані свого користувача
\n }\n @if (maxAttemptsReached()) {\n
Зачекайте якийсь час та спробуйте знову ⌛. Або зверніться до\n адміністратора системи чи вашого керівника.\n
\n } @else {\n @if (mfaPayload() && maskedDestination()) {\n
\n Повідомлення з кодом надіслано на {{ maskedDestination() }}.\n
\n }\n\n @if (!mfaPayload()) {\n
\n \n Логін\n \n \n \n Пароль\n \n \n
\n }\n\n @if (mfaPayload(); as payload) {\n \n \n }\n\n @if (badCode()) {\n
\n Невірний код. Спробуйте ще раз\n
\n }\n\n @if (!forceResend()) {\n @if (mfaPayload(); as payload) {\n \n \n }\n }\n\n \n \n\n @if (!mfaPayload()) {\n \n {{ !loading() ? 'Далі' : 'Перевіряю дані...' }}\n
\n } @else {\n \n {{ 'Увійти' }}\n \n }\n }\n\n @if (loading()) {\n \n }\n \n
\n Виникли проблеми з входом? Зверніться до вашого керівника\n
\n\n\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { AuthComponent } from './auth.component';\n\nconst routes: Routes = [{ path: '', component: AuthComponent }];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class AuthRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { AuthRoutingModule } from './auth-routing.module';\nimport { AuthComponent } from './auth.component';\nimport { HttpClientModule } from '@angular/common/http';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { NgxTurnstileModule } from 'ngx-turnstile';\nimport { CodeInputModule } from 'angular-code-input';\nimport { ResendTimerComponent } from './partials/resend-timer/resend-timer.component';\n\n@NgModule({\n declarations: [AuthComponent],\n imports: [\n CommonModule,\n AuthRoutingModule,\n HttpClientModule,\n MatCardModule,\n MatFormFieldModule,\n MatIconModule,\n ReactiveFormsModule,\n MatSnackBarModule,\n MatInputModule,\n MatButtonModule,\n MatRippleModule,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n MatMenuModule,\n MatListModule,\n MatTooltipModule,\n NgxTurnstileModule,\n CodeInputModule,\n ResendTimerComponent,\n ],\n exports: [],\n providers: [],\n})\nexport class AuthModule {}\n"],"mappings":"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","names":["MfaTransport","CALLBACK_NAME","NgxTurnstileComponent","EventEmitter","elementRef","zone","turnstileOptions","token","script","t","ɵɵdirectiveInject","ElementRef","NgZone","ɵɵdefineComponent","rf","ctx","NgxTurnstileModule","ɵɵdefineNgModule","ɵɵdefineInjector","_c0","CodeInputComponent_span_0_Template","rf","ctx","_r5","ɵɵgetCurrentView","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","ctx_r4","ɵɵnextContext","ɵɵresetView","i_r2","ctx_r6","ctx_r7","ctx_r8","ɵɵelementEnd","ctx_r0","ɵɵclassProp","ɵɵadvance","ɵɵproperty","ɵɵattribute","CodeInputComponentConfigToken","InjectionToken","defaultComponentConfig","InputState","CodeInputComponent","_CodeInputComponent","config","EventEmitter","prop","changes","isChangesEmitting","index","target","last","i","value","values","j","next","data","valIndex","input","val","__async","isTargetEmpty","prev","isBackspaceKey","isDeleteKey","chars","isAllCharsAreAllowed","char","numbers","list","inputsToAdd","item","states","code","resolve","isReset","isEmpty","valueClassCSS","emptyClassCSS","state","t","ɵɵdirectiveInject","ɵɵdefineComponent","ɵɵviewQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵNgOnChangesFeature","ɵɵtemplate","NgForOf","CodeInputModule","_CodeInputModule","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind2","ɵɵpipeBind1","ctx_r1","timeRemaining$","ɵɵlistener","ɵɵrestoreView","_r4","ctx_r3","ɵɵnextContext","ɵɵresetView","resend","transports","SMS","ctx_r5","EMAIL","ResendTimerComponent","constructor","cd","inject","ChangeDetectorRef","seconds","resendClick","EventEmitter","allowResend","MfaTransport","getTimer","timer","pipe","map","n","takeWhile","share","transport","emit","detectChanges","selectors","inputs","outputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","ResendTimerComponent_Conditional_1_Template","ResendTimerComponent_Conditional_2_Template","ResendTimerComponent_Conditional_3_Template","ɵɵconditional","CommonModule","AsyncPipe","DatePipe","styles","changeDetection","_ResendTimerComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ctx_r0","mfaPayload","ɵɵelement","ctx_r6","maskedDestination","ɵɵlistener","$event","ɵɵrestoreView","_r16","ctx_r15","ɵɵnextContext","ɵɵresetView","onCodeChanged","ctx_r17","onCodeCompleted","ɵɵproperty","ɵɵpureFunction1","_c1","ctx_r8","badCode","ctx","mfaOptions","codeLength","_r21","ctx_r20","resendCode","attemptsInterval","ɵɵtemplate","AuthComponent_Conditional_10_Conditional_4_Conditional_0_Template","ɵɵconditional","AuthComponent_Conditional_10_Conditional_4_contFlowTmp","ctx_r10","_r23","ctx_r22","submit","_c2","ctx_r11","loginForm","valid","loading","recaptchaTokenSet","ɵɵtextInterpolate1","_r25","ctx_r24","ctx_r12","codeSet","AuthComponent_Conditional_10_Conditional_0_Template","AuthComponent_Conditional_10_Conditional_1_Template","AuthComponent_Conditional_10_Conditional_2_Template","AuthComponent_Conditional_10_Conditional_3_Template","AuthComponent_Conditional_10_Conditional_4_Template","_r27","ctx_r26","sendCaptchaResponse","AuthComponent_Conditional_10_Conditional_6_Template","AuthComponent_Conditional_10_Conditional_7_Template","ctx_r4","AuthComponent_Conditional_10_contFlowTmp","forceResend","siteKey","AuthComponent","constructor","authService","router","alertService","destroyRef","inject","DestroyRef","signal","environment","turnstileSiteKey","maxAttemptsReached","FormGroup","login","FormControl","Validators","required","minLength","password","pin","cfToken","transport","MfaTransport","SMS","ngOnInit","isLoggedIn","navigate","loginValueHandler","captchaResponse","controls","setValue","set","_","code","codeInput","reset","resetTurnstile","window","turnstile","value","subscribe","next","res","type","AuthResponseType","SUCCESS","location","href","MFA_CODE_MAX_ATTEMPTS","MFA_CODE_GENERATION_ERROR","showError","data","INVALID_CAPTCHA","MFA_CODE_INVALID","MFA_REQUIRED","error","valueChanges","pipe","takeUntilDestroyed","length","trim","toLowerCase","emitEvent","ɵɵdirectiveInject","AuthService","Router","AlertService","selectors","viewQuery","rf","AuthComponent_Conditional_6_Template","AuthComponent_Conditional_7_Template","AuthComponent_Conditional_8_Template","AuthComponent_Conditional_9_Template","AuthComponent_Conditional_10_Template","AuthComponent_Conditional_11_Template","_AuthComponent","routes","path","component","AuthComponent","AuthRoutingModule","RouterModule","forChild","_AuthRoutingModule","AuthModule","CommonModule","AuthRoutingModule","HttpClientModule","MatCardModule","MatFormFieldModule","MatIconModule","ReactiveFormsModule","MatSnackBarModule","MatInputModule","MatButtonModule","MatRippleModule","MatProgressSpinnerModule","MatProgressBarModule","MatMenuModule","MatListModule","MatTooltipModule","NgxTurnstileModule","CodeInputModule","ResendTimerComponent","_AuthModule"],"x_google_ignoreList":[1,2]}