{"version":3,"file":"583.872e23d0a927cd1d.js","mappings":"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","names":["constructor","this","KeysPipe","transform","value","Object","keys","pure","static","event","ifKey","keysToCheck","split","some","k","key","i0","ctx_r35","oxw","ctx_r37","ctx_r38","ctx_r39","ctx_r40","ctx_r43","ctx_r47","window","parent","routes","path","component","keysPipe","timerService","fb","activatedRoute","sharedService","authService","router","Subject","Config","Math","random","toString","substring","Date","getTime","checkTokenValidity","config","length","allowNumbersOnly","isPasswordInput","letterCase","inputControls","Array","queryParams","pipe","takeUntil","unsubscribe$","subscribe","p","invitationId","id","console","log","hasRequiredParams","tokenCheckRequest$","complete","updateTokenCheckProgress","initLoginRequest","transportForm","otpTransportLoginForm","controls","inputType","transportTypes$","initialiseAuthetication","tap","submitted","err","catchError","transportTypeError","throwError","requestOTP","confirmOTPError","get","header","sendOTPbuttonLabel","showOTPFields","startTimer","setTimeout","autoFocusOTP","verifyOTP","verifySubmitted","otp","res","sessionStorage","setItem","AuthConstants","JSON","stringify","updateIsLoggedIn","stopTimer","navigate","resetOTPView","display","otpForm","reset","startCountdownTimer","otpTimerInMinutes","currentTimerDisplay$","t","buildOtpForm","FormGroup","group","transportType","transType","index","addControl","getControlName","FormControl","valueChanges","v","forEach","val","setValue","rebuildValue","disableAutoFocus","ele","document","getElementById","componentKey","focus","idx","onKeyDown","$event","inputIdx","KeyboardUtil","preventDefault","onInput","validateNumber","currentVal","target","stopPropagation","onKeyUp","nextInputId","appendKey","prevInputId","setSelected","ifValidKeyCode","test","eleId","focusTo","setSelectionRange","inp","isMobile","navigator","userAgent","allowKeyCodes","includes","keyCode","isNaN","replace","from","c","containerItem","indexOfElementToFocus","getElementsByClassName","ctrlVal","isLengthExceed","isCaseTransformEnabled","toLocaleLowerCase","transformedVal","toUpperCase","toLowerCase","formCtrl","handlePaste","e","clipboardData","pastedData","getData","ngOnInit","updateTimerStatus","ngOnDestroy","next","ngAfterViewInit","LoginComponent","selectors","TimerService","AuthService","decls","signOut","closeTab","close","LogoutComponent","redirectTo","pathMatch","AuthRoutingModule","imports","RouterModule","AuthModule","Title","CommonModule","FlexLayoutModule","ReactiveFormsModule","FormsModule"],"sourceRoot":"webpack:///","sources":["./src/app/views/authetication/login/models/config.ts","./src/app/views/authetication/login/pipes/keys.pipe.ts","./src/app/views/authetication/login/utils/keyboardUtil.ts","./src/app/views/authetication/login/login.component.html","./src/app/views/authetication/auth.routing.ts","./src/app/views/authetication/login/login.component.ts","./src/app/views/authetication/logout/logout.component.ts","./src/app/views/authetication/logout/logout.component.html","./src/app/views/authetication/auth.module.ts"],"sourcesContent":["export class Config {\r\n inputStyles?: { [key: string]: any };\r\n containerStyles?: { [key: string]: any };\r\n allowKeyCodes?: string[];\r\n length: number = 4;\r\n allowNumbersOnly?: boolean;\r\n inputClass?: string;\r\n containerClass?: string;\r\n isPasswordInput?: boolean;\r\n disableAutoFocus?: boolean = false;\r\n placeholder?: string;\r\n letterCase: 'Upper' | 'Lower' = 'Upper';\r\n }\r\n\r\n\r\nexport interface OTPTransportType {\r\nlabel: string;\r\nvalue: string;\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'keys'\r\n})\r\nexport class KeysPipe implements PipeTransform {\r\n transform(value: any): string[] {\r\n return Object.keys(value);\r\n }\r\n}\r\n","export class KeyboardUtil {\r\n\r\n static ifBackspaceOrDelete(event: KeyboardEvent) {\r\n return this.ifKey(event, 'Backspace;Delete;Del');\r\n }\r\n static ifRightArrow(event: KeyboardEvent) {\r\n return this.ifKey(event, 'ArrowRight;Right');\r\n }\r\n static ifLeftArrow(event: KeyboardEvent) {\r\n return this.ifKey(event, 'ArrowLeft;Left');\r\n }\r\n static ifSpacebar(event: KeyboardEvent) {\r\n return this.ifKey(event, 'Spacebar; '); // don't remove the space after ; as this will check for space key\r\n }\r\n static ifKey(event: KeyboardEvent, keys: string): boolean {\r\n const keysToCheck = keys.split(';');\r\n return keysToCheck.some(k => k === event.key);\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n EVENT RSVP\r\n

\r\n
\r\n
\r\n\r\n
\r\n \r\n

{{ otpNotice }}

\r\n
\r\n \r\n
\r\n\r\n \r\n Hi {{ vm.OTPTransportTypes?.client }},\r\n \r\n\r\n

\r\n To keep your information secure please confirm your identity\r\n with one-time-pin (OTP).\r\n

\r\n
\r\n\r\n \r\n 1 && !display\"\r\n >\r\n How would you like to receive your OTP?\r\n

\r\n
\r\n
\r\n 1\"\r\n >\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n

Email

\r\n

SMS

\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n

\r\n Please enter the OTP that was sent to you\r\n

\r\n\r\n

\r\n {{ display }}\r\n

\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n 0 && !display\"\r\n [disabled]=\"display\"\r\n (click)=\"requestOTP()\"\r\n >\r\n {{ sendOTPbuttonLabel }}\r\n \r\n
\r\n
\r\n \r\n This will be sent to your email address\r\n

\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n {{ otpVerify }}\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n Terms and conditions\r\n
\r\n\r\n
\r\n \r\n Regulatory disclosure\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n

\r\n RMB is a division of FirstRand Bank Limited,\r\n is an Authorised Financial Services and Credit Provider\r\n NCRCP20.\r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n
Error: Failed to login.
\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { LogoutComponent } from './logout/logout.component';\r\n\r\n\r\nconst isIframe = window !== window.parent && !window.opener;\r\n\r\nconst routes: Routes = [\r\n { path: 'login', component: LoginComponent },\r\n { path: 'logout', component: LogoutComponent },\r\n {\r\n path: '',\r\n redirectTo: '/login',\r\n pathMatch: 'full',\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n providers: []\r\n})\r\nexport class AuthRoutingModule {}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n FormGroup,\r\n FormControl,\r\n FormBuilder,\r\n AbstractControl,\r\n} from '@angular/forms';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { Observable, Subject, throwError } from 'rxjs';\r\nimport { catchError, takeUntil, tap } from 'rxjs/operators';\r\nimport { SharedService } from 'src/app/services';\r\nimport { TimerService } from 'src/app/services/timer.service';\r\nimport { AuthConstants } from 'src/app/shared/constants/auth.constatnts';\r\nimport { Config, OTPTransportType } from './models/config';\r\nimport { KeysPipe } from './pipes/keys.pipe';\r\nimport { KeyboardUtil } from './utils/keyboardUtil';\r\nimport { AzureToken, User } from '../models';\r\nimport { AuthService } from 'src/app/shared/services/auth.service';\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.css'],\r\n providers: [KeysPipe, TimerService, AuthService],\r\n})\r\nexport class LoginComponent implements OnInit, OnDestroy {\r\n //#region Declarations\r\n display = ``;\r\n otpTimerInMinutes = 2;\r\n otp = ``;\r\n resendOtp = false;\r\n otpNotice = ``;\r\n otpVerify = `Verify OTP`;\r\n sendOTPbuttonLabel = `Request OTP`;\r\n header = `Request One Time Password`;\r\n otpRequestSent = false;\r\n showOTPFields = false;\r\n submitted = false;\r\n verifySubmitted = false;\r\n\r\n hasRequiredParams = false;\r\n\r\n unsubscribe$ = new Subject();\r\n\r\n config = new Config();\r\n\r\n formCtrl!: FormControl;\r\n otpForm!: FormGroup;\r\n otpTransportLoginForm!: FormGroup;\r\n currentVal!: string;\r\n inputControls: FormControl[];\r\n contactId = ``;\r\n invitationId = ``;\r\n\r\n transportTypes$!: Observable;\r\n public transportTypeError: any = null;\r\n public confirmOTPError: any = null;\r\n\r\n VerifyOTP$!: Observable;\r\n\r\n get transportForm(): { [key: string]: AbstractControl } {\r\n return this.otpTransportLoginForm.controls;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Timer control declarations\r\n\r\n componentKey =\r\n Math.random().toString(36).substring(2) + new Date().getTime().toString(36);\r\n get inputType() {\r\n return 'text';\r\n }\r\n\r\n //#endregion\r\n\r\n constructor(\r\n private keysPipe: KeysPipe,\r\n private timerService: TimerService,\r\n private fb: FormBuilder,\r\n private activatedRoute: ActivatedRoute,\r\n private sharedService: SharedService,\r\n private authService: AuthService,\r\n private router: Router\r\n ) {\r\n //#region\r\n\r\n this.checkTokenValidity();\r\n\r\n this.config = {\r\n length: 4,\r\n allowNumbersOnly: false,\r\n isPasswordInput: false,\r\n letterCase: 'Upper',\r\n };\r\n\r\n this.inputControls = new Array(this.config.length);\r\n\r\n this.activatedRoute.queryParams\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((p: Params) => {\r\n this.invitationId = p[`id`] || ``;\r\n\r\n console.log(`invite: ${this.invitationId}`);\r\n if (this.invitationId) {\r\n this.hasRequiredParams = true;\r\n\r\n // sessionStorage.setItem(AuthConstants.EventsData, this.invitationId);\r\n\r\n this.sharedService.tokenCheckRequest$\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((complete: boolean) => {\r\n if (complete) {\r\n // only execute once token validity http request is done\r\n this.sharedService.updateTokenCheckProgress(false); //reset status\r\n this.initLoginRequest();\r\n }\r\n });\r\n\r\n // this.initLoginRequest();\r\n } else {\r\n this.hasRequiredParams = false;\r\n }\r\n });\r\n\r\n //#endregion\r\n }\r\n\r\n //#region HTTP Requests\r\n private initLoginRequest() {\r\n this.transportTypes$ = this.authService\r\n .initialiseAuthetication(this.invitationId)\r\n .pipe(\r\n tap(\r\n () => {\r\n this.submitted = true;\r\n },\r\n (err) => {},\r\n () => {\r\n this.submitted = false;\r\n }\r\n )\r\n )\r\n .pipe(\r\n catchError((err) => {\r\n this.transportTypeError = err;\r\n this.submitted = false;\r\n return throwError(err);\r\n })\r\n );\r\n }\r\n\r\n requestOTP(): void {\r\n this.submitted = true;\r\n this.confirmOTPError = null;\r\n this.transportTypeError = null;\r\n\r\n this.authService\r\n .requestOTP(\r\n this.otpTransportLoginForm.get([`transportType`, `transType`]).value\r\n )\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .pipe(\r\n //ignoreElements(),\r\n catchError((err) => {\r\n return throwError(err);\r\n })\r\n )\r\n .subscribe(() => {\r\n console.log(`otp request..`);\r\n this.header = `Enter One Time Password`;\r\n this.sendOTPbuttonLabel = `Request OTP`;\r\n this.showOTPFields = true;\r\n this.submitted = false;\r\n this.startTimer();\r\n\r\n setTimeout(() => {\r\n this.autoFocusOTP();\r\n }, 1500);\r\n });\r\n }\r\n\r\n verifyOTP(): void {\r\n console.log(`verify otp`);\r\n this.verifySubmitted = true;\r\n\r\n this.authService\r\n .verifyOTP(this.otp)\r\n .pipe(\r\n catchError((err) => {\r\n this.confirmOTPError = err;\r\n setTimeout(() => {\r\n //this.resetOTPView();\r\n this.verifySubmitted = false;\r\n this.confirmOTPError = null;\r\n this.transportTypeError = null;\r\n this.submitted = false;\r\n this.showOTPFields = true;\r\n }, 3000);\r\n return throwError(err);\r\n })\r\n )\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((res: any) => {\r\n this.verifySubmitted = false;\r\n\r\n if (res) {\r\n sessionStorage.setItem(AuthConstants.UserData, JSON.stringify(res));\r\n\r\n // console.log(`otp confirmed..`);\r\n\r\n sessionStorage.setItem(AuthConstants.EventsData, this.invitationId);\r\n\r\n this.sharedService.updateIsLoggedIn(true);\r\n\r\n this.timerService.stopTimer();\r\n\r\n this.router.navigate(['/events/rsvp'], {\r\n queryParams: { id: this.invitationId },\r\n });\r\n\r\n // window.location.href = `http://rmb-vdv-aspn01/rmb-cms?id=${this.invitationId}`;\r\n }\r\n });\r\n }\r\n\r\n private checkTokenValidity() {\r\n this.sharedService.updateTokenCheckProgress(true);\r\n // console.log(`check token`);\r\n // if (\r\n // localStorage[AuthConstants.AzureToken] &&\r\n // sessionStorage.getItem(AuthConstants.EventsData)\r\n // ) {\r\n // const inviteId = sessionStorage.getItem(AuthConstants.EventsData) ?? ``;\r\n // const tk =\r\n // (JSON.parse(localStorage[AuthConstants.AzureToken]) as AzureToken) ??\r\n // null;\r\n\r\n // this.sharedService.updateTokenCheckProgress(false);\r\n\r\n // this.authService\r\n // .checkTokenValidity()\r\n // .pipe(takeUntil(this.unsubscribe$))\r\n // .subscribe(\r\n // (usr: User) => {\r\n // this.sharedService.updateTokenCheckProgress(false);\r\n // sessionStorage.setItem(AuthConstants.UserData, JSON.stringify(usr));\r\n // // redirect to rsvp\r\n // this.router.navigate(['/events/rsvp'], {\r\n // queryParams: { id: inviteId },\r\n // });\r\n // },\r\n // () => {\r\n // this.sharedService.updateTokenCheckProgress(true);\r\n // }\r\n // );\r\n // } else {\r\n // this.sharedService.updateTokenCheckProgress(true);\r\n // }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Helpers\r\n\r\n private resetOTPView() {\r\n this.verifySubmitted = false;\r\n this.confirmOTPError = null;\r\n this.transportTypeError = null;\r\n this.submitted = false;\r\n this.showOTPFields = false;\r\n this.otp = ``;\r\n this.display = ``;\r\n this.timerService.stopTimer();\r\n this.otpForm.reset();\r\n }\r\n\r\n startTimer(): void {\r\n this.header = `Enter One Time Password`;\r\n this.showOTPFields = true;\r\n this.otp = ``;\r\n this.display = ``;\r\n // minor delay to accomodate page load\r\n this.timerService.startCountdownTimer(this.otpTimerInMinutes, null, () => {\r\n this.resetOTPView();\r\n });\r\n\r\n this.timerService.currentTimerDisplay$\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .pipe(\r\n tap(() => {\r\n // this.otp = ``;\r\n this.display = ``;\r\n })\r\n )\r\n .subscribe((t) => {\r\n this.display = t;\r\n if (this.display === `00:00`) {\r\n this.display = ``;\r\n }\r\n });\r\n }\r\n\r\n private buildOtpForm() {\r\n this.otpForm = new FormGroup({});\r\n\r\n this.otpTransportLoginForm = this.fb.group({\r\n // email: [null, [Validators.required, Validators.email,Validators.pattern('[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,3}$')]],\r\n transportType: this.fb.group({\r\n transType: ['Email'],\r\n }),\r\n });\r\n\r\n for (let index = 0; index < this.config.length; index++) {\r\n this.otpForm.addControl(this.getControlName(index), new FormControl());\r\n }\r\n this.otpForm.valueChanges.subscribe((v: object) => {\r\n this.keysPipe.transform(this.otpForm.controls).forEach((k) => {\r\n const val = this.otpForm.controls[k].value;\r\n if (val && val.length > 1) {\r\n if (val.length >= this.config.length) {\r\n this.setValue(val);\r\n } else {\r\n this.rebuildValue();\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n private autoFocusOTP() {\r\n if (\r\n !this.config.disableAutoFocus &&\r\n Object.keys(this.otpForm.controls).length > 0\r\n ) {\r\n // console.log(this.componentKey)\r\n const id = `otp_0_${this.componentKey}`;\r\n const ele = document.getElementById(id);\r\n if (ele) {\r\n ele.focus();\r\n }\r\n }\r\n }\r\n\r\n private getControlName(idx: number): any {\r\n return `ctrl_${idx}`;\r\n }\r\n\r\n onKeyDown($event: any, inputIdx: any): any {\r\n if (KeyboardUtil.ifSpacebar($event)) {\r\n $event.preventDefault();\r\n return false;\r\n }\r\n }\r\n onInput($event: any) {\r\n const newVal = this.currentVal\r\n ? `${this.currentVal}${$event.target.value}`\r\n : $event.target.value;\r\n if (this.config.allowNumbersOnly && !this.validateNumber(newVal)) {\r\n $event.target.value = '';\r\n $event.stopPropagation();\r\n $event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n onKeyUp($event: any, inputIdx: any) {\r\n const nextInputId = this.appendKey(`otp_${inputIdx + 1}`);\r\n const prevInputId = this.appendKey(`otp_${inputIdx - 1}`);\r\n if (KeyboardUtil.ifRightArrow($event)) {\r\n $event.preventDefault();\r\n this.setSelected(nextInputId);\r\n return;\r\n }\r\n if (KeyboardUtil.ifLeftArrow($event)) {\r\n $event.preventDefault();\r\n this.setSelected(prevInputId);\r\n return;\r\n }\r\n if (KeyboardUtil.ifBackspaceOrDelete($event) && !$event.target.value) {\r\n this.setSelected(prevInputId);\r\n this.rebuildValue();\r\n return;\r\n }\r\n\r\n if (!$event.target.value) {\r\n return;\r\n }\r\n\r\n if (this.ifValidKeyCode($event)) {\r\n this.setSelected(nextInputId);\r\n }\r\n this.rebuildValue();\r\n }\r\n\r\n validateNumber(val: any) {\r\n return val && /^\\d*\\.?\\d*$/.test(val);\r\n }\r\n\r\n appendKey(id: any) {\r\n return `${id}_${this.componentKey}`;\r\n }\r\n\r\n setSelected(eleId: any) {\r\n this.focusTo(eleId);\r\n const ele: any = document.getElementById(eleId);\r\n if (ele && ele.setSelectionRange) {\r\n setTimeout(() => {\r\n ele.setSelectionRange(0, 1);\r\n }, 0);\r\n }\r\n }\r\n\r\n ifValidKeyCode(event: any) {\r\n const inp = event.key;\r\n const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\r\n return (\r\n isMobile ||\r\n /[a-zA-Z0-9-_]/.test(inp) ||\r\n (this.config.allowKeyCodes &&\r\n this.config.allowKeyCodes.includes(event.keyCode))\r\n );\r\n }\r\n\r\n focusTo(eleId: any) {\r\n const ele: any = document.getElementById(eleId);\r\n if (ele) {\r\n ele.focus();\r\n }\r\n }\r\n\r\n // method to set component value\r\n setValue(value: any) {\r\n if (this.config.allowNumbersOnly && isNaN(value)) {\r\n return;\r\n }\r\n this.otpForm.reset();\r\n if (!value) {\r\n this.rebuildValue();\r\n return;\r\n }\r\n value = value.toString().replace(/\\s/g, ''); // remove whitespace\r\n Array.from(value).forEach((c, idx) => {\r\n if (this.otpForm.get(this.getControlName(idx))) {\r\n this.otpForm.get(this.getControlName(idx)).setValue(c);\r\n }\r\n });\r\n if (!this.config.disableAutoFocus) {\r\n const containerItem = document.getElementById(`c_${this.componentKey}`);\r\n const indexOfElementToFocus =\r\n value.length < this.config.length\r\n ? value.length\r\n : this.config.length - 1;\r\n const ele: any =\r\n containerItem.getElementsByClassName('otp-input')[\r\n indexOfElementToFocus\r\n ];\r\n if (ele && ele.focus) {\r\n ele.focus();\r\n }\r\n }\r\n this.rebuildValue();\r\n }\r\n\r\n rebuildValue() {\r\n let val = '';\r\n this.keysPipe.transform(this.otpForm.controls).forEach((k) => {\r\n if (this.otpForm.controls[k].value) {\r\n let ctrlVal = this.otpForm.controls[k].value;\r\n const isLengthExceed = ctrlVal.length > 1;\r\n // tslint:disable-next-line:max-line-length\r\n let isCaseTransformEnabled =\r\n !this.config.allowNumbersOnly &&\r\n this.config.letterCase &&\r\n (this.config.letterCase.toLocaleLowerCase() === 'upper' ||\r\n this.config.letterCase.toLocaleLowerCase() === 'lower');\r\n ctrlVal = ctrlVal[0];\r\n // tslint:disable-next-line:max-line-length\r\n const transformedVal = isCaseTransformEnabled\r\n ? this.config.letterCase.toLocaleLowerCase() === 'upper'\r\n ? ctrlVal.toUpperCase()\r\n : ctrlVal.toLowerCase()\r\n : ctrlVal;\r\n if (isCaseTransformEnabled && transformedVal === ctrlVal) {\r\n isCaseTransformEnabled = false;\r\n } else {\r\n ctrlVal = transformedVal;\r\n }\r\n val += ctrlVal;\r\n if (isLengthExceed || isCaseTransformEnabled) {\r\n this.otpForm.controls[k].setValue(ctrlVal);\r\n }\r\n }\r\n });\r\n if (this.formCtrl) {\r\n this.formCtrl.setValue(val);\r\n }\r\n // this.onInputChange.emit(val);\r\n this.currentVal = val;\r\n this.otp = this.currentVal;\r\n }\r\n\r\n handlePaste(e: any) {\r\n // Get pasted data via clipboard API\r\n const clipboardData = e.clipboardData || window[`clipboardData`];\r\n let pastedData;\r\n if (clipboardData) {\r\n pastedData = clipboardData.getData('Text');\r\n }\r\n // Stop data actually being pasted into div\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n if (\r\n !pastedData ||\r\n (this.config.allowNumbersOnly && !this.validateNumber(pastedData))\r\n ) {\r\n return;\r\n }\r\n this.setValue(pastedData);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Lifecycle hooks\r\n ngOnInit() {\r\n this.sharedService.updateTimerStatus(false);\r\n this.buildOtpForm();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // this.autoFocusOTP();\r\n }\r\n\r\n //#endregion\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AuthService } from 'src/app/shared/services/auth.service';\r\n\r\n@Component({\r\n selector: 'app-logout',\r\n templateUrl: './logout.component.html',\r\n styleUrls: ['./logout.component.css'],\r\n providers: [AuthService],\r\n})\r\nexport class LogoutComponent implements OnInit {\r\n constructor(private authService: AuthService) {\r\n console.log(`logout...`);\r\n this.authService.signOut();\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n closeTab() {\r\n close();\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n

You have successfully logged out.

\r\n\r\n
\r\n\r\n\r\n\r\n \r\n\r\n
\r\n
\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { KeysPipe } from './login/pipes/keys.pipe';\r\nimport { AuthRoutingModule } from './auth.routing';\r\nimport { AuthComponent } from './shared/auth/auth.component';\r\nimport { LogoutComponent } from './logout/logout.component';\r\n\r\n@NgModule({\r\n declarations: [LoginComponent, AuthComponent, KeysPipe, LogoutComponent],\r\n imports: [\r\n CommonModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n AuthRoutingModule, \r\n ],\r\n exports: [],\r\n providers: [\r\n Title,\r\n ],\r\n})\r\nexport class AuthModule {}\r\n"]}