@annalib/anna-cognito-lib 2.2.8 → 2.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"annalib-anna-cognito-lib.mjs","sources":["../../../projects/anna-cognito-lib/src/lib/constants/loginConstant.ts","../../../projects/anna-cognito-lib/src/lib/config/auth-service.token.ts","../../../projects/anna-cognito-lib/src/lib/config/config-service.token.ts","../../../projects/anna-cognito-lib/src/lib/config/acl-service.token.ts","../../../projects/anna-cognito-lib/src/lib/services/acl.service.ts","../../../projects/anna-cognito-lib/src/lib/services/auth.service.ts","../../../projects/anna-cognito-lib/src/lib/directives/spinner-button/spinner-button.directive.ts","../../../projects/anna-cognito-lib/src/lib/components/version-and-term-policy/version-and-term-policy.component.ts","../../../projects/anna-cognito-lib/src/lib/components/version-and-term-policy/version-and-term-policy.component.html","../../../projects/anna-cognito-lib/src/lib/components/surewaves-year-logo/surewaves-year-logo.component.ts","../../../projects/anna-cognito-lib/src/lib/components/surewaves-year-logo/surewaves-year-logo.component.html","../../../projects/anna-cognito-lib/src/lib/components/powered-by-logo-template/powered-by-logo-template.component.ts","../../../projects/anna-cognito-lib/src/lib/components/powered-by-logo-template/powered-by-logo-template.component.html","../../../projects/anna-cognito-lib/src/lib/components/login/login.component.ts","../../../projects/anna-cognito-lib/src/lib/components/login/login.component.html","../../../projects/anna-cognito-lib/src/lib/components/sso-login/sso-login.component.ts","../../../projects/anna-cognito-lib/src/lib/components/sso-login/sso-login.component.html","../../../projects/anna-cognito-lib/src/lib/components/password-matching/password-matching.component.ts","../../../projects/anna-cognito-lib/src/lib/components/password-matching/password-matching.component.html","../../../projects/anna-cognito-lib/src/lib/components/set-new-password/set-new-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/set-new-password/set-new-password.component.html","../../../projects/anna-cognito-lib/src/lib/models/auth.model.ts","../../../projects/anna-cognito-lib/src/lib/components/forgot-password/forgot-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/forgot-password/forgot-password.component.html","../../../projects/anna-cognito-lib/src/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.html","../../../projects/anna-cognito-lib/src/lib/anna-cognito-lib.module.ts","../../../projects/anna-cognito-lib/src/lib/services/config.service.ts","../../../projects/anna-cognito-lib/src/public-api.ts","../../../projects/anna-cognito-lib/src/annalib-anna-cognito-lib.ts"],"sourcesContent":["export class LoginConstant {\r\n // Login page\r\n static readonly enterEmail = \"Enter your username\";\r\n static readonly password = \"Password\";\r\n static readonly confirmPassword = \"Confirm Password\";\r\n static readonly login = \"Login\";\r\n static readonly otp = \"OTP\";\r\n static readonly forgotPassword = \"Forgot \" + LoginConstant.password.toLowerCase() + \"?\";\r\n\r\n // set new password\r\n static readonly setNewPasswordHeading = \"Set new \" + LoginConstant.password.toLowerCase();\r\n static readonly setNewPasswordButton = \"Set and \" + LoginConstant.login.toLowerCase() + \" again\";\r\n static readonly passwordMustContain = \"The password must contain:\";\r\n static readonly minimumCharacter = \"Minimum 8 characters\";\r\n static readonly oneUppercase = \"1 Uppercase\";\r\n static readonly oneLowercase = \"1 Lowercase\";\r\n static readonly oneNumber = \"1 Numerical\";\r\n static readonly specialCharacter = \"1 Special character\";\r\n static readonly passwordNotMatching = \"The passwords do not match. Please try again.\";\r\n static readonly userNamePasswordIncorrect = \"Incorrect username or password\";\r\n static readonly userNotFound = \"No registered user found\";\r\n static readonly loginAgain = LoginConstant.login + \" again\";\r\n static readonly firstTimeLoginUserTempPasswordMsg = \"You are logging in for the first time. Kindly use the temporary password provided in the welcome email, to login to your account. \";\r\n static readonly tempPasswordExpiryError = \"Temporary password has expired and must be reset by an administrator.\"\r\n static readonly tempPasswordOnExpiryErrorMsg = \"Password has expired. A new password has been sent to your registered email. Kindly login again with new link and credentials.\";\r\n\r\n // verify OTP & set new password\r\n static readonly verifyAndSetNewPasswordheading = \"Enter \" + LoginConstant.otp + \" & set new password\";\r\n static readonly verifyAndSetNewPasswordMessage = \"An \" + LoginConstant.otp + \" has been succesfully emailed to \";\r\n static readonly pleaseEnterItBelow = \". Please enter it below.\";\r\n static readonly regenerateOtp = \"Regenerate \" + LoginConstant.otp;\r\n static readonly enterOtp = \"Enter \" + LoginConstant.otp;\r\n static readonly submit = \"Submit\";\r\n static readonly attempt = \"Attempt\";\r\n static readonly attemptLimitExceeded =\r\n \"You have exceeded the maximum number of allowed attempts. Please try again after 15 minutes.\";\r\n static readonly attemptMessage = \" of 5. The OTP entered is incorrect. Please try again with the right one.\";\r\n static readonly sessionExpired = \"The session has expired. Please try again.\";\r\n static readonly sessionExpiredError = \"Your session has expired. Please login again\";\r\n\r\n // forgot password\r\n static readonly forgotPasswordHeading = \"Forgot your password?\";\r\n static readonly forgotPasswordMessage = \"Please enter your username.\";\r\n static readonly forgotPasswordButton = \"Get \" + LoginConstant.otp;\r\n static readonly apiFailErrorMessage = \"Unable to connect to server right now. Please try after some time.\";\r\n\r\n //url\r\n static readonly setNewPasswordUrl = \"/set-new-password\";\r\n static readonly forgortPasswordPageUrl = \"/forgot-password\";\r\n static readonly verifyAndSetNewPasswordUrl = \"/verify-and-set-new-password\";\r\n static readonly loginPageUrl = \"/login\";\r\n static readonly coPilotloginPageUrl = \"/co-pilot-login\";\r\n static readonly welcomeScrreenUrl = \"/welcome-screen\";\r\n static readonly homePageUrl = \"/dashboard\";\r\n static readonly stationSettingUrl = \"/station-settings\";\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n/** Token to inject the auth service */\r\nexport const AUTH_SERVICE_TOKEN:\r\n InjectionToken<IAuthService> =\r\n new InjectionToken<IAuthService>('Auth service token');\r\n\r\nexport interface IAuthService {\r\n isLoggingIn: boolean; \r\n onSuccessfulAuthenticatingUser(loggedInViaSso: boolean): void;\r\n isUsernameAvailable(username: string): Observable<any>;\r\n isEmailAvailable(emailId: string, ogId:number): Observable<any>;\r\n getUserState(username: string): Observable<any>;\r\n navigateBasedOnUserRole(loginUserData: any): void;\r\n getPublicIp(): string;\r\n sendRegenerationEmail(userCode:string):void;\r\n onPasswordUpdate(userName:string): void;\r\n newPasswordSetThenUpdateToBackend(userCode: string): void;\r\n signInWithDuo(): void;\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\n/** Token to inject the auth service */\r\nexport const CONFIG_SERVICE_TOKEN:\r\n InjectionToken<IConfigService> =\r\n new InjectionToken<IConfigService>('Cognito config service token');\r\n\r\nexport interface IConfigService {\r\n appGenericConfig : { \r\n loginPageLogoImgUrl: string,\r\n cognito : {\r\n userPoolId: string,\r\n clientId: string,\r\n },\r\n currentAnnaVersion: string\r\n };\r\n\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\n/** Token to inject the acl service */\r\nexport const ACL_SERVICE_TOKEN:\r\n InjectionToken<IAclService> =\r\n new InjectionToken<IAclService>('ACL service token');\r\n\r\nexport interface IAclService {\r\n urlToCognitoPrivilegeMap: {[key: string]: string};\r\n MANAGE_USERS_WRITE: string;\r\n ORDER_BIZ_RULES_WRITE: string;\r\n ORDER_REVISIONS_WRITE: string;\r\n ORDER_SPOTS_REPORT_WRITE: string;\r\n POLITICAL_WINDOW_WRITE: string;\r\n DASHBOARD_DAILY_REVISIONS_READ: string;\r\n ENTER_EDIT_TARGET_LUR_WRITE: string;\r\n ENTER_EDIT_TARGET_CSR_WRITE: string;\r\n MANAGE_ROLES_WRITE: string;\r\n ACTIVE_STATION_USER_READ: string;\r\n USER_AWAITING_ACTIVATION_WRITE: string;\r\n DAILY_REVISION_ONGOING_AND_DAILY_COMPLETED_READ: string;\r\n USER_MANAGEMENT_READ: string;\r\n USER_MANAGEMENT_WRITE: string;\r\n STATION_BUSINESS_RULE_WRITE: string;\r\n ADVERTISER_BUSINESS_RULE_WRITE: string;\r\n EC_LISTING_READ: string;\r\n EC_LISTING_WRITE: string;\r\n ORDER_DISCREPANCIES: string;\r\n REVISION_CYCLE_SETTINGS_READ: string;\r\n REVISION_CYCLE_SETTINGS_WRITE: string;\r\n ROLLING_AVERAGES_READ: string;\r\n ROLLING_AVERAGES_WRITE: string;\r\n WRITE_ENABLED_ORDERS_READ: string;\r\n WRITE_ENABLED_ORDERS_WRITE: string;\r\n STATION_POLITICAL_RATE_CARD_READ: string;\r\n STATION_POLITICAL_RATE_CARD_WRITE: string;\r\n AUDIENCE_ESTIMATES_READ: string;\r\n}","import { Inject, Injectable } from \"@angular/core\";\r\nimport { IAclService, ACL_SERVICE_TOKEN } from '../config/acl-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaLibAclService {\r\n constructor(@Inject(ACL_SERVICE_TOKEN) public consumingProjectAclService: IAclService) {}\r\n\r\n userGroupsInCognitoJWT: string[];\r\n isUserAuthorisedToAccessPage(url: string): boolean {\r\n let privilegeName = this.consumingProjectAclService.urlToCognitoPrivilegeMap[url];\r\n return this.userGroupsInCognitoJWT.includes(privilegeName);\r\n }\r\n\r\n isUserAuthorisedToAccessElement(privilege: string): boolean {\r\n return this.userGroupsInCognitoJWT.includes(privilege);\r\n }\r\n\r\n}\r\n","// Angular import statements\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { Inject, Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// Third party import statements\r\nimport {\r\n AuthTokens, SignInInput, confirmResetPassword, confirmSignIn, fetchAuthSession,\r\n getCurrentUser, resetPassword, signIn, signOut\r\n} from \"aws-amplify/auth\";\r\n\r\n// User defined import statements\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AUTH_SERVICE_TOKEN, IAuthService } from '../config/auth-service.token';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../config/config-service.token';\r\nimport { LoginConstant } from \"../constants/loginConstant\";\r\nimport { AnnaLibAclService } from './acl.service';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaLibAuthService {\r\n accessToken: string;\r\n IdToken: any;\r\n loginErrorMessage: string | null;\r\n setNewPasswordErrorMessage: string;\r\n setNewPasswordButtonMessage: string;\r\n verifyAndSetNewPasswordErrorMessage: string;\r\n verifyAndSetNewPasswordMessage: string;\r\n verifyAndSetNewPasswordButton: string;\r\n noOfAttempts = 0;\r\n sessionLocked = false;\r\n userName: any;\r\n accessTokenTimerId: any;\r\n forgotPasswordAndGlobalSignoutLoader: boolean;\r\n\r\n constructor(\r\n private router: Router,\r\n public aclService: AnnaLibAclService,\r\n public httpClient: HttpClient,\r\n private toastr: ToastrService,\r\n @Inject(AUTH_SERVICE_TOKEN) public consumingProjectAuthService: IAuthService,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService) {\r\n if (!consumingProjectAuthService) {\r\n throw new Error('You must provide a authService');\r\n }\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n async isUserLoggedIn(): Promise<boolean> {\r\n try {\r\n await getCurrentUser();\r\n return new Promise(async (resolve, reject) => {\r\n const session: any = await fetchAuthSession();\r\n if (session?.tokens) {\r\n this.IdToken = session?.tokens.idToken.toString();\r\n this.getAllCognitoTokenAndGroups(session.tokens);\r\n resolve(true);\r\n } else {\r\n this.toastr.error(LoginConstant.sessionExpiredError);\r\n this.sessionTimeout();\r\n resolve(false);\r\n }\r\n });\r\n } catch (error) {\r\n return new Promise((resolve) => {\r\n clearInterval(this.accessTokenTimerId);\r\n resolve(false);\r\n });\r\n }\r\n }\r\n\r\n sessionTimeout() {\r\n localStorage.clear();\r\n clearInterval(this.accessTokenTimerId);\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n }\r\n\r\n computeTokenExpiration(idToken: any) {\r\n let currentTime = Math.floor(Date.now() / 1000);\r\n let tokenTime = idToken.payload.exp;\r\n let expTime = (tokenTime - currentTime) * 1000;\r\n return expTime;\r\n }\r\n\r\n async handleSignIn({ username, password }: SignInInput) {\r\n try {\r\n const { isSignedIn, nextStep } = await signIn({ username, password });\r\n switch (nextStep?.signInStep) {\r\n case \"DONE\":\r\n let session = await fetchAuthSession();\r\n let newExpTime = this.computeTokenExpiration(session.tokens.idToken);\r\n this.accessToken = session.tokens.accessToken.toString();\r\n localStorage.setItem(\"accessTokenExpiration\", newExpTime.toString());\r\n this.refreshAccessToken();\r\n this.loginErrorMessage = null;\r\n await this.consumingProjectAuthService.onSuccessfulAuthenticatingUser(false);\r\n this.getAllCognitoTokenAndGroups(session.tokens);\r\n break;\r\n\r\n case \"CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED\":\r\n this.consumingProjectAuthService.isLoggingIn = false;\r\n this.userName = username;\r\n this.router.navigate([LoginConstant.setNewPasswordUrl]);\r\n this.setNewPasswordErrorMessage = null;\r\n break;\r\n\r\n case \"RESET_PASSWORD\":\r\n break;\r\n }\r\n } catch (error: any) {\r\n this.consumingProjectAuthService.isLoggingIn = false;\r\n if (error?.message == LoginConstant.tempPasswordExpiryError) {\r\n this.loginErrorMessage = LoginConstant.tempPasswordOnExpiryErrorMsg;\r\n this.consumingProjectAuthService.sendRegenerationEmail(username);\r\n } else if (error?.message === \"Password attempts exceeded\") {\r\n this.loginErrorMessage = LoginConstant.attemptLimitExceeded;\r\n } else {\r\n this.loginErrorMessage = LoginConstant.userNamePasswordIncorrect;\r\n }\r\n }\r\n }\r\n\r\n async getAllCognitoTokenAndGroups(token: AuthTokens) {\r\n this.accessToken = token.accessToken.toString();\r\n this.IdToken = token.idToken;\r\n if (\"cognito:groups\" in token.accessToken.payload) {\r\n let userGroupsInCognitoJWT: any = token.accessToken.payload[\"cognito:groups\"];\r\n this.aclService.userGroupsInCognitoJWT = userGroupsInCognitoJWT;\r\n } else {\r\n this.aclService.userGroupsInCognitoJWT = [];\r\n }\r\n }\r\n\r\n refreshAccessToken() {\r\n let accessTokenExpiration = localStorage.getItem(\"accessTokenExpiration\");\r\n let expTime = accessTokenExpiration ? parseInt(accessTokenExpiration) : 0;\r\n this.accessTokenTimerId = setInterval(() => {\r\n let counter = 1000;\r\n let delayFunction = setTimeout(async () => {\r\n try {\r\n let session = await fetchAuthSession();\r\n let token = session.tokens;\r\n if (token) {\r\n this.getAllCognitoTokenAndGroups(token);\r\n let newExpTime = this.computeTokenExpiration(this.IdToken);\r\n\r\n if (newExpTime <= 0) {\r\n newExpTime = 1000;\r\n counter = 0;\r\n if (delayFunction) {\r\n clearInterval(delayFunction);\r\n }\r\n }\r\n expTime = newExpTime;\r\n localStorage.setItem(\"accessTokenExpiration\", newExpTime.toString());\r\n clearInterval(this.accessTokenTimerId);\r\n this.refreshAccessToken();\r\n } else {\r\n this.toastr.error(LoginConstant.sessionExpiredError);\r\n this.sessionTimeout();\r\n }\r\n } catch (error) {\r\n this.toastr.error(LoginConstant.sessionExpiredError);\r\n this.sessionTimeout();\r\n }\r\n }, counter);\r\n }, expTime);\r\n }\r\n\r\n async changePassword(newPassword: string) {\r\n try {\r\n let inputParam = {\r\n challengeResponse: newPassword,\r\n }\r\n const data = await confirmSignIn(inputParam);\r\n const { username } = await getCurrentUser();\r\n console.log(data);\r\n this.consumingProjectAuthService.onPasswordUpdate(username);\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n this.consumingProjectAuthService.newPasswordSetThenUpdateToBackend(username);\r\n } catch (err) {\r\n console.log(err);\r\n this.setNewPasswordErrorMessage = LoginConstant.sessionExpired;\r\n this.setNewPasswordButtonMessage = LoginConstant.loginAgain;\r\n }\r\n }\r\n\r\n async onForgotPasswordGenerateOTP(email: string) {\r\n let username = email;\r\n this.userName = email;\r\n try {\r\n let result: any = await resetPassword({ username });\r\n this.verifyAndSetNewPasswordMessage =\r\n LoginConstant.verifyAndSetNewPasswordMessage +\r\n result?.nextStep?.codeDeliveryDetails?.destination +\r\n LoginConstant.pleaseEnterItBelow;\r\n this.router.navigate([LoginConstant.verifyAndSetNewPasswordUrl]);\r\n } catch (err) {\r\n }\r\n }\r\n\r\n async verifyCode(confirmationCode: string, newPassword: string) {\r\n const { username } = await getCurrentUser();\r\n try {\r\n confirmResetPassword({ username, newPassword, confirmationCode });\r\n this.consumingProjectAuthService.onPasswordUpdate(username);\r\n this.expiryAllExistingCurrentSession(username, newPassword);\r\n } catch (err) {\r\n console.log(err);\r\n this.noOfAttempts = this.noOfAttempts + 1;\r\n this.verifyAndSetNewPasswordErrorMessage = this.forgotPasswordError(err, this.noOfAttempts);\r\n this.forgotPasswordAndGlobalSignoutLoader = false;\r\n }\r\n }\r\n\r\n forgotPasswordError(err: any, noOfAttempts: number) {\r\n let errorMessage;\r\n switch (err.code) {\r\n case \"LimitExceededException\":\r\n this.sessionLocked = true;\r\n errorMessage = LoginConstant.attemptLimitExceeded;\r\n break;\r\n case \"ExpiredCodeException\":\r\n errorMessage = LoginConstant.sessionExpired;\r\n this.verifyAndSetNewPasswordButton = LoginConstant.regenerateOtp;\r\n break;\r\n default:\r\n errorMessage = LoginConstant.attempt + \" \" + noOfAttempts + LoginConstant.attemptMessage;\r\n }\r\n return errorMessage;\r\n }\r\n\r\n\r\n signInWithDuo() {\r\n this.consumingProjectAuthService.signInWithDuo();\r\n }\r\n\r\n async handleSignOut() {\r\n try {\r\n await signOut({ global: false });\r\n } catch (error) {\r\n console.log('error signing out: ', error);\r\n }\r\n }\r\n\r\n expiryAllExistingCurrentSession(username: string, newPassword: string) {\r\n this.setUserDetails();\r\n this.onLoginInCogntioToGetAccessToken(username, newPassword);\r\n }\r\n\r\n setUserDetails() {\r\n this.loginErrorMessage = null;\r\n }\r\n\r\n async onLoginInCogntioToGetAccessToken(username: string, password: string) {\r\n try {\r\n const { isSignedIn, nextStep } = await signIn({ username, password });\r\n let session = await fetchAuthSession();\r\n switch (nextStep?.signInStep) {\r\n case \"DONE\":\r\n this.getAllCognitoTokenAndGroups(session.tokens);\r\n this.onCallGlobalSignout();\r\n break;\r\n }\r\n } catch (error: any) { }\r\n }\r\n\r\n async onCallGlobalSignout() {\r\n try {\r\n await signOut({ global: true });\r\n this.forgotPasswordAndGlobalSignoutLoader = false;\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n } catch (error) {\r\n console.log('error signing out: ', error);\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, Renderer2, SimpleChanges, OnChanges, OnInit } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[anna-cognito-lib-SpinnerButton]\",\r\n})\r\nexport class SpinnerButtonDirective implements OnInit, OnChanges {\r\n @Input(\"anna-cognito-lib-SpinnerButton\") loading: boolean;\r\n @Input(\"spinnerButtonText\") spinnerButtonText: string;\r\n child: HTMLDivElement;\r\n button: any;\r\n\r\n constructor(\r\n private el: ElementRef, \r\n private renderer: Renderer2) {\r\n this.button = this.el.nativeElement;\r\n this.child = document.createElement(\"div\");\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['spinnerButtonText'] && changes['spinnerButtonText'].currentValue) {\r\n this.button.innerHTML = this.spinnerButtonText;\r\n }\r\n if (changes['loading'] && changes['loading'].currentValue) {\r\n this.button.innerHTML = \"\";\r\n this.button.setAttribute(\"disabled\", \"true\");\r\n this.child.classList.add(\"spinner-for-button-directive\");\r\n this.renderer.appendChild(this.button, this.child);\r\n } else {\r\n this.child.classList.remove(\"spinner-for-button-directive\");\r\n this.button.removeAttribute(\"disabled\");\r\n this.button.innerHTML = this.spinnerButtonText;\r\n }\r\n }\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-version-and-term-policy',\r\n templateUrl: './version-and-term-policy.component.html',\r\n styleUrls: ['./version-and-term-policy.component.scss']\r\n})\r\nexport class VersionAndTermPolicyComponent implements OnInit {\r\n\r\n constructor(\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<p class=\"verison-and-policy\"> Version {{consumingProjectConfigService.appGenericConfig.currentAnnaVersion}} </p>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-surewaves-year-logo',\r\n templateUrl: './surewaves-year-logo.component.html',\r\n styleUrls: ['./surewaves-year-logo.component.scss']\r\n})\r\nexport class SurewavesYearLogoComponent implements OnInit {\r\n currentYear: number;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.currentYear = new Date().getFullYear();\r\n }\r\n\r\n}\r\n","<div class=\"surewaves-year-logo\">\r\n © SureWaves {{currentYear}}. All rights reserved. \r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-powered-by-logo-template',\r\n templateUrl: './powered-by-logo-template.component.html',\r\n styleUrls: ['./powered-by-logo-template.component.scss']\r\n})\r\nexport class PoweredByLogoTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"poweredBySurewavesLogo\"> \r\n</ng-container>\r\n\r\n<ng-template #poweredBySurewavesLogo>\r\n<svg width=\"230px\" height=\"69px\" viewBox=\"0 0 230 69\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n <path d=\"M2.576,1.064 C3.93866667,1.064 4.98633333,1.323 5.719,1.841 C6.45166667,2.359 6.818,3.13133333 6.818,4.158 C6.818,4.718 6.71766667,5.19633333 6.517,5.593 C6.31633333,5.98966667 6.027,6.31166667 5.649,6.559 C5.271,6.80633333 4.81133333,6.986 4.27,7.098 C3.72866667,7.21 3.11733333,7.266 2.436,7.266 L1.358,7.266 L1.358,10.864 L0,10.864 L0,1.302 C0.382666667,1.20866667 0.809666667,1.14566667 1.281,1.113 C1.75233333,1.08033333 2.184,1.064 2.576,1.064 Z M2.688,2.254 C2.10933333,2.254 1.666,2.268 1.358,2.296 L1.358,6.104 L2.38,6.104 C2.84666667,6.104 3.26666667,6.07366667 3.64,6.013 C4.01333333,5.95233333 4.32833333,5.84966667 4.585,5.705 C4.84166667,5.56033333 5.04,5.362 5.18,5.11 C5.32,4.858 5.39,4.536 5.39,4.144 C5.39,3.77066667 5.31766667,3.46266667 5.173,3.22 C5.02833333,2.97733333 4.83233333,2.78366667 4.585,2.639 C4.33766667,2.49433333 4.05066667,2.394 3.724,2.338 C3.39733333,2.282 3.052,2.254 2.688,2.254 Z\" id=\"path-1\"></path>\r\n <path d=\"M14.56,7.224 C14.56,7.80266667 14.476,8.32533333 14.308,8.792 C14.14,9.25866667 13.9043333,9.66 13.601,9.996 C13.2976667,10.332 12.936,10.591 12.516,10.773 C12.096,10.955 11.6386667,11.046 11.144,11.046 C10.6493333,11.046 10.192,10.955 9.772,10.773 C9.352,10.591 8.99033333,10.332 8.687,9.996 C8.38366667,9.66 8.148,9.25866667 7.98,8.792 C7.812,8.32533333 7.728,7.80266667 7.728,7.224 C7.728,6.65466667 7.812,6.13433333 7.98,5.663 C8.148,5.19166667 8.38366667,4.788 8.687,4.452 C8.99033333,4.116 9.352,3.857 9.772,3.675 C10.192,3.493 10.6493333,3.402 11.144,3.402 C11.6386667,3.402 12.096,3.493 12.516,3.675 C12.936,3.857 13.2976667,4.116 13.601,4.452 C13.9043333,4.788 14.14,5.19166667 14.308,5.663 C14.476,6.13433333 14.56,6.65466667 14.56,7.224 Z M13.202,7.224 C13.202,6.40266667 13.0176667,5.75166667 12.649,5.271 C12.2803333,4.79033333 11.7786667,4.55 11.144,4.55 C10.5093333,4.55 10.0076667,4.79033333 9.639,5.271 C9.27033333,5.75166667 9.086,6.40266667 9.086,7.224 C9.086,8.04533333 9.27033333,8.69633333 9.639,9.177 C10.0076667,9.65766667 10.5093333,9.898 11.144,9.898 C11.7786667,9.898 12.2803333,9.65766667 12.649,9.177 C13.0176667,8.69633333 13.202,8.04533333 13.202,7.224 Z\" id=\"path-2\"></path>\r\n <path d=\"M22.162,10.864 C21.9006667,10.192 21.623,9.42433333 21.329,8.561 C21.035,7.69766667 20.7666667,6.79933333 20.524,5.866 C20.2813333,6.79933333 20.0153333,7.69766667 19.726,8.561 C19.4366667,9.42433333 19.1613333,10.192 18.9,10.864 L17.766,10.864 C17.3366667,9.90266667 16.9166667,8.806 16.506,7.574 C16.0953333,6.342 15.708,5.012 15.344,3.584 L16.744,3.584 C16.8373333,4.02266667 16.9493333,4.49866667 17.08,5.012 C17.2106667,5.52533333 17.3483333,6.03866667 17.493,6.552 C17.6376667,7.06533333 17.7893333,7.56 17.948,8.036 C18.1066667,8.512 18.256,8.92733333 18.396,9.282 C18.5546667,8.84333333 18.711,8.379 18.865,7.889 C19.019,7.399 19.166,6.90433333 19.306,6.405 C19.446,5.90566667 19.579,5.41566667 19.705,4.935 C19.831,4.45433333 19.9406667,4.004 20.034,3.584 L21.112,3.584 C21.196,4.004 21.2986667,4.45433333 21.42,4.935 C21.5413333,5.41566667 21.672,5.90566667 21.812,6.405 C21.952,6.90433333 22.099,7.399 22.253,7.889 C22.407,8.379 22.5633333,8.84333333 22.722,9.282 C22.862,8.92733333 23.009,8.512 23.163,8.036 C23.317,7.56 23.4686667,7.06533333 23.618,6.552 C23.7673333,6.03866667 23.9073333,5.52533333 24.038,5.012 C24.1686667,4.49866667 24.2806667,4.02266667 24.374,3.584 L25.718,3.584 C25.354,5.012 24.9666667,6.342 24.556,7.574 C24.1453333,8.806 23.7253333,9.90266667 23.296,10.864 L22.162,10.864 Z\" id=\"path-3\"></path>\r\n <path d=\"M26.684,7.238 C26.684,6.594 26.7773333,6.03166667 26.964,5.551 C27.1506667,5.07033333 27.398,4.67133333 27.706,4.354 C28.014,4.03666667 28.3686667,3.79866667 28.77,3.64 C29.1713333,3.48133333 29.582,3.402 30.002,3.402 C30.982,3.402 31.7333333,3.70766667 32.256,4.319 C32.7786667,4.93033333 33.04,5.86133333 33.04,7.112 C33.04,7.168 33.04,7.24033333 33.04,7.329 C33.04,7.41766667 33.0353333,7.49933333 33.026,7.574 L28.042,7.574 C28.098,8.33 28.3173333,8.904 28.7,9.296 C29.0826667,9.688 29.68,9.884 30.492,9.884 C30.9493333,9.884 31.3343333,9.84433333 31.647,9.765 C31.9596667,9.68566667 32.1953333,9.60866667 32.354,9.534 L32.536,10.626 C32.3773333,10.71 32.0996667,10.7986667 31.703,10.892 C31.3063333,10.9853333 30.856,11.032 30.352,11.032 C29.7173333,11.032 29.169,10.9363333 28.707,10.745 C28.245,10.5536667 27.8646667,10.29 27.566,9.954 C27.2673333,9.618 27.0456667,9.219 26.901,8.757 C26.7563333,8.295 26.684,7.78866667 26.684,7.238 Z M31.682,6.524 C31.6913333,5.936 31.5443333,5.453 31.241,5.075 C30.9376667,4.697 30.52,4.508 29.988,4.508 C29.6893333,4.508 29.4256667,4.56633333 29.197,4.683 C28.9683333,4.79966667 28.7746667,4.95133333 28.616,5.138 C28.4573333,5.32466667 28.3336667,5.53933333 28.245,5.782 C28.1563333,6.02466667 28.098,6.272 28.07,6.524 L31.682,6.524 Z\" id=\"path-4\"></path>\r\n <path d=\"M37.604,3.43 C37.716,3.43 37.8443333,3.437 37.989,3.451 C38.1336667,3.465 38.276,3.48366667 38.416,3.507 C38.556,3.53033333 38.6843333,3.55366667 38.801,3.577 C38.9176667,3.60033333 39.004,3.62133333 39.06,3.64 L38.836,4.774 C38.7333333,4.73666667 38.563,4.69233333 38.325,4.641 C38.087,4.58966667 37.7813333,4.564 37.408,4.564 C37.1653333,4.564 36.925,4.58966667 36.687,4.641 C36.449,4.69233333 36.2926667,4.72733333 36.218,4.746 L36.218,10.864 L34.916,10.864 L34.916,3.892 C35.224,3.78 35.6066667,3.675 36.064,3.577 C36.5213333,3.479 37.0346667,3.43 37.604,3.43 Z\" id=\"path-5\"></path>\r\n <path d=\"M39.914,7.238 C39.914,6.594 40.0073333,6.03166667 40.194,5.551 C40.3806667,5.07033333 40.628,4.67133333 40.936,4.354 C41.244,4.03666667 41.5986667,3.79866667 42,3.64 C42.4013333,3.48133333 42.812,3.402 43.232,3.402 C44.212,3.402 44.9633333,3.70766667 45.486,4.319 C46.0086667,4.93033333 46.27,5.86133333 46.27,7.112 C46.27,7.168 46.27,7.24033333 46.27,7.329 C46.27,7.41766667 46.2653333,7.49933333 46.256,7.574 L41.272,7.574 C41.328,8.33 41.5473333,8.904 41.93,9.296 C42.3126667,9.688 42.91,9.884 43.722,9.884 C44.1793333,9.884 44.5643333,9.84433333 44.877,9.765 C45.1896667,9.68566667 45.4253333,9.60866667 45.584,9.534 L45.766,10.626 C45.6073333,10.71 45.3296667,10.7986667 44.933,10.892 C44.5363333,10.9853333 44.086,11.032 43.582,11.032 C42.9473333,11.032 42.399,10.9363333 41.937,10.745 C41.475,10.5536667 41.0946667,10.29 40.796,9.954 C40.4973333,9.618 40.2756667,9.219 40.131,8.757 C39.9863333,8.295 39.914,7.78866667 39.914,7.238 Z M44.912,6.524 C44.9213333,5.936 44.7743333,5.453 44.471,5.075 C44.1676667,4.697 43.75,4.508 43.218,4.508 C42.9193333,4.508 42.6556667,4.56633333 42.427,4.683 C42.1983333,4.79966667 42.0046667,4.95133333 41.846,5.138 C41.6873333,5.32466667 41.5636667,5.53933333 41.475,5.782 C41.3863333,6.02466667 41.328,6.272 41.3,6.524 L44.912,6.524 Z\" id=\"path-6\"></path>\r\n <path d=\"M52.85,5.124 C52.6913333,4.99333333 52.4626667,4.86733333 52.164,4.746 C51.8653333,4.62466667 51.5386667,4.564 51.184,4.564 C50.8106667,4.564 50.491,4.63166667 50.225,4.767 C49.959,4.90233333 49.742,5.089 49.574,5.327 C49.406,5.565 49.2846667,5.84733333 49.21,6.174 C49.1353333,6.50066667 49.098,6.85066667 49.098,7.224 C49.098,8.07333333 49.308,8.729 49.728,9.191 C50.148,9.653 50.708,9.884 51.408,9.884 C51.7626667,9.884 52.059,9.86766667 52.297,9.835 C52.535,9.80233333 52.7193333,9.76733333 52.85,9.73 L52.85,5.124 Z M52.85,0.224 L54.152,0 L54.152,10.654 C53.8533333,10.738 53.4706667,10.822 53.004,10.906 C52.5373333,10.99 52.0006667,11.032 51.394,11.032 C50.834,11.032 50.33,10.9433333 49.882,10.766 C49.434,10.5886667 49.0513333,10.3366667 48.734,10.01 C48.4166667,9.68333333 48.1716667,9.28433333 47.999,8.813 C47.8263333,8.34166667 47.74,7.812 47.74,7.224 C47.74,6.664 47.8123333,6.15066667 47.957,5.684 C48.1016667,5.21733333 48.314,4.816 48.594,4.48 C48.874,4.144 49.217,3.88266667 49.623,3.696 C50.029,3.50933333 50.4933333,3.416 51.016,3.416 C51.436,3.416 51.807,3.472 52.129,3.584 C52.451,3.696 52.6913333,3.80333333 52.85,3.906 L52.85,0.224 Z\" id=\"path-7\"></path>\r\n <path d=\"M60.928,3.906 C61.0866667,3.80333333 61.327,3.696 61.649,3.584 C61.971,3.472 62.342,3.416 62.762,3.416 C63.2846667,3.416 63.749,3.50933333 64.155,3.696 C64.561,3.88266667 64.904,4.144 65.184,4.48 C65.464,4.816 65.6763333,5.21733333 65.821,5.684 C65.9656667,6.15066667 66.038,6.664 66.038,7.224 C66.038,7.812 65.9516667,8.34166667 65.779,8.813 C65.6063333,9.28433333 65.3613333,9.68333333 65.044,10.01 C64.7266667,10.3366667 64.344,10.5886667 63.896,10.766 C63.448,10.9433333 62.944,11.032 62.384,11.032 C61.7773333,11.032 61.2406667,10.99 60.774,10.906 C60.3073333,10.822 59.9246667,10.738 59.626,10.654 L59.626,0.224 L60.928,0 L60.928,3.906 Z M60.928,9.73 C61.0586667,9.76733333 61.243,9.80233333 61.481,9.835 C61.719,9.86766667 62.0153333,9.884 62.37,9.884 C63.07,9.884 63.63,9.653 64.05,9.191 C64.47,8.729 64.68,8.07333333 64.68,7.224 C64.68,6.85066667 64.6426667,6.50066667 64.568,6.174 C64.4933333,5.84733333 64.372,5.565 64.204,5.327 C64.036,5.089 63.819,4.90233333 63.553,4.767 C63.287,4.63166667 62.9673333,4.564 62.594,4.564 C62.2393333,4.564 61.9126667,4.62466667 61.614,4.746 C61.3153333,4.86733333 61.0866667,4.99333333 60.928,5.124 L60.928,9.73 Z\" id=\"path-8\"></path>\r\n <path d=\"M66.836,12.222 C66.9386667,12.2686667 67.0716667,12.313 67.235,12.355 C67.3983333,12.397 67.5593333,12.418 67.718,12.418 C68.2313333,12.418 68.6326667,12.3036667 68.922,12.075 C69.2113333,11.8463333 69.4726667,11.4753333 69.706,10.962 C69.118,9.842 68.5696667,8.65433333 68.061,7.399 C67.5523333,6.14366667 67.13,4.872 66.794,3.584 L68.194,3.584 C68.2966667,4.004 68.4203333,4.45666667 68.565,4.942 C68.7096667,5.42733333 68.8706667,5.92666667 69.048,6.44 C69.2253333,6.95333333 69.4166667,7.46666667 69.622,7.98 C69.8273333,8.49333333 70.042,8.988 70.266,9.464 C70.6206667,8.484 70.9286667,7.51333333 71.19,6.552 C71.4513333,5.59066667 71.6986667,4.60133333 71.932,3.584 L73.276,3.584 C72.94,4.956 72.5666667,6.27433333 72.156,7.539 C71.7453333,8.80366667 71.302,9.98666667 70.826,11.088 C70.6393333,11.508 70.4456667,11.8696667 70.245,12.173 C70.0443333,12.4763333 69.8226667,12.726 69.58,12.922 C69.3373333,13.118 69.0643333,13.2626667 68.761,13.356 C68.4576667,13.4493333 68.1146667,13.496 67.732,13.496 C67.6293333,13.496 67.522,13.489 67.41,13.475 C67.298,13.461 67.1883333,13.4423333 67.081,13.419 C66.9736667,13.3956667 66.8756667,13.37 66.787,13.342 C66.6983333,13.314 66.6353333,13.2906667 66.598,13.272 L66.836,12.222 Z\" id=\"path-9\"></path>\r\n </defs>\r\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"Group-Copy-2\" transform=\"translate(0.338000, 0.500000)\">\r\n <g id=\"Powered-by\" transform=\"translate(0.000000, 45.636000)\" fill-rule=\"nonzero\" opacity=\"0.900000036\">\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-1\"></use>\r\n <use xlink:href=\"#path-1\"></use>\r\n </g>\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-2\"></use>\r\n <use xlink:href=\"#path-2\"></use>\r\n </g>\r\n <g id=\"Path\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-3\"></use>\r\n <use xlink:href=\"#path-3\"></use>\r\n </g>\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-4\"></use>\r\n <use xlink:href=\"#path-4\"></use>\r\n </g>\r\n <g id=\"Path\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-5\"></use>\r\n <use xlink:href=\"#path-5\"></use>\r\n </g>\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-6\"></use>\r\n <use xlink:href=\"#path-6\"></use>\r\n </g>\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-7\"></use>\r\n <use xlink:href=\"#path-7\"></use>\r\n </g>\r\n <g id=\"Shape\">\r\n <use fill=\"#FFFFFF\" xlink:href=\"#path-8\"></use>\r\n <use fill=\"#6E6E6E\" xlink:href=\"#path-8\"></use>\r\n </g>\r\n <g id=\"Path\">\r\n <use fill=\"#FFFFFF\" xlink:href=\"#path-9\"></use>\r\n <use fill=\"#6E6E6E\" xlink:href=\"#path-9\"></use>\r\n </g>\r\n </g>\r\n <image id=\"Bitmap\" x=\"77.662\" y=\"0\" width=\"151.111111\" height=\"68\" xlink:href=\"data:image/png;base64,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\"></image>\r\n </g>\r\n </g>\r\n</svg>\r\n</ng-template>","// Angular import statements\r\nimport { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup } from \"@angular/forms\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\n\r\n@Component({\r\n selector: \"anna-cognito-lib-login\",\r\n templateUrl: \"./login.component.html\",\r\n styleUrls: [\"./login.component.scss\"],\r\n})\r\nexport class LoginComponent implements OnInit {\r\n loginForm: FormGroup;\r\n constants: typeof LoginConstant;\r\n\r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.onIntialiseForm();\r\n }\r\n\r\n onIntialiseForm() {\r\n this.loginForm = this.fb.group({\r\n username: [null],\r\n password: [null],\r\n });\r\n }\r\n\r\n OnLogin() {\r\n this.authService.consumingProjectAuthService.isLoggingIn = true;\r\n const username = this.loginForm.controls['username'].value;\r\n const password = this.loginForm.controls['password'].value;\r\n this.authService.handleSignIn({ username, password });\r\n }\r\n\r\n signInWithSSO() {\r\n this.authService.signInWithDuo();\r\n }\r\n}\r\n","<div class=\"main\">\r\n <!-- Load login page when all constant variable are intiated otherwise it will show a glitch. that's why ngIf check of constants.forgotPassword -->\r\n <section *ngIf=\"constants.forgotPassword\">\r\n <header>\r\n <img [ngSrc]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" width=\"145\" height=\"50\"\r\n alt=\"Anna Logo\" priority />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"OnLogin()\">\r\n <div id=\"alert-div\" *ngIf=\"authService.loginErrorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.loginErrorMessage }}</p>\r\n </div>\r\n\r\n <input type=\"text\" tabindex=\"1\" formControlName=\"username\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\" [placeholder]=\"constants.enterEmail\"\r\n autocomplete=\"username\" autofocus />\r\n\r\n <input type=\"password\" tabindex=\"2\" formControlName=\"password\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\" [placeholder]=\"constants.password\"\r\n autocomplete=\"current-password\" autofocus />\r\n\r\n <a tabindex=\"4\" [routerLink]=\"constants.forgortPasswordPageUrl\">{{ constants.forgotPassword }}</a>\r\n <button tabindex=\"3\" class=\"login-btn\"\r\n [anna-cognito-lib-SpinnerButton]=\"authService.consumingProjectAuthService.isLoggingIn\"\r\n [spinnerButtonText]=\"constants.login\"></button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>","import { Component, Inject } from '@angular/core';\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\nimport { LoginConstant } from '../../constants/loginConstant';\nimport { AnnaLibAuthService } from '../../services/auth.service';\n\n@Component({\n selector: 'anna-cognito-lib-sso-login',\n templateUrl: './sso-login.component.html',\n styleUrls: ['./sso-login.component.scss']\n})\nexport class SsoLoginComponent {\n constants: typeof LoginConstant;\n\n constructor(\n public authService: AnnaLibAuthService,\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService\n ) { }\n\n ngOnInit() {\n this.constants = LoginConstant;\n }\n\n signInWithSSO() {\n this.authService.signInWithDuo();\n }\n}\n","<div class=\"main\">\n <section *ngIf=\"constants.forgotPassword\">\n <header>\n <img [ngSrc]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" width=\"145\" height=\"50\"\n alt=\"Anna Logo\" priority />\n </header>\n <article>\n <p class=\"sub-title\">Login</p>\n <p>Sign in to your account with SSO</p>\n <button class=\"login-btn\" (click)=\"signInWithSSO()\">Login</button>\n <div class=\"dashed-line\"></div>\n <!-- <a tabindex=\"4\" class=\"login-link\" [routerLink]=\"constants.loginPageUrl\">Sign in with username</a> -->\n </article>\n <footer>\n <anna-cognito-lib-powered-by-logo-template>\n </anna-cognito-lib-powered-by-logo-template>\n </footer>\n </section>\n</div>\n\n<div class=\"page-footer\">\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\n</div>","// Angular import statements\r\nimport { EventEmitter, Inject, Input, Output } from \"@angular/core\";\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { AbstractControl, FormBuilder, FormGroup, ValidationErrors, ValidatorFn, Validators } from \"@angular/forms\";\r\n\r\n// Third party import statements\r\nimport { debounceTime } from \"rxjs/operators\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-password-matching',\r\n templateUrl: './password-matching.component.html',\r\n styleUrls: ['./password-matching.component.scss']\r\n})\r\nexport class PasswordMatchingComponent implements OnInit {\r\n @Output() passwordChange = new EventEmitter();\r\n @Output() confirmPasswordChange = new EventEmitter();\r\n\r\n @Input() passwordNotMatching: boolean;\r\n passwordForm: FormGroup;\r\n constants: typeof LoginConstant;\r\n constructor(@Inject(FormBuilder) private fb: FormBuilder) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.createGroup();\r\n this.formValueChanged();\r\n }\r\n\r\n formValueChanged() {\r\n const password = this.passwordForm.get(\"password\");\r\n const confirmPassword = this.passwordForm.get(\"confirmPassword\");\r\n\r\n password && password.valueChanges.subscribe(() => {\r\n password && password.setValidators([\r\n Validators.required,\r\n this.regexValidator(new RegExp(\".{8,}\"), { minLength: true }),\r\n this.regexValidator(new RegExp(\"[a-z]\"), { lowercase: true }),\r\n this.regexValidator(new RegExp(\"[A-Z]\"), { uppercase: true }),\r\n this.regexValidator(new RegExp(\"[0-9]\"), { number: true }),\r\n this.regexValidator(new RegExp(\"[^a-zA-Z0-9]\"), { specialCharacter: true }),\r\n ]);\r\n password.updateValueAndValidity({ emitEvent: false });\r\n this.onPasswordChange();\r\n });\r\n\r\n if(confirmPassword){\r\n confirmPassword.valueChanges.pipe(debounceTime(300)).subscribe(() => {\r\n confirmPassword.setValidators([Validators.required]);\r\n confirmPassword.updateValueAndValidity({ emitEvent: false });\r\n this.onConfirmPasswordChange();\r\n });\r\n }\r\n \r\n }\r\n\r\n onPasswordChange() {\r\n let result = {\r\n value: this.passwordForm.value.password,\r\n status: this.passwordForm.controls['password'].status,\r\n };\r\n this.passwordChange.emit(result);\r\n }\r\n\r\n onConfirmPasswordChange() {\r\n let result = {\r\n value: this.passwordForm.value.confirmPassword,\r\n status: this.passwordForm.controls['confirmPassword'].status,\r\n };\r\n this.confirmPasswordChange.emit(result);\r\n }\r\n\r\n createGroup() {\r\n this.passwordForm = this.fb.group({\r\n password: [null],\r\n confirmPassword: [null],\r\n });\r\n return this.passwordForm;\r\n }\r\n\r\n // TODO: check the return again\r\n regexValidator(regex: RegExp, error: ValidationErrors): any\r\n {\r\n return (control: AbstractControl): { [key: string]: boolean } => {\r\n const valid = regex.test(control.value);\r\n return (valid ? null : error) as any;\r\n };\r\n }\r\n\r\n}\r\n","<form [formGroup]=\"passwordForm\">\r\n <div id=\"alert-div\" *ngIf=\"passwordNotMatching\">\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p>{{ constants.passwordNotMatching }}</p>\r\n </div>\r\n <div class=\"password-policies\">\r\n <ng-container *ngIf=\"!passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }} </b>\r\n </p>\r\n <p>{{ constants.minimumCharacter }}</p>\r\n <p>{{ constants.oneUppercase }}</p>\r\n <p>{{ constants.oneLowercase }}</p>\r\n <p>{{ constants.oneNumber }}</p>\r\n <p>{{ constants.specialCharacter }}</p>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }}</b>\r\n </p>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('minLength') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('minLength')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('minLength')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.minimumCharacter }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('uppercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('uppercase')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('uppercase')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneUppercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('lowercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('lowercase')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('lowercase')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneLowercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('number') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('number')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('number')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneNumber }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('specialCharacter') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('specialCharacter')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('specialCharacter')\">\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.specialCharacter }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"2\"\r\n formControlName=\"password\"\r\n [placeholder]=\"constants.password\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"3\"\r\n formControlName=\"confirmPassword\"\r\n [placeholder]=\"constants.confirmPassword\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n</form>\r\n","\r\n// Angular import statements\r\nimport { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// User defined import statements\r\nimport { AnnaLibAuthService } from \"../../services/auth.service\";\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\n\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\ntype passwordType = { value: string | null, status: string | null };\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-set-new-password',\r\n templateUrl: './set-new-password.component.html',\r\n styleUrls: ['./set-new-password.component.scss']\r\n})\r\nexport class SetNewPasswordComponent implements OnInit {\r\n passwordNotMatching = false;\r\n\r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n constants: typeof LoginConstant;\r\n\r\n constructor(public authService: AnnaLibAuthService,\r\n private router: Router,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.authService.setNewPasswordButtonMessage = LoginConstant.setNewPasswordButton;\r\n }\r\n\r\n isFormValid() {\r\n return this.password.status === \"VALID\" && this.confirmPassword.status === \"VALID\";\r\n }\r\n onPasswordChange($event: passwordType) {\r\n this.password = $event;\r\n }\r\n\r\n onConfirmPasswordChange($event: passwordType) {\r\n this.confirmPassword = $event;\r\n }\r\n\r\n onSettingNewPassword() {\r\n if (this.password.value != this.confirmPassword.value) {\r\n this.passwordNotMatching = true;\r\n } else {\r\n this.passwordNotMatching = false;\r\n if (this.authService.setNewPasswordButtonMessage === LoginConstant.loginAgain) {\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n } else {\r\n this.authService.changePassword(this.password.value);\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section>\r\n <header>\r\n <img [src]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form>\r\n <div id=\"heading\">\r\n {{ constants.setNewPasswordHeading }}\r\n </div>\r\n\r\n <div id=\"alert-div\" *ngIf=\"authService.setNewPasswordErrorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.setNewPasswordErrorMessage }}</p>\r\n </div>\r\n <anna-cognito-lib-password-matching\r\n (passwordChange)=\"onPasswordChange($event)\"\r\n (confirmPasswordChange)=\"onConfirmPasswordChange($event)\"\r\n [passwordNotMatching]=\"passwordNotMatching\"\r\n >\r\n </anna-cognito-lib-password-matching>\r\n <button tabindex=\"3\" class=\"login-btn\" [disabled]=\"!isFormValid()\" (click)=\"onSettingNewPassword()\">\r\n {{ authService.setNewPasswordButtonMessage }}\r\n </button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>\r\n","export class AuthenticationData {\r\n Username: string;\r\n Password: string;\r\n constructor(Username: string, Password: string) {\r\n this.Username = Username;\r\n this.Password = Password;\r\n }\r\n}\r\n\r\nexport class UserPoolInformation {\r\n UserPoolId: string;\r\n ClientId: string;\r\n constructor(UserPoolId: string, ClientId: string) {\r\n this.UserPoolId = UserPoolId;\r\n this.ClientId = ClientId;\r\n }\r\n}\r\n\r\nexport class UsernameInfo {\r\n isUsernameAvailable: boolean;\r\n constructor(object: { isUsernameAvailable: boolean }) {\r\n this.isUsernameAvailable = object.isUsernameAvailable;\r\n }\r\n} \r\n\r\nexport class UserState {\r\n userStatus: string;\r\n isUserWithTempPassword: boolean;\r\n constructor(userState: string ) {\r\n this.userStatus = userState;\r\n this.isUserWithTempPassword = userState == 'FORCE_CHANGE_PASSWORD';\r\n }\r\n}","// Angular import statements\r\nimport { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\n\r\n// Third party import statements\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { forkJoin, catchError, pipe, map } from \"rxjs\";\r\n\r\n// User defined import statements\r\nimport { UsernameInfo, UserState } from \"../../models/auth.model\";\r\nimport { AnnaLibAuthService } from \"../../services/auth.service\";\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { Router } from '@angular/router';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\n\r\ntype passwordType = {value: string, status: string};\r\n@Component({\r\n selector: 'anna-cognito-lib-forgot-password',\r\n templateUrl: './forgot-password.component.html',\r\n styleUrls: ['./forgot-password.component.scss']\r\n})\r\nexport class ForgotPasswordComponent implements OnInit {\r\n errorMessage: string;\r\n verifyRegisteredEmail: FormGroup;\r\n passwordNotMatching = false;\r\n constants: typeof LoginConstant;\r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n infoMessageToRedirectLogin: string = null;\r\n isLoading: boolean = false;\r\n\r\n constructor(\r\n private authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n private toastr: ToastrService,\r\n private router: Router,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.infoMessageToRedirectLogin = null;\r\n this.constants = LoginConstant;\r\n this.onIntialiseForm();\r\n if (this.authService.userName) {\r\n this.onUpdateForm();\r\n }\r\n }\r\n\r\n onIntialiseForm() {\r\n this.verifyRegisteredEmail = this.fb.group({\r\n email: [null, [Validators.required]],\r\n });\r\n }\r\n\r\n onUpdateForm() {\r\n this.verifyRegisteredEmail.patchValue({\r\n email: this.authService.userName,\r\n });\r\n }\r\n\r\n isFormValid() {\r\n return this.verifyRegisteredEmail.valid;\r\n }\r\n\r\n onLoginOrGetOtpButtonClick(){\r\n if(this.infoMessageToRedirectLogin){\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n }\r\n else {\r\n this.onVerifyRegisteredEmail();\r\n }\r\n }\r\n\r\n onVerifyRegisteredEmail() {\r\n this.isLoading = true;\r\n this.errorMessage = null;\r\n this.infoMessageToRedirectLogin = null;\r\n let username = this.verifyRegisteredEmail.controls['email'].value;\r\n\r\n let isUsernameAvailable = this.authService.consumingProjectAuthService.isUsernameAvailable(username);\r\n let isUsernameTempPasswordSet = this.authService.consumingProjectAuthService.getUserState(username);\r\n\r\n forkJoin([isUsernameAvailable, isUsernameTempPasswordSet]).subscribe(\r\n { next: (result) => {\r\n let isUsernameAvailable = new UsernameInfo(result[0]).isUsernameAvailable;\r\n let isUserWithTempPassword = new UserState(result[1]).isUserWithTempPassword;\r\n this.onGettingUserStatus(isUsernameAvailable,isUserWithTempPassword,username);\r\n this.isLoading = false;\r\n },\r\n error: (error) => {\r\n if(error.status == 400){\r\n this.errorMessage = this.constants.userNotFound;\r\n }\r\n else {\r\n this.toastr.error(LoginConstant.apiFailErrorMessage);\r\n }\r\n this.isLoading = false;\r\n }\r\n });\r\n }\r\n\r\n onGettingUserStatus(isUsernameAvailable: boolean, isUserWithTempPassword: boolean, username: string){\r\n if(!isUsernameAvailable){\r\n if(!isUserWithTempPassword){\r\n this.authService.onForgotPasswordGenerateOTP(username);\r\n }\r\n else {\r\n this.infoMessageToRedirectLogin = this.constants.firstTimeLoginUserTempPasswordMsg;\r\n }\r\n }\r\n else {\r\n this.errorMessage = this.constants.userNotFound;\r\n }\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section>\r\n <header>\r\n <img [src]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"verifyRegisteredEmail\">\r\n <ng-container *ngIf=\"!infoMessageToRedirectLogin\">\r\n <div id=\"heading\">\r\n {{ constants.forgotPasswordHeading }}\r\n </div>\r\n <p>\r\n {{ constants.forgotPasswordMessage }}\r\n </p>\r\n </ng-container>\r\n <div id=\"alert-div\" *ngIf=\"errorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p id=\"alert-msg\">{{ errorMessage }}</p>\r\n </div>\r\n <div id=\"info-div\" *ngIf=\"infoMessageToRedirectLogin\">\r\n <i class=\"mi mdi-info\"></i>\r\n <p>{{ infoMessageToRedirectLogin }}</p>\r\n </div>\r\n\r\n <input *ngIf=\"!infoMessageToRedirectLogin\"\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"email\"\r\n [placeholder]=\"constants.enterEmail\"\r\n [ngClass]=\"{\r\n 'input-invalid': verifyRegisteredEmail.get('email')?.dirty && verifyRegisteredEmail.get('email')?.errors\r\n }\"\r\n />\r\n\r\n <button\r\n tabindex=\"2\"\r\n type=\"submit\"\r\n class=\"login-btn\"\r\n [anna-cognito-lib-SpinnerButton]=\"isLoading\"\r\n (click)=\"onLoginOrGetOtpButtonClick()\"\r\n [spinnerButtonText]=\"infoMessageToRedirectLogin ? constants.login : constants.forgotPasswordButton\"\r\n ></button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>\r\n","// Angular import statements\r\nimport { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\ntype passwordType = { value: string | null, status: string | null };\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-verify-and-set-new-password',\r\n templateUrl: './verify-and-set-new-password.component.html',\r\n styleUrls: ['./verify-and-set-new-password.component.scss']\r\n})\r\nexport class VerifyAndSetNewPasswordComponent implements OnInit {\r\n verifyOtpForm: FormGroup;\r\n passwordNotMatching = false;\r\n constants: typeof LoginConstant;\r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n\r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n private router: Router,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.authService.verifyAndSetNewPasswordButton = LoginConstant.setNewPasswordButton;\r\n this.onIntialiseForm();\r\n }\r\n\r\n onIntialiseForm() {\r\n this.verifyOtpForm = this.fb.group({\r\n otp: [null, [Validators.required]],\r\n });\r\n }\r\n\r\n isFormValid() {\r\n if (\r\n this.password.status === \"VALID\" &&\r\n this.confirmPassword.status === \"VALID\" &&\r\n this.verifyOtpForm.controls['otp'].valid\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n onPasswordChange($event: passwordType) {\r\n this.password = $event;\r\n }\r\n\r\n onConfirmPasswordChange($event: passwordType) {\r\n this.confirmPassword = $event;\r\n }\r\n\r\n onVerifyOtpSettingNewPassword() {\r\n if (this.password.value != this.confirmPassword.value) {\r\n this.passwordNotMatching = true;\r\n } else {\r\n this.passwordNotMatching = false;\r\n this.authService.forgotPasswordAndGlobalSignoutLoader = true;\r\n if (this.authService.verifyAndSetNewPasswordButton === LoginConstant.regenerateOtp) {\r\n this.router.navigate([LoginConstant.forgortPasswordPageUrl]);\r\n } else {\r\n this.password.value && this.authService.verifyCode(this.verifyOtpForm.controls['otp'].value, this.password.value);\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\n","<div class=\"main\" [ngClass]=\"{ 'main-height': authService.verifyAndSetNewPasswordErrorMessage }\">\r\n <section>\r\n <header>\r\n <img [src]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <span class=\"back-btn\" [routerLink]=\"constants.forgortPasswordPageUrl\">\r\n <i class=\"mdi mdi-arrow-left\"></i>\r\n </span>\r\n\r\n <form [formGroup]=\"verifyOtpForm\">\r\n <div class=\"pull-left\" id=\"heading\">\r\n {{ constants.verifyAndSetNewPasswordheading }}\r\n </div>\r\n <p>{{ authService.verifyAndSetNewPasswordMessage }}</p>\r\n\r\n <div id=\"alert-div\" *ngIf=\"authService.verifyAndSetNewPasswordErrorMessage\">\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p id=\"display-block-msg\">{{ authService.verifyAndSetNewPasswordErrorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"otp\"\r\n [placeholder]=\"constants.enterOtp\"\r\n autocomplete=\"new-field-name\"\r\n [ngClass]=\"{ 'input-invalid': authService.verifyAndSetNewPasswordErrorMessage }\"\r\n />\r\n\r\n <anna-cognito-lib-password-matching\r\n (passwordChange)=\"onPasswordChange($event)\"\r\n (confirmPasswordChange)=\"onConfirmPasswordChange($event)\"\r\n [passwordNotMatching]=\"passwordNotMatching\"\r\n >\r\n </anna-cognito-lib-password-matching>\r\n <button\r\n tabindex=\"4\"\r\n class=\"login-btn\"\r\n type=\"submit\"\r\n [disabled]=\"authService.sessionLocked || !isFormValid()\"\r\n (click)=\"onVerifyOtpSettingNewPassword()\"\r\n [anna-cognito-lib-SpinnerButton]=\"authService.forgotPasswordAndGlobalSignoutLoader\"\r\n [spinnerButtonText]=\"authService.verifyAndSetNewPasswordButton\"\r\n ></button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { LoginComponent } from './components/login/login.component';\r\nimport { SsoLoginComponent} from './components/sso-login/sso-login.component';\r\nimport { SpinnerButtonDirective } from './directives/spinner-button';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SetNewPasswordComponent } from './components/set-new-password/set-new-password.component';\r\nimport { PasswordMatchingComponent } from './components/password-matching/password-matching.component';\r\nimport { ForgotPasswordComponent } from './components/forgot-password/forgot-password.component';\r\nimport { VerifyAndSetNewPasswordComponent } from './components/verify-and-set-new-password/verify-and-set-new-password.component';\r\nimport { VersionAndTermPolicyComponent } from './components/version-and-term-policy/version-and-term-policy.component';\r\nimport { SurewavesYearLogoComponent } from './components/surewaves-year-logo/surewaves-year-logo.component';\r\nimport { PoweredByLogoTemplateComponent } from './components/powered-by-logo-template/powered-by-logo-template.component';\r\nimport { NgOptimizedImage } from '@angular/common';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n LoginComponent,\r\n SetNewPasswordComponent,\r\n PasswordMatchingComponent,\r\n ForgotPasswordComponent,\r\n VerifyAndSetNewPasswordComponent,\r\n SpinnerButtonDirective,\r\n VersionAndTermPolicyComponent,\r\n SurewavesYearLogoComponent,\r\n PoweredByLogoTemplateComponent,\r\n SsoLoginComponent,\r\n ],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n CommonModule,\r\n NgOptimizedImage\r\n ],\r\n exports: [\r\n LoginComponent,\r\n SsoLoginComponent,\r\n SetNewPasswordComponent,\r\n PasswordMatchingComponent,\r\n ForgotPasswordComponent,\r\n VerifyAndSetNewPasswordComponent,\r\n SpinnerButtonDirective,\r\n VersionAndTermPolicyComponent,\r\n SurewavesYearLogoComponent,\r\n PoweredByLogoTemplateComponent,\r\n NgOptimizedImage\r\n ]\r\n})\r\nexport class AnnaCognitoLibModule {\r\n constructor() {}\r\n}\r\n","import { Inject, Injectable } from \"@angular/core\";\r\nimport { IConfigService, CONFIG_SERVICE_TOKEN } from '../config/config-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaConfigService {\r\n \r\n constructor(@Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService) {}\r\n\r\n\r\n}\r\n","/*\r\n * Public API Surface of anna-cognito-lib\r\n */\r\n\r\nexport * from './lib/anna-cognito-lib.module';\r\n\r\n//COMPONENTS \r\nexport * from './lib/components/login/login.component';\r\nexport * from './lib/components/sso-login/sso-login.component';\r\nexport * from './lib/components/forgot-password/forgot-password.component';\r\nexport * from './lib/components/set-new-password/set-new-password.component';\r\nexport * from './lib/components/password-matching/password-matching.component';\r\nexport * from './lib/components/verify-and-set-new-password/verify-and-set-new-password.component';\r\nexport * from './lib/components/version-and-term-policy/version-and-term-policy.component';\r\nexport * from './lib/components/powered-by-logo-template/powered-by-logo-template.component';\r\nexport * from './lib/components/surewaves-year-logo/surewaves-year-logo.component';\r\n\r\n//SERVICES \r\nexport * from './lib/services/auth.service';\r\nexport * from './lib/services/acl.service';\r\nexport * from './lib/config/auth-service.token';\r\nexport * from './lib/config/acl-service.token';\r\nexport * from './lib/config/config-service.token';\r\nexport * from './lib/services/config.service';\r\n\r\n//DIRECTIVES \r\nexport * from './lib/directives/spinner-button';\r\n\r\n//CONSTANTS \r\nexport * from './lib/constants/loginConstant';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.AnnaLibAclService","i3","i4","i5.SpinnerButtonDirective","i6.VersionAndTermPolicyComponent","i7.SurewavesYearLogoComponent","i8.PoweredByLogoTemplateComponent","i2","i3.VersionAndTermPolicyComponent","i4.SurewavesYearLogoComponent","i5.PoweredByLogoTemplateComponent","i5.PasswordMatchingComponent","i5","i6.SpinnerButtonDirective","i7.VersionAndTermPolicyComponent","i8.SurewavesYearLogoComponent","i9.PoweredByLogoTemplateComponent"],"mappings":"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"}
1
+ {"version":3,"file":"annalib-anna-cognito-lib.mjs","sources":["../../../projects/anna-cognito-lib/src/lib/constants/loginConstant.ts","../../../projects/anna-cognito-lib/src/lib/config/auth-service.token.ts","../../../projects/anna-cognito-lib/src/lib/config/config-service.token.ts","../../../projects/anna-cognito-lib/src/lib/config/acl-service.token.ts","../../../projects/anna-cognito-lib/src/lib/services/acl.service.ts","../../../projects/anna-cognito-lib/src/lib/services/auth.service.ts","../../../projects/anna-cognito-lib/src/lib/directives/spinner-button/spinner-button.directive.ts","../../../projects/anna-cognito-lib/src/lib/components/version-and-term-policy/version-and-term-policy.component.ts","../../../projects/anna-cognito-lib/src/lib/components/version-and-term-policy/version-and-term-policy.component.html","../../../projects/anna-cognito-lib/src/lib/components/surewaves-year-logo/surewaves-year-logo.component.ts","../../../projects/anna-cognito-lib/src/lib/components/surewaves-year-logo/surewaves-year-logo.component.html","../../../projects/anna-cognito-lib/src/lib/components/powered-by-logo-template/powered-by-logo-template.component.ts","../../../projects/anna-cognito-lib/src/lib/components/powered-by-logo-template/powered-by-logo-template.component.html","../../../projects/anna-cognito-lib/src/lib/components/login/login.component.ts","../../../projects/anna-cognito-lib/src/lib/components/login/login.component.html","../../../projects/anna-cognito-lib/src/lib/components/sso-login/sso-login.component.ts","../../../projects/anna-cognito-lib/src/lib/components/sso-login/sso-login.component.html","../../../projects/anna-cognito-lib/src/lib/components/password-matching/password-matching.component.ts","../../../projects/anna-cognito-lib/src/lib/components/password-matching/password-matching.component.html","../../../projects/anna-cognito-lib/src/lib/components/set-new-password/set-new-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/set-new-password/set-new-password.component.html","../../../projects/anna-cognito-lib/src/lib/models/auth.model.ts","../../../projects/anna-cognito-lib/src/lib/components/forgot-password/forgot-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/forgot-password/forgot-password.component.html","../../../projects/anna-cognito-lib/src/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.html","../../../projects/anna-cognito-lib/src/lib/anna-cognito-lib.module.ts","../../../projects/anna-cognito-lib/src/lib/services/config.service.ts","../../../projects/anna-cognito-lib/src/public-api.ts","../../../projects/anna-cognito-lib/src/annalib-anna-cognito-lib.ts"],"sourcesContent":["export class LoginConstant {\r\n // Login page\r\n static readonly enterEmail = \"Enter your username\";\r\n static readonly password = \"Password\";\r\n static readonly confirmPassword = \"Confirm Password\";\r\n static readonly login = \"Login\";\r\n static readonly otp = \"OTP\";\r\n static readonly forgotPassword = \"Forgot \" + LoginConstant.password.toLowerCase() + \"?\";\r\n\r\n // set new password\r\n static readonly setNewPasswordHeading = \"Set new \" + LoginConstant.password.toLowerCase();\r\n static readonly setNewPasswordButton = \"Set and \" + LoginConstant.login.toLowerCase() + \" again\";\r\n static readonly passwordMustContain = \"The password must contain:\";\r\n static readonly minimumCharacter = \"Minimum 8 characters\";\r\n static readonly oneUppercase = \"1 Uppercase\";\r\n static readonly oneLowercase = \"1 Lowercase\";\r\n static readonly oneNumber = \"1 Numerical\";\r\n static readonly specialCharacter = \"1 Special character\";\r\n static readonly passwordNotMatching = \"The passwords do not match. Please try again.\";\r\n static readonly userNamePasswordIncorrect = \"Incorrect username or password\";\r\n static readonly userNotFound = \"No registered user found\";\r\n static readonly loginAgain = LoginConstant.login + \" again\";\r\n static readonly firstTimeLoginUserTempPasswordMsg = \"You are logging in for the first time. Kindly use the temporary password provided in the welcome email, to login to your account. \";\r\n static readonly tempPasswordExpiryError = \"Temporary password has expired and must be reset by an administrator.\"\r\n static readonly tempPasswordOnExpiryErrorMsg = \"Password has expired. A new password has been sent to your registered email. Kindly login again with new link and credentials.\";\r\n\r\n // verify OTP & set new password\r\n static readonly verifyAndSetNewPasswordheading = \"Enter \" + LoginConstant.otp + \" & set new password\";\r\n static readonly verifyAndSetNewPasswordMessage = \"An \" + LoginConstant.otp + \" has been succesfully emailed to \";\r\n static readonly pleaseEnterItBelow = \". Please enter it below.\";\r\n static readonly regenerateOtp = \"Regenerate \" + LoginConstant.otp;\r\n static readonly enterOtp = \"Enter \" + LoginConstant.otp;\r\n static readonly submit = \"Submit\";\r\n static readonly attempt = \"Attempt\";\r\n static readonly attemptLimitExceeded =\r\n \"You have exceeded the maximum number of allowed attempts. Please try again after 15 minutes.\";\r\n static readonly attemptMessage = \" of 5. The OTP entered is incorrect. Please try again with the right one.\";\r\n static readonly sessionExpired = \"The session has expired. Please try again.\";\r\n static readonly sessionExpiredError = \"Your session has expired. Please login again\";\r\n\r\n // forgot password\r\n static readonly forgotPasswordHeading = \"Forgot your password?\";\r\n static readonly forgotPasswordMessage = \"Please enter your username.\";\r\n static readonly forgotPasswordButton = \"Get \" + LoginConstant.otp;\r\n static readonly apiFailErrorMessage = \"Unable to connect to server right now. Please try after some time.\";\r\n\r\n //url\r\n static readonly setNewPasswordUrl = \"/set-new-password\";\r\n static readonly forgortPasswordPageUrl = \"/forgot-password\";\r\n static readonly verifyAndSetNewPasswordUrl = \"/verify-and-set-new-password\";\r\n static readonly loginPageUrl = \"/login\";\r\n static readonly coPilotloginPageUrl = \"/co-pilot-login\";\r\n static readonly welcomeScrreenUrl = \"/welcome-screen\";\r\n static readonly homePageUrl = \"/dashboard\";\r\n static readonly stationSettingUrl = \"/station-settings\";\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n/** Token to inject the auth service */\r\nexport const AUTH_SERVICE_TOKEN:\r\n InjectionToken<IAuthService> =\r\n new InjectionToken<IAuthService>('Auth service token');\r\n\r\nexport interface IAuthService {\r\n isLoggingIn: boolean; \r\n onSuccessfulAuthenticatingUser(loggedInViaSso: boolean): void;\r\n isUsernameAvailable(username: string): Observable<any>;\r\n isEmailAvailable(emailId: string, ogId:number): Observable<any>;\r\n getUserState(username: string): Observable<any>;\r\n navigateBasedOnUserRole(loginUserData: any): void;\r\n getPublicIp(): string;\r\n sendRegenerationEmail(userCode:string):void;\r\n onPasswordUpdate(userName:string): void;\r\n newPasswordSetThenUpdateToBackend(userCode: string): void;\r\n signInWithDuo(): void;\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\n/** Token to inject the auth service */\r\nexport const CONFIG_SERVICE_TOKEN:\r\n InjectionToken<IConfigService> =\r\n new InjectionToken<IConfigService>('Cognito config service token');\r\n\r\nexport interface IConfigService {\r\n appGenericConfig : { \r\n loginPageLogoImgUrl: string,\r\n cognito : {\r\n userPoolId: string,\r\n clientId: string,\r\n },\r\n currentAnnaVersion: string\r\n };\r\n\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\n/** Token to inject the acl service */\r\nexport const ACL_SERVICE_TOKEN:\r\n InjectionToken<IAclService> =\r\n new InjectionToken<IAclService>('ACL service token');\r\n\r\nexport interface IAclService {\r\n urlToCognitoPrivilegeMap: {[key: string]: string};\r\n MANAGE_USERS_WRITE: string;\r\n ORDER_BIZ_RULES_WRITE: string;\r\n ORDER_REVISIONS_WRITE: string;\r\n ORDER_SPOTS_REPORT_WRITE: string;\r\n POLITICAL_WINDOW_WRITE: string;\r\n DASHBOARD_DAILY_REVISIONS_READ: string;\r\n ENTER_EDIT_TARGET_LUR_WRITE: string;\r\n ENTER_EDIT_TARGET_CSR_WRITE: string;\r\n MANAGE_ROLES_WRITE: string;\r\n ACTIVE_STATION_USER_READ: string;\r\n USER_AWAITING_ACTIVATION_WRITE: string;\r\n DAILY_REVISION_ONGOING_AND_DAILY_COMPLETED_READ: string;\r\n USER_MANAGEMENT_READ: string;\r\n USER_MANAGEMENT_WRITE: string;\r\n STATION_BUSINESS_RULE_WRITE: string;\r\n ADVERTISER_BUSINESS_RULE_WRITE: string;\r\n EC_LISTING_READ: string;\r\n EC_LISTING_WRITE: string;\r\n ORDER_DISCREPANCIES: string;\r\n REVISION_CYCLE_SETTINGS_READ: string;\r\n REVISION_CYCLE_SETTINGS_WRITE: string;\r\n ROLLING_AVERAGES_READ: string;\r\n ROLLING_AVERAGES_WRITE: string;\r\n WRITE_ENABLED_ORDERS_READ: string;\r\n WRITE_ENABLED_ORDERS_WRITE: string;\r\n STATION_POLITICAL_RATE_CARD_READ: string;\r\n STATION_POLITICAL_RATE_CARD_WRITE: string;\r\n AUDIENCE_ESTIMATES_READ: string;\r\n}","import { Inject, Injectable } from \"@angular/core\";\r\nimport { IAclService, ACL_SERVICE_TOKEN } from '../config/acl-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaLibAclService {\r\n constructor(@Inject(ACL_SERVICE_TOKEN) public consumingProjectAclService: IAclService) {}\r\n\r\n userGroupsInCognitoJWT: string[];\r\n isUserAuthorisedToAccessPage(url: string): boolean {\r\n let privilegeName = this.consumingProjectAclService.urlToCognitoPrivilegeMap[url];\r\n return this.userGroupsInCognitoJWT.includes(privilegeName);\r\n }\r\n\r\n isUserAuthorisedToAccessElement(privilege: string): boolean {\r\n return this.userGroupsInCognitoJWT.includes(privilege);\r\n }\r\n\r\n}\r\n","// Angular import statements\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { Inject, Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// Third party import statements\r\nimport {\r\n AuthTokens, SignInInput, confirmResetPassword, confirmSignIn, fetchAuthSession,\r\n getCurrentUser, resetPassword, signIn, signOut\r\n} from \"aws-amplify/auth\";\r\n\r\n// User defined import statements\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AUTH_SERVICE_TOKEN, IAuthService } from '../config/auth-service.token';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../config/config-service.token';\r\nimport { LoginConstant } from \"../constants/loginConstant\";\r\nimport { AnnaLibAclService } from './acl.service';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaLibAuthService {\r\n defaultLoginPageUrl: \"co-pilot-login\" | \"login\";\r\n accessToken: string;\r\n IdToken: any;\r\n loginErrorMessage: string | null;\r\n setNewPasswordErrorMessage: string;\r\n setNewPasswordButtonMessage: string;\r\n verifyAndSetNewPasswordErrorMessage: string;\r\n verifyAndSetNewPasswordMessage: string;\r\n verifyAndSetNewPasswordButton: string;\r\n noOfAttempts = 0;\r\n sessionLocked = false;\r\n userName: any;\r\n accessTokenTimerId: any;\r\n forgotPasswordAndGlobalSignoutLoader: boolean;\r\n\r\n constructor(\r\n private router: Router,\r\n public aclService: AnnaLibAclService,\r\n public httpClient: HttpClient,\r\n private toastr: ToastrService,\r\n @Inject(AUTH_SERVICE_TOKEN) public consumingProjectAuthService: IAuthService,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService) {\r\n if (!consumingProjectAuthService) {\r\n throw new Error('You must provide a authService');\r\n }\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n async isUserLoggedIn(): Promise<boolean> {\r\n try {\r\n // await getCurrentUser();\r\n return new Promise(async (resolve, reject) => {\r\n const session: any = await fetchAuthSession();\r\n if (session?.tokens) {\r\n this.IdToken = session?.tokens.idToken.toString();\r\n this.getAllCognitoTokenAndGroups(session.tokens);\r\n resolve(true);\r\n } else {\r\n this.toastr.error(LoginConstant.sessionExpiredError);\r\n this.sessionTimeout();\r\n resolve(false);\r\n }\r\n });\r\n } catch (error) {\r\n return new Promise((resolve) => {\r\n clearInterval(this.accessTokenTimerId);\r\n resolve(false);\r\n });\r\n }\r\n }\r\n\r\n sessionTimeout() {\r\n localStorage.clear();\r\n clearInterval(this.accessTokenTimerId);\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n }\r\n\r\n computeTokenExpiration(idToken: any) {\r\n let currentTime = Math.floor(Date.now() / 1000);\r\n let tokenTime = idToken.payload.exp;\r\n let expTime = (tokenTime - currentTime) * 1000;\r\n return expTime;\r\n }\r\n\r\n async handleSignIn({ username, password }: SignInInput) {\r\n try {\r\n const { isSignedIn, nextStep } = await signIn({ username, password });\r\n switch (nextStep?.signInStep) {\r\n case \"DONE\":\r\n let session = await fetchAuthSession();\r\n let newExpTime = this.computeTokenExpiration(session.tokens.idToken);\r\n this.accessToken = session.tokens.accessToken.toString();\r\n this.IdToken = session.tokens.idToken.toString();\r\n localStorage.setItem(\"accessTokenExpiration\", newExpTime.toString());\r\n this.refreshAccessToken();\r\n this.loginErrorMessage = null;\r\n await this.consumingProjectAuthService.onSuccessfulAuthenticatingUser(false);\r\n this.getAllCognitoTokenAndGroups(session.tokens);\r\n break;\r\n\r\n case \"CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED\":\r\n this.consumingProjectAuthService.isLoggingIn = false;\r\n this.userName = username;\r\n this.router.navigate([LoginConstant.setNewPasswordUrl]);\r\n this.setNewPasswordErrorMessage = null;\r\n break;\r\n\r\n case \"RESET_PASSWORD\":\r\n break;\r\n }\r\n } catch (error: any) {\r\n this.consumingProjectAuthService.isLoggingIn = false;\r\n if (error?.message == LoginConstant.tempPasswordExpiryError) {\r\n this.loginErrorMessage = LoginConstant.tempPasswordOnExpiryErrorMsg;\r\n this.consumingProjectAuthService.sendRegenerationEmail(username);\r\n } else if (error?.message === \"Password attempts exceeded\") {\r\n this.loginErrorMessage = LoginConstant.attemptLimitExceeded;\r\n } else {\r\n this.loginErrorMessage = LoginConstant.userNamePasswordIncorrect;\r\n }\r\n }\r\n }\r\n\r\n async getAllCognitoTokenAndGroups(token: AuthTokens) {\r\n this.accessToken = token.accessToken.toString();\r\n this.IdToken = token.idToken;\r\n if (\"cognito:groups\" in token.accessToken.payload) {\r\n let userGroupsInCognitoJWT: any = token.accessToken.payload[\"cognito:groups\"];\r\n this.aclService.userGroupsInCognitoJWT = userGroupsInCognitoJWT;\r\n } else {\r\n this.aclService.userGroupsInCognitoJWT = [];\r\n }\r\n }\r\n\r\n refreshAccessToken() {\r\n let accessTokenExpiration = localStorage.getItem(\"accessTokenExpiration\");\r\n let expTime = accessTokenExpiration ? parseInt(accessTokenExpiration) : 0;\r\n this.accessTokenTimerId = setInterval(() => {\r\n let counter = 1000;\r\n let delayFunction = setTimeout(async () => {\r\n try {\r\n let session = await fetchAuthSession();\r\n let token = session.tokens;\r\n if (token) {\r\n this.getAllCognitoTokenAndGroups(token);\r\n let newExpTime = this.computeTokenExpiration(this.IdToken);\r\n\r\n if (newExpTime <= 0) {\r\n newExpTime = 1000;\r\n counter = 0;\r\n if (delayFunction) {\r\n clearInterval(delayFunction);\r\n }\r\n }\r\n expTime = newExpTime;\r\n localStorage.setItem(\"accessTokenExpiration\", newExpTime.toString());\r\n clearInterval(this.accessTokenTimerId);\r\n this.refreshAccessToken();\r\n } else {\r\n this.toastr.error(LoginConstant.sessionExpiredError);\r\n this.sessionTimeout();\r\n }\r\n } catch (error) {\r\n this.toastr.error(LoginConstant.sessionExpiredError);\r\n this.sessionTimeout();\r\n }\r\n }, counter);\r\n }, expTime);\r\n }\r\n\r\n async changePassword(newPassword: string) {\r\n try {\r\n let inputParam = {\r\n challengeResponse: newPassword,\r\n }\r\n const data = await confirmSignIn(inputParam);\r\n const { username } = await getCurrentUser();\r\n console.log(data);\r\n this.consumingProjectAuthService.onPasswordUpdate(username);\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n this.consumingProjectAuthService.newPasswordSetThenUpdateToBackend(username);\r\n } catch (err) {\r\n console.log(err);\r\n this.setNewPasswordErrorMessage = LoginConstant.sessionExpired;\r\n this.setNewPasswordButtonMessage = LoginConstant.loginAgain;\r\n }\r\n }\r\n\r\n async onForgotPasswordGenerateOTP(email: string) {\r\n let username = email;\r\n this.userName = email;\r\n try {\r\n let result: any = await resetPassword({ username });\r\n this.verifyAndSetNewPasswordMessage =\r\n LoginConstant.verifyAndSetNewPasswordMessage +\r\n result?.nextStep?.codeDeliveryDetails?.destination +\r\n LoginConstant.pleaseEnterItBelow;\r\n this.router.navigate([LoginConstant.verifyAndSetNewPasswordUrl]);\r\n } catch (err) {\r\n }\r\n }\r\n\r\n async verifyCode(confirmationCode: string, newPassword: string) {\r\n const { username } = await getCurrentUser();\r\n try {\r\n confirmResetPassword({ username, newPassword, confirmationCode });\r\n this.consumingProjectAuthService.onPasswordUpdate(username);\r\n this.expiryAllExistingCurrentSession(username, newPassword);\r\n } catch (err) {\r\n console.log(err);\r\n this.noOfAttempts = this.noOfAttempts + 1;\r\n this.verifyAndSetNewPasswordErrorMessage = this.forgotPasswordError(err, this.noOfAttempts);\r\n this.forgotPasswordAndGlobalSignoutLoader = false;\r\n }\r\n }\r\n\r\n forgotPasswordError(err: any, noOfAttempts: number) {\r\n let errorMessage;\r\n switch (err.code) {\r\n case \"LimitExceededException\":\r\n this.sessionLocked = true;\r\n errorMessage = LoginConstant.attemptLimitExceeded;\r\n break;\r\n case \"ExpiredCodeException\":\r\n errorMessage = LoginConstant.sessionExpired;\r\n this.verifyAndSetNewPasswordButton = LoginConstant.regenerateOtp;\r\n break;\r\n default:\r\n errorMessage = LoginConstant.attempt + \" \" + noOfAttempts + LoginConstant.attemptMessage;\r\n }\r\n return errorMessage;\r\n }\r\n\r\n\r\n signInWithDuo() {\r\n this.consumingProjectAuthService.signInWithDuo();\r\n }\r\n\r\n async handleSignOut() {\r\n try {\r\n await signOut({ global: false });\r\n } catch (error) {\r\n console.log('error signing out: ', error);\r\n }\r\n }\r\n\r\n expiryAllExistingCurrentSession(username: string, newPassword: string) {\r\n this.setUserDetails();\r\n this.onLoginInCogntioToGetAccessToken(username, newPassword);\r\n }\r\n\r\n setUserDetails() {\r\n this.loginErrorMessage = null;\r\n }\r\n\r\n async onLoginInCogntioToGetAccessToken(username: string, password: string) {\r\n try {\r\n const { isSignedIn, nextStep } = await signIn({ username, password });\r\n let session = await fetchAuthSession();\r\n switch (nextStep?.signInStep) {\r\n case \"DONE\":\r\n this.getAllCognitoTokenAndGroups(session.tokens);\r\n this.onCallGlobalSignout();\r\n break;\r\n }\r\n } catch (error: any) { }\r\n }\r\n\r\n async onCallGlobalSignout() {\r\n try {\r\n await signOut({ global: true });\r\n this.forgotPasswordAndGlobalSignoutLoader = false;\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n } catch (error) {\r\n console.log('error signing out: ', error);\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, Renderer2, SimpleChanges, OnChanges, OnInit } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[anna-cognito-lib-SpinnerButton]\",\r\n})\r\nexport class SpinnerButtonDirective implements OnInit, OnChanges {\r\n @Input(\"anna-cognito-lib-SpinnerButton\") loading: boolean;\r\n @Input(\"spinnerButtonText\") spinnerButtonText: string;\r\n child: HTMLDivElement;\r\n button: any;\r\n\r\n constructor(\r\n private el: ElementRef, \r\n private renderer: Renderer2) {\r\n this.button = this.el.nativeElement;\r\n this.child = document.createElement(\"div\");\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['spinnerButtonText'] && changes['spinnerButtonText'].currentValue) {\r\n this.button.innerHTML = this.spinnerButtonText;\r\n }\r\n if (changes['loading'] && changes['loading'].currentValue) {\r\n this.button.innerHTML = \"\";\r\n this.button.setAttribute(\"disabled\", \"true\");\r\n this.child.classList.add(\"spinner-for-button-directive\");\r\n this.renderer.appendChild(this.button, this.child);\r\n } else {\r\n this.child.classList.remove(\"spinner-for-button-directive\");\r\n this.button.removeAttribute(\"disabled\");\r\n this.button.innerHTML = this.spinnerButtonText;\r\n }\r\n }\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-version-and-term-policy',\r\n templateUrl: './version-and-term-policy.component.html',\r\n styleUrls: ['./version-and-term-policy.component.scss']\r\n})\r\nexport class VersionAndTermPolicyComponent implements OnInit {\r\n\r\n constructor(\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<p class=\"verison-and-policy\"> Version {{consumingProjectConfigService.appGenericConfig.currentAnnaVersion}} </p>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-surewaves-year-logo',\r\n templateUrl: './surewaves-year-logo.component.html',\r\n styleUrls: ['./surewaves-year-logo.component.scss']\r\n})\r\nexport class SurewavesYearLogoComponent implements OnInit {\r\n currentYear: number;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.currentYear = new Date().getFullYear();\r\n }\r\n\r\n}\r\n","<div class=\"surewaves-year-logo\">\r\n © SureWaves {{currentYear}}. All rights reserved. \r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-powered-by-logo-template',\r\n templateUrl: './powered-by-logo-template.component.html',\r\n styleUrls: ['./powered-by-logo-template.component.scss']\r\n})\r\nexport class PoweredByLogoTemplateComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"poweredBySurewavesLogo\"> \r\n</ng-container>\r\n\r\n<ng-template #poweredBySurewavesLogo>\r\n<svg width=\"230px\" height=\"69px\" viewBox=\"0 0 230 69\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n <path d=\"M2.576,1.064 C3.93866667,1.064 4.98633333,1.323 5.719,1.841 C6.45166667,2.359 6.818,3.13133333 6.818,4.158 C6.818,4.718 6.71766667,5.19633333 6.517,5.593 C6.31633333,5.98966667 6.027,6.31166667 5.649,6.559 C5.271,6.80633333 4.81133333,6.986 4.27,7.098 C3.72866667,7.21 3.11733333,7.266 2.436,7.266 L1.358,7.266 L1.358,10.864 L0,10.864 L0,1.302 C0.382666667,1.20866667 0.809666667,1.14566667 1.281,1.113 C1.75233333,1.08033333 2.184,1.064 2.576,1.064 Z M2.688,2.254 C2.10933333,2.254 1.666,2.268 1.358,2.296 L1.358,6.104 L2.38,6.104 C2.84666667,6.104 3.26666667,6.07366667 3.64,6.013 C4.01333333,5.95233333 4.32833333,5.84966667 4.585,5.705 C4.84166667,5.56033333 5.04,5.362 5.18,5.11 C5.32,4.858 5.39,4.536 5.39,4.144 C5.39,3.77066667 5.31766667,3.46266667 5.173,3.22 C5.02833333,2.97733333 4.83233333,2.78366667 4.585,2.639 C4.33766667,2.49433333 4.05066667,2.394 3.724,2.338 C3.39733333,2.282 3.052,2.254 2.688,2.254 Z\" id=\"path-1\"></path>\r\n <path d=\"M14.56,7.224 C14.56,7.80266667 14.476,8.32533333 14.308,8.792 C14.14,9.25866667 13.9043333,9.66 13.601,9.996 C13.2976667,10.332 12.936,10.591 12.516,10.773 C12.096,10.955 11.6386667,11.046 11.144,11.046 C10.6493333,11.046 10.192,10.955 9.772,10.773 C9.352,10.591 8.99033333,10.332 8.687,9.996 C8.38366667,9.66 8.148,9.25866667 7.98,8.792 C7.812,8.32533333 7.728,7.80266667 7.728,7.224 C7.728,6.65466667 7.812,6.13433333 7.98,5.663 C8.148,5.19166667 8.38366667,4.788 8.687,4.452 C8.99033333,4.116 9.352,3.857 9.772,3.675 C10.192,3.493 10.6493333,3.402 11.144,3.402 C11.6386667,3.402 12.096,3.493 12.516,3.675 C12.936,3.857 13.2976667,4.116 13.601,4.452 C13.9043333,4.788 14.14,5.19166667 14.308,5.663 C14.476,6.13433333 14.56,6.65466667 14.56,7.224 Z M13.202,7.224 C13.202,6.40266667 13.0176667,5.75166667 12.649,5.271 C12.2803333,4.79033333 11.7786667,4.55 11.144,4.55 C10.5093333,4.55 10.0076667,4.79033333 9.639,5.271 C9.27033333,5.75166667 9.086,6.40266667 9.086,7.224 C9.086,8.04533333 9.27033333,8.69633333 9.639,9.177 C10.0076667,9.65766667 10.5093333,9.898 11.144,9.898 C11.7786667,9.898 12.2803333,9.65766667 12.649,9.177 C13.0176667,8.69633333 13.202,8.04533333 13.202,7.224 Z\" id=\"path-2\"></path>\r\n <path d=\"M22.162,10.864 C21.9006667,10.192 21.623,9.42433333 21.329,8.561 C21.035,7.69766667 20.7666667,6.79933333 20.524,5.866 C20.2813333,6.79933333 20.0153333,7.69766667 19.726,8.561 C19.4366667,9.42433333 19.1613333,10.192 18.9,10.864 L17.766,10.864 C17.3366667,9.90266667 16.9166667,8.806 16.506,7.574 C16.0953333,6.342 15.708,5.012 15.344,3.584 L16.744,3.584 C16.8373333,4.02266667 16.9493333,4.49866667 17.08,5.012 C17.2106667,5.52533333 17.3483333,6.03866667 17.493,6.552 C17.6376667,7.06533333 17.7893333,7.56 17.948,8.036 C18.1066667,8.512 18.256,8.92733333 18.396,9.282 C18.5546667,8.84333333 18.711,8.379 18.865,7.889 C19.019,7.399 19.166,6.90433333 19.306,6.405 C19.446,5.90566667 19.579,5.41566667 19.705,4.935 C19.831,4.45433333 19.9406667,4.004 20.034,3.584 L21.112,3.584 C21.196,4.004 21.2986667,4.45433333 21.42,4.935 C21.5413333,5.41566667 21.672,5.90566667 21.812,6.405 C21.952,6.90433333 22.099,7.399 22.253,7.889 C22.407,8.379 22.5633333,8.84333333 22.722,9.282 C22.862,8.92733333 23.009,8.512 23.163,8.036 C23.317,7.56 23.4686667,7.06533333 23.618,6.552 C23.7673333,6.03866667 23.9073333,5.52533333 24.038,5.012 C24.1686667,4.49866667 24.2806667,4.02266667 24.374,3.584 L25.718,3.584 C25.354,5.012 24.9666667,6.342 24.556,7.574 C24.1453333,8.806 23.7253333,9.90266667 23.296,10.864 L22.162,10.864 Z\" id=\"path-3\"></path>\r\n <path d=\"M26.684,7.238 C26.684,6.594 26.7773333,6.03166667 26.964,5.551 C27.1506667,5.07033333 27.398,4.67133333 27.706,4.354 C28.014,4.03666667 28.3686667,3.79866667 28.77,3.64 C29.1713333,3.48133333 29.582,3.402 30.002,3.402 C30.982,3.402 31.7333333,3.70766667 32.256,4.319 C32.7786667,4.93033333 33.04,5.86133333 33.04,7.112 C33.04,7.168 33.04,7.24033333 33.04,7.329 C33.04,7.41766667 33.0353333,7.49933333 33.026,7.574 L28.042,7.574 C28.098,8.33 28.3173333,8.904 28.7,9.296 C29.0826667,9.688 29.68,9.884 30.492,9.884 C30.9493333,9.884 31.3343333,9.84433333 31.647,9.765 C31.9596667,9.68566667 32.1953333,9.60866667 32.354,9.534 L32.536,10.626 C32.3773333,10.71 32.0996667,10.7986667 31.703,10.892 C31.3063333,10.9853333 30.856,11.032 30.352,11.032 C29.7173333,11.032 29.169,10.9363333 28.707,10.745 C28.245,10.5536667 27.8646667,10.29 27.566,9.954 C27.2673333,9.618 27.0456667,9.219 26.901,8.757 C26.7563333,8.295 26.684,7.78866667 26.684,7.238 Z M31.682,6.524 C31.6913333,5.936 31.5443333,5.453 31.241,5.075 C30.9376667,4.697 30.52,4.508 29.988,4.508 C29.6893333,4.508 29.4256667,4.56633333 29.197,4.683 C28.9683333,4.79966667 28.7746667,4.95133333 28.616,5.138 C28.4573333,5.32466667 28.3336667,5.53933333 28.245,5.782 C28.1563333,6.02466667 28.098,6.272 28.07,6.524 L31.682,6.524 Z\" id=\"path-4\"></path>\r\n <path d=\"M37.604,3.43 C37.716,3.43 37.8443333,3.437 37.989,3.451 C38.1336667,3.465 38.276,3.48366667 38.416,3.507 C38.556,3.53033333 38.6843333,3.55366667 38.801,3.577 C38.9176667,3.60033333 39.004,3.62133333 39.06,3.64 L38.836,4.774 C38.7333333,4.73666667 38.563,4.69233333 38.325,4.641 C38.087,4.58966667 37.7813333,4.564 37.408,4.564 C37.1653333,4.564 36.925,4.58966667 36.687,4.641 C36.449,4.69233333 36.2926667,4.72733333 36.218,4.746 L36.218,10.864 L34.916,10.864 L34.916,3.892 C35.224,3.78 35.6066667,3.675 36.064,3.577 C36.5213333,3.479 37.0346667,3.43 37.604,3.43 Z\" id=\"path-5\"></path>\r\n <path d=\"M39.914,7.238 C39.914,6.594 40.0073333,6.03166667 40.194,5.551 C40.3806667,5.07033333 40.628,4.67133333 40.936,4.354 C41.244,4.03666667 41.5986667,3.79866667 42,3.64 C42.4013333,3.48133333 42.812,3.402 43.232,3.402 C44.212,3.402 44.9633333,3.70766667 45.486,4.319 C46.0086667,4.93033333 46.27,5.86133333 46.27,7.112 C46.27,7.168 46.27,7.24033333 46.27,7.329 C46.27,7.41766667 46.2653333,7.49933333 46.256,7.574 L41.272,7.574 C41.328,8.33 41.5473333,8.904 41.93,9.296 C42.3126667,9.688 42.91,9.884 43.722,9.884 C44.1793333,9.884 44.5643333,9.84433333 44.877,9.765 C45.1896667,9.68566667 45.4253333,9.60866667 45.584,9.534 L45.766,10.626 C45.6073333,10.71 45.3296667,10.7986667 44.933,10.892 C44.5363333,10.9853333 44.086,11.032 43.582,11.032 C42.9473333,11.032 42.399,10.9363333 41.937,10.745 C41.475,10.5536667 41.0946667,10.29 40.796,9.954 C40.4973333,9.618 40.2756667,9.219 40.131,8.757 C39.9863333,8.295 39.914,7.78866667 39.914,7.238 Z M44.912,6.524 C44.9213333,5.936 44.7743333,5.453 44.471,5.075 C44.1676667,4.697 43.75,4.508 43.218,4.508 C42.9193333,4.508 42.6556667,4.56633333 42.427,4.683 C42.1983333,4.79966667 42.0046667,4.95133333 41.846,5.138 C41.6873333,5.32466667 41.5636667,5.53933333 41.475,5.782 C41.3863333,6.02466667 41.328,6.272 41.3,6.524 L44.912,6.524 Z\" id=\"path-6\"></path>\r\n <path d=\"M52.85,5.124 C52.6913333,4.99333333 52.4626667,4.86733333 52.164,4.746 C51.8653333,4.62466667 51.5386667,4.564 51.184,4.564 C50.8106667,4.564 50.491,4.63166667 50.225,4.767 C49.959,4.90233333 49.742,5.089 49.574,5.327 C49.406,5.565 49.2846667,5.84733333 49.21,6.174 C49.1353333,6.50066667 49.098,6.85066667 49.098,7.224 C49.098,8.07333333 49.308,8.729 49.728,9.191 C50.148,9.653 50.708,9.884 51.408,9.884 C51.7626667,9.884 52.059,9.86766667 52.297,9.835 C52.535,9.80233333 52.7193333,9.76733333 52.85,9.73 L52.85,5.124 Z M52.85,0.224 L54.152,0 L54.152,10.654 C53.8533333,10.738 53.4706667,10.822 53.004,10.906 C52.5373333,10.99 52.0006667,11.032 51.394,11.032 C50.834,11.032 50.33,10.9433333 49.882,10.766 C49.434,10.5886667 49.0513333,10.3366667 48.734,10.01 C48.4166667,9.68333333 48.1716667,9.28433333 47.999,8.813 C47.8263333,8.34166667 47.74,7.812 47.74,7.224 C47.74,6.664 47.8123333,6.15066667 47.957,5.684 C48.1016667,5.21733333 48.314,4.816 48.594,4.48 C48.874,4.144 49.217,3.88266667 49.623,3.696 C50.029,3.50933333 50.4933333,3.416 51.016,3.416 C51.436,3.416 51.807,3.472 52.129,3.584 C52.451,3.696 52.6913333,3.80333333 52.85,3.906 L52.85,0.224 Z\" id=\"path-7\"></path>\r\n <path d=\"M60.928,3.906 C61.0866667,3.80333333 61.327,3.696 61.649,3.584 C61.971,3.472 62.342,3.416 62.762,3.416 C63.2846667,3.416 63.749,3.50933333 64.155,3.696 C64.561,3.88266667 64.904,4.144 65.184,4.48 C65.464,4.816 65.6763333,5.21733333 65.821,5.684 C65.9656667,6.15066667 66.038,6.664 66.038,7.224 C66.038,7.812 65.9516667,8.34166667 65.779,8.813 C65.6063333,9.28433333 65.3613333,9.68333333 65.044,10.01 C64.7266667,10.3366667 64.344,10.5886667 63.896,10.766 C63.448,10.9433333 62.944,11.032 62.384,11.032 C61.7773333,11.032 61.2406667,10.99 60.774,10.906 C60.3073333,10.822 59.9246667,10.738 59.626,10.654 L59.626,0.224 L60.928,0 L60.928,3.906 Z M60.928,9.73 C61.0586667,9.76733333 61.243,9.80233333 61.481,9.835 C61.719,9.86766667 62.0153333,9.884 62.37,9.884 C63.07,9.884 63.63,9.653 64.05,9.191 C64.47,8.729 64.68,8.07333333 64.68,7.224 C64.68,6.85066667 64.6426667,6.50066667 64.568,6.174 C64.4933333,5.84733333 64.372,5.565 64.204,5.327 C64.036,5.089 63.819,4.90233333 63.553,4.767 C63.287,4.63166667 62.9673333,4.564 62.594,4.564 C62.2393333,4.564 61.9126667,4.62466667 61.614,4.746 C61.3153333,4.86733333 61.0866667,4.99333333 60.928,5.124 L60.928,9.73 Z\" id=\"path-8\"></path>\r\n <path d=\"M66.836,12.222 C66.9386667,12.2686667 67.0716667,12.313 67.235,12.355 C67.3983333,12.397 67.5593333,12.418 67.718,12.418 C68.2313333,12.418 68.6326667,12.3036667 68.922,12.075 C69.2113333,11.8463333 69.4726667,11.4753333 69.706,10.962 C69.118,9.842 68.5696667,8.65433333 68.061,7.399 C67.5523333,6.14366667 67.13,4.872 66.794,3.584 L68.194,3.584 C68.2966667,4.004 68.4203333,4.45666667 68.565,4.942 C68.7096667,5.42733333 68.8706667,5.92666667 69.048,6.44 C69.2253333,6.95333333 69.4166667,7.46666667 69.622,7.98 C69.8273333,8.49333333 70.042,8.988 70.266,9.464 C70.6206667,8.484 70.9286667,7.51333333 71.19,6.552 C71.4513333,5.59066667 71.6986667,4.60133333 71.932,3.584 L73.276,3.584 C72.94,4.956 72.5666667,6.27433333 72.156,7.539 C71.7453333,8.80366667 71.302,9.98666667 70.826,11.088 C70.6393333,11.508 70.4456667,11.8696667 70.245,12.173 C70.0443333,12.4763333 69.8226667,12.726 69.58,12.922 C69.3373333,13.118 69.0643333,13.2626667 68.761,13.356 C68.4576667,13.4493333 68.1146667,13.496 67.732,13.496 C67.6293333,13.496 67.522,13.489 67.41,13.475 C67.298,13.461 67.1883333,13.4423333 67.081,13.419 C66.9736667,13.3956667 66.8756667,13.37 66.787,13.342 C66.6983333,13.314 66.6353333,13.2906667 66.598,13.272 L66.836,12.222 Z\" id=\"path-9\"></path>\r\n </defs>\r\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"Group-Copy-2\" transform=\"translate(0.338000, 0.500000)\">\r\n <g id=\"Powered-by\" transform=\"translate(0.000000, 45.636000)\" fill-rule=\"nonzero\" opacity=\"0.900000036\">\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-1\"></use>\r\n <use xlink:href=\"#path-1\"></use>\r\n </g>\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-2\"></use>\r\n <use xlink:href=\"#path-2\"></use>\r\n </g>\r\n <g id=\"Path\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-3\"></use>\r\n <use xlink:href=\"#path-3\"></use>\r\n </g>\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-4\"></use>\r\n <use xlink:href=\"#path-4\"></use>\r\n </g>\r\n <g id=\"Path\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-5\"></use>\r\n <use xlink:href=\"#path-5\"></use>\r\n </g>\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-6\"></use>\r\n <use xlink:href=\"#path-6\"></use>\r\n </g>\r\n <g id=\"Shape\" fill=\"#6E6E6E\">\r\n <use xlink:href=\"#path-7\"></use>\r\n <use xlink:href=\"#path-7\"></use>\r\n </g>\r\n <g id=\"Shape\">\r\n <use fill=\"#FFFFFF\" xlink:href=\"#path-8\"></use>\r\n <use fill=\"#6E6E6E\" xlink:href=\"#path-8\"></use>\r\n </g>\r\n <g id=\"Path\">\r\n <use fill=\"#FFFFFF\" xlink:href=\"#path-9\"></use>\r\n <use fill=\"#6E6E6E\" xlink:href=\"#path-9\"></use>\r\n </g>\r\n </g>\r\n <image id=\"Bitmap\" x=\"77.662\" y=\"0\" width=\"151.111111\" height=\"68\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANwAAABjCAYAAADwxm4hAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAA3KADAAQAAAABAAAAYwAAAAD49S2gAAA5XElEQVR4Ae1dB3wVxdY/s3tLbnpCryIdQu+EFqpPeIqgYAEBFUUUEBVQeZaA+BQEwQJSpAhiAQXEJwgiYOi9BlDpICACAVJv2d3vf/ZmLzc3CSQQ3vOLO/ndzOzMmXZ2zpwzZ87MEpnOxICJARMDJgZMDBRGDIiC7FSrH797UtZEQ5umjl15173HCrJssywTA4UBA5aC6ETzFUtiLZL0oVCVBg6bTFbSNqFck+AKArlmGYUKA9Kt9iZ25dK3rELeIGvUwC40kkl7x253LrjVcs38JgYKIwZuWqS857vvgi/aaRm4WRsLCE2QupJIG7qqY/eDhRFRZp9MDBQEBm6K4OLWrAnyuFN2gZtVtwoV7dCeWdWx28cF0SCzDBMDhRkDNyVSCkr9xCpr1S2kOmWFWgcSW3x8/E2VW5gRbfbNxABjIN8cLm7Fd9WDgqSDHqebJE1rtPKubjt6LFgge6Is/xSy0t6iUTdZUJAs1BV21fOvme17nTBRbWLAxIAXA/kmuHY/La4UFRx0OC0tgySP9mmQRDZVaHESqaVsFomsVgsp6emk4S/YZjknBV8qP73RALeJcBMDJgaI8i36rW7f7Qi51EFFQuxkt1BfVagPg5uVCgqyniKX86ULicfuSUu6kmhDYqTDWtJ+vly+6zBfjImBwoqBmyKGb9p0mZye5mpmsYhhkqaOAGdrM7/lfeUvHT27wh5mez40OjTGLmmUnuHq82Hnzk5/5I1YPzPsmTWTQ/3jzLCJgb8LBvItUuaGmAeXzJ5rCbY96oh0QKR0XhKq1nVW20fW91szOyhIs9wrSdpjQnhqy6SWsciaBoXLHkHKyLEtn1meW5lmvImBwoaBWya4Xqu/ehzKk5myDcxSU0koyvjZbXsNZ0T1//mzF0FbL8ukFJWFAvlVIYtM+GkIqxQmQHJOd8XX2gw2rVIK28gy+5MjBm7JtOvhVV8OEKRNlbDxTap7qhDW1++gEklPrZ43EhT1OsRNu5fQtJMWWfrcGhq0OFjNOH18z6lLKrmO1qxXppSmOdujZZ/k2Doz0sRAIcPALRFciE1+NsPtgupFHIHGcqUsOUecpNPDJDA7WKCA5jyHrEJMmdT68Q/98dZyQO+61WPLhkuSQhke92H/NDNsYqAwY+CWRMoXti+ZDgnxyQtXU8nKRCZLbOIFydKzV1O0CVPa9ZsbiLxOI/sPr1y35LjyVYqSkpGxbWTzl5oKwSzSdCYGCj8GbonDXUpOGlIyJErcER3aWFEVV5pT2ZGe4Z4/pW3f9YGo6/rm0AeK3hHyaukKEXWjooIoIyVti9uW0c4ktkBMmc+FGQO3xOFuhJj4NRMjL13OGIpN8L6RxewVQsNsRG6X2+1yjnw1duT4G+U3000MFDYM3BaCe3X9lGpuUp/F1sDjdjuF2K1QYLpcKRA159ic4q0RbUecK2yINPtjYiAvGChQgnth7bS2kix6QVnyBAy8SBYenI9TjkGTOUOz2CfHNxtyNS+NMmFMDBRWDBQIwQ1dMyNOs6ivWzWtrQX7bSAyEkLZC2OT8aNbPT+vsCLP7JeJgfxi4JYJ7vmE6aNQyOu832YhcDShfi6p0tzRrQev8G/MpA2vNdYkUdVOdOmZ5qNN6xJ/5Jjhvw0Gbonghv48o7sklG8sOIQqCXWOcGtj3247+JCBvYkJb5VyS+4hQhb3wsqkJh9WDYKViap5fiOPe+DTse/9ZMCavomBvwMGbong/rVhxvdu1dUZXO3Ht1sO7mQg7J2N79QmzT0QllsDQZDgfF4xE0S516M4qwdZNBiC4VoGjUo+2ez9P4x8pm9ioLBj4Jb24cLs0gVVkelielrF+PXvDpXJ49CEEqtqyj/5nhM8k02ou62ae55ddnz+WJP4c3xYtU6xhFN3hKulXKr6AhD8UmFHstk/EwMGBm6J4FJS0+KLh1raBocGVXJ6XBM1DQdQwTM1zQXu5VkZImnvP91szDKjMvbD5J13pDlTbDbJTh7V459khk0MFHoM3JJIydh5d8W7IUHRtmdhF1lZUTwe7LUd1ci1cmiz+L3+2HtsySs1Q+XL/Yo50oaXCcMxcRlnDJzWkn1aTD3vD2eGTQwUZgzcMsFdDznxa+ItV9JT7o4I8gwKs6R3CrO5KDLISk5FOeJRlIcfazJn2/Xym2kmBgobBm4LwU3f+nzMhTTb/ZLF9Uyk7CzhsCq6cTOIbDup6sw+TWdNLWyINPtjYiAvGCgwgpu4Jj7S4nB2w5HSx/FraZdcIDIVWwDaRUVV52Kf7ovHmswwOVpe3ooJU2gxcMsEN3HDa80tgrqT7BkMRYmdrUwkgSv0SP1W0+hLzeL+ZkCj6Vlu7fpqd/e2QlXLAjZSJtcVSYiD99b/4S9PjNv2UDV0rAV2NPgXKSTa6EouOyU29nR6oR0hZscKFAM3RXDvbXzPoahXn5Bk5QHcTdJGgs0kX58A/zeLpM3weJwLBzafety/pV9sfagcSTBoFsoD2I+rJBPTIPbnJCZOD3PCxa70I716/gUH7+a91FCSaQSa25P7hKN/hBsBSVGtiBLbmtRxNeF405kYuBEG8kVwY9fHN8M57oEWWe0K7hTh5WYetpv8DkdPJw1sOn51YIVf7HyotKaKeBLqk9e4H+fxHMQ+3Z84rhptl5RaBKLzqOqke+tvej6wjP/V8+adVBO7F2/gTG1PcDSd0PBxoP2pHuuUK6khVSOCnEPtOHkridR29WrRmv9VO816//9g4Ib7cGPXjy0N/vM0RMSuQvLUYeNktpkEl9qDG7hmKB5aPKjlhDOBXZ675dE7cUrgJUVRBzAX401wrO12WTXPNJtF+75z3RWnjTzjVj/yVOXwfdNCbNZ7Efc/J7ituylGWOgNiMQ9wML066mtMi1QFZpUJ4bwKS43TV+mPF6zeAY5rDBVUyjN6Ivpmxi4HgZyJbj4zR+Ey0rGOwopA3DMBhIVH7dRVFlTFuG+ko+eaf72zzkVPGdr3xiLpr0E8fFRwYQpsbipbpNUd/wDjf+TZRPcyH8m7Ur5quEuslmx+PsfOl6jqRL9C014FMSGHXwi2KCtRjfeqFeH1nPT5q4oUSvIlj6lVOjVVrgRkGF+iImhLZxmOhMDN8JAjgQ3et27TSUlfSnWZcX1M21C3YWN7a9t5Jg2qOnIizkVOntzv44WizSQNKUb7srTz8JBbNwG066PujdYnO1uEy5jyH8erBUsnXu9VtThHsXDHeR0e77MqezbHbc9kcqrKr0A+nrOkLFhZ70G0uI7EBXxGS6ieT9UqhwSdOWNSMf53sVDNf26P4+HJtWo8b/nyLcbP2b5BYcBY3z5Snxz/dhquNPnEB+3kTXPKUnQS8Ni3/jCBxAQmLV5QFfckTdAlj13SxC1WHmC8DL4s3s2WPR1ALj+GL/6kc6h4s9HI60XHioXlkIRDtxx4vEsaFPj4EMweGbeks2t2UO1LHaCZpPQLjratAb9mg0onxGbdlEF2ULPIhvbdLIuhOXHdbhe88OmdWghPy5aVb2I1X55RHjQpRGRDg+UJSp5FJoHU9F369ShfQxjOhMDecVANg4HQ5BpGhZmGnkOqvag5iMavXwlp8JmbR3YWxPqCIiNtfk0gACxCaHOlRTtw4caL9wemGfwssH24tbTfYoE/zmkpP1ArQh7Om75spBbsa9JdmpTO9Y+mO2rqT/to0poYG8U/jgIvzzmAJ2zQB1PGxNpZvOa9BQIlD9Qly+3NZFKItcQZHrFyAgRcgvKfatJLfrOiFu/PeIVEifHhNoVSRJYsWqulVivjapbmzYaMKZvYiA/GMjC4RbAkv98xROX012poaqqtnup5eg1gYXN3DLoaXzAYwDWdPVkfb8NVKAq02Qhf/hIk08TA+E/335P0T8zgl+Mtl3oG227WCoU95u4VUEucn8jFNuMu+vtzHJQlfOv2ksV8cmr4Wjc0yAoXWnBDUX4hAs6m2CZyuBGPtZnLGxWw6uqD6w3p+c9eygkQ4LWkWgQyuMVGK/BEkFoYxrXIp84u3Uv9dM0Od4ipDuEsME4Rv1Ftqa/XL8mLdHzmP9MDNwkBngc+5ymaWLW7vEXUl0p0S7FOd1hkcdYpIx01aVWxLqss8WiPCk0tTSLjtBWunGmbbqqKhP6NJ13zFdIZmDxro71oCwZCLX/Yw7pqtWCS1/dmvWqorrnop4P7qm/+7fAPKv2U1uIai+Alv6ZSWBMbAcBNwcf41nYtDrp9UxeR2MbRtMIECUpGsU0i6EDgWX5P2/fTsGKXRcdmaNFZXb6mCZoVNNa9KkBu2M33aXKNIZUqZFGQajbtkHSLr/ZsB5lmxSMPKZvYiA/GMgiUvIdkVO3jIqPtts+SHa6nnIr6U9heocYx0oQfDdA4+0Az0Wo9+dpbnV879i5vwdW9s2uu7oITXsSomZX1lKy4lHRxD6PYp9v97in3t1oVxYRdc2uyEhFvvwgRnc/3IHSjBdSzNXwvAnelNYx9FlgHcfSqxytnP4blQgDwV3nhE9iItlSiJ5SVHoVZZTIJLQjKH8yONpEo9zte6iBBvESjPcBUnGVH9l/ASpWyvLlBKtKJw040zcxcKsYyByDWYuZvnVkPxwufdGjuGqB6HC+TfkD3w7Yh7232SFK+OKesROzmDJ9B7HRKSl9kD4YRFYBBAkNBNaBQlkBYp3QpfaWH7PWQLR6p7WuYrE+IYm0x5EWohMahFMM/C8gdU5qWZuyrQO5jOeXxzxVIzhxauMSJDwafd+4Bv0zsGwmtGSV+MT5KxAZS3A6OnoSz+NAaJP94SE+9kKal6g1xy8a2VaDg+PrPml1ZZlaYO2IyYYu4SMkvStXo+X+ec2wiYH8YiBHgjMKmbf9qVKaYgvq0/SjbCIjwyza1qUWSXIfENYQbAHYmaN5N7jVj8EYp3ZtuC7LmTjOs3JfqW6acPWV1PSuIDYmBFYPMhf5THLSR60b0VmGC3SvrKpbNYz2jKkSQj2qRRO+CUnH0t3UsFUdSvKH3bqfngTRvo64siA2dn9CTH2vSR16R38K+Lcjkf4ElyxKWkg6CctiSfOUs8iprVhcRbuWguhgUUNt8GHXwxWqUJWA7OajiYF8YeC6BJdbSQu2d2upCTEUSpP72VCZCQ3KwjNQpExS3PYv72uy8pR/3jWJMaFuxfkUUUZvQSn1BV1leGyK03Yo/947v48W9OzJOpDsbuyaymXt8tEXS1rUoRUjiCJw7dcVN/3oEnR/y+qUbOTYsp/6IPwifnX0OHwPEprHdzw2mugPZ8Ab/u5EsUiIiG5u6PolStVFZxDbebStd82a9ONvB+kn2E22A4dbVq4ydTHymb6JgZvBQJ4JDoNXLNh2fw9NloaB0BozkXmJTdkChfnUsMvqZ23brs2yolqxp0YtKE36SsL5tKD0UFKxFWC9ogU5aGFIBMykirCZVM5uwpoKzYLl4wNKO6hfySCicPzSFDrlVOit2BiaZuTacoC6YN/s3+iIl9DA/MDZ3of92Vjs1eW4SW/kZR8KFaslOPI1WbvcBH3MADdcWrs2zeK0w4doA0TKWBv2BmFqU6F0JXM9x3gx3c1j4IYE9/nmh0uQRXsOGpNHIC7e4d0KcGN9ps3B4JzevcEP2Yhm2b5aD5IinoDyv6MsZ1Bo6FkKCXEdDQqiyRev0Fex5SibsoW7sGYXRSapBIUL9Yi2UuMo6C94DZWu0BHYfL0dW5NmGl3deoAexJ7YCKzLGnAcwFS3Rm8rTpqcm1hq5M2Lf+QQbUfdDfmOFhBbKxDb+rzkM2FMDFwPA1m0lP6A87Y8XpeEa4AmeZ7EVXeQqHQN5Tlws/nCo7wfKDau2FernCLb7rdonsFWq7NiRNRl2Eb+4crIoE9/Pxo+LjbWddi/fP/wod+pxcnT9JjDQb3CoI/HoTrs1ekcjdXxH0Pt/60Bv/kAdcYG+GtYIzYDsTGhQcVBH4LQ3i4IQuN6QGwfQ6xsiHN+JFnortIVTWIz8G/6t4YBHq9Z3Lxt/eM0cg+AadZD+jk3/fsAnl8w289Q7NYPe8YsxBcYr7n/7Gja0Jmh9HWEKoNDw5z4Npyb0pKVK4cP2hecO2r76eRx+9YjBywRly9KVZzp1lIWqxIWFqE6wO3CMpxSiOK2xrTocKLZ/b0OUzSUIenpdAKc8zNFASf0M53adoA6gMiGQw/SiWtnraZLo2lQeExoU5+y7elda2H+QscTqT7E0Z2wo2TzmV5lKtNX+SvBhDYxkDsGfBxu9q6hkRb3lUngF335cKikH6lRl4O7zXygwZJv/Ivgdc85S9MHsW/X12Zzdzh7UqLNX9jp0h8OiF8qJSeR5fQJS52MFOk+q52KhUepFFUUi0DhpVUZxpBJF+2UmmKltnefoK49DlPJ0rQ0KYlmN69BS8G5wN+8buseao/b9waB2O5jpaPO0QTNBEG+38aPILXfyE4R1B85I6FKGS+qkNMoIz++1eYVUcHh5JImseUHdSZsHjCgczhep3nkoK2whyyvq/UlZQ52q2c83OTrjf5lLNnauJxsC3pSJeUxaCTL6tsAspuii6bN3vBD5NwJw+1lrEFS/5AwERcUrJHVBqt6C74O51XP60XJeD73ezDZ7Co9M3x1cteeNPnqJZpTvQz94l/X1n0UC0IbCQWIrhnkIqCZnA2tzIR2MeQzIdMSKZRCYBcp0TP4ldFZn0J1RTnKtiXhX35u4fMoTwuivZBqo9NtVKpcOcqy55hbPjPexEBeMCBYhMQW8itCc0NUU87JNur5cN0v1/ln/nZnXCPeBsBm9sMw8YIOQT+xfRFHcT4gj2V+50Y7jvjDN2vWqgEIraPdrj7tdIoK/mkpV21U9o7kY0Ne3T62Zg36umx4Vk3ixr1UG+umeIiV3XkfjWeEdJmWgnPFt4mhXUZZ2h66k2w0FATWC78iOqCE/QYZG9tWGiNK3/yhUN44LwMyjrwj6x6fUbfpmxi4WQyIudt6L4XW+x62DLHa1PY96y5cbRS2ZHf7BxEeCvOuZt71HG5UJs8erOdmacHFp3WusjxXsW3jb1R/ybyqn347v0ztYqW8oqQEUfLw/qgpZy5+z0disjgQWnVQ8ksgsH4gNoKZFbmstAxcbUyHKte2D7R11BTCY3+ss/rr3IwpUqajeJ4FQvtIVKIspmNZKjEfTAz8jzFgscuerRjf7XEkJ5hcGUMW7+x0pyo8ZXEPyaOaqlWywuhYyPrG9iZVU6d0qbfDawaVQ8MhOkrbf6deoQ4a4sygRok7I8nu4LUbgIWWfPZ0yBAQ2xz/rJsTqSaSByFuIBMaDIop3UEr4X3QuhJ9b8BqP1BX2BP3A8XfhyUmlDMoEvaWeP5MNKEpBpzpmxj4K2PAclkNH1tUunAo2CEWapqlq0fVugbBzIK/eqNC4ygk97cej+fjLvW2rrheR9bsp/74vaYpVL4stqDnfFCM9m0Pp4rV0+jqVcvPF086Hj5xYYXPbGsDzrpBMfE8yvRxu/Rg+gmMdnSbSpTAdWnx4GF16AlwrhcViarpOhfYo+A4zbf4vSfaeOGu1y4zzcTAXwkDzHt09589Xe4Nssk9VdVZBQqDA6rm3uPyuJZ1qbf+uierV+8H0Wg0AIVUA7HRnRDpfj1A/x71XMuR6WmWiKvJ9veOHlvBJle6O3aeSv7xJ70MbqhfZwDCoYwg2oxLe95pXd6736Z9AKExkl7yOGigJlNJnUOiUTADmwLGNtvWJWfDZqMO0zcx8FfFgI/g8tvA1XuDO2uU9j6IoTIXgg/hpJa7kyZfOEDxw19o0f3XAxGfhUZ6ehw7ufJrLvvUFYq+mETPp16l4Tg8aoc5PmWEUCK8Ya3K0Q8Mo03WT2KPdIbTY+BtoUyM8C9BbJyp2mmKoxsdZzjTmRj4/4oB3z5cfjqwaq80ShNprzM9gNic+H1YvCi9XTUSxAEXLBXt0KjluaoJCVt+O3OGgtNsNOj0SXoDcMESzt6kh1OizUlj25ajeQzvHEs1YNUxGKexB2o2jtDFxiPCSjNsDvpA9DRV84wn0/3/xwAzp3y5VftoKghtAGfEbx72xYZ3qE1/5FTImXR69ewpegEKlCio+skVSbx98FLr0qRvpLteo8YgwHecYdSOOV5mYzaD+N6xD7pmzpVT2WaciYH/jxjIF8Gt3qffH/KVTmyCRsfV0u8HydbvxN/1O0NGX76I6wyw9nJH0RGcLH0rrgzNZmD3i9RRs9OrILTWUOl7tZhEyywWmhj0PK3KVqAZYWKgkGAgXwSHW7SOgLtVxNpqcVwMNqYDHAyLn7U76HnFTZXc2HpzFcFGtEQj2pTwHqdJeY7uAiN71R1JLaEM8XI0mT7HVsDU8JG0LqA489HEQKHDAMZ/3hxfWQcaqchmWti/9nEhtgzBpvM/oKl8Cr/KThhCOSNw/KYovdkm2ktoaQPoAXwi7pX0IGrgZEKDHIpyJnskmh79eu4mWNoCktNPU0nH83QGyhnUXLAuLi7OsnbtWrSmcLiYmBhbYmKi18qgcHSp0PUizxxuPW4ntlrphBubzjgcfRmcbjM4XRT8pqAhgoKDnFGUBiJ6pV1R+oAxlfoIdYYt85iMYlRfQ7pemUzjwd0mR72Tu8Yx6W2KQ5mPY313FzIVB5c8C4KbGTKUXruVN9CyZUvcf6J2Q0sqopxy+IWi3GQQ/zmEuY7DuLhspaIoWzZt2qTbULZq1aoBbhmDxQ1ft+J1MKT+eOPGjSeMZ3+/VavYLvjWeWt/eEXRxqE8XaGUFbZVHdwX0wGq2Oq4tKgEyo2EH4r2YfeDLuN3Hm07jmv6ZiP/Yf+8HG7dunl9VZX7IVgNU1hl+LhWSb+igu9v2e5yeaZt2bIl2/oa+WKRLxzlnkM/diPPDR3w0AJ4CINbs3x57hZGRkGxsbF3SJJUA88Z69evX2vEN2nSpIjVau2Ard5GiCuG/jnQX3yxTHOi/NPwF61bt2mrAW/4cXFNy7rdltp80ZXFYtmMiZLxc0PXsGHDYIfD0RplS+jvrznhsXnz5tVlWbAxfhW8fztw6QL+8H6lr9etW7fzRpVgXFXF++4B+ErIi/fHTsvAP7w/sRr+ug0bNqTCV/PM4VrG0MlNB+gth43+5cHAAKH9gy9FYEJyl8DxmHSa2ro4vYdCKemhyDh76uVJzhCqqxOailPYHvpYsdCEIu/SKYbJyaW9Rs09bAfpoXZMnXgZukPnS8FA+dXUj8kVMpDezCnv9eKAkPJ4T18C6c0zyd4HjjpK4IEHa2Z92it4oaXxqBMcCKIl8ozwz4dbYVchPUeCQ3m9UNLD/vB4ngN4H8GhPY+jLa9pmlrBC+c18EY/4fR/HNAdx1ks4jgefATXokWLMMRPBYE+grK9gNf+F0ewLtpxj9VqeaVly9gx69dvfOtaMt66Ko1CPgx6QRhswcbk4g/jH2YiQVvXc9zVq1fvh7fIPz2nMMpeijrqoD8HkV7TgLHZrF8g3BHt83OGgTvEGE281LJlizX4CMyjaNfvBpCi2CrhouFl3F8YYvA48+3tGjA5+SC29sjDJ1BwAkZqBxgfHuPimlXweGS2Urqb83rb5G2YN6wCfy3WoA/9MWkcZRh/B2K2BgUFzULO3sZ7vJbufY+ol9uZCOmjAUsfeSY4Lgg3Hb+KG4/X4AMX/1Ad5EgvRudsV2hZi3DayempndrcQ1Lq6y7LpUYZJTBxqbikzpk8xYO7HotNzvlyIM539RWqCtvJ4Th02h9XpOjmXRh3i2CJMg9WJltgpPwk5otRko1Ga9PoHTGAjbvy5iA2lvR43LuAwOi85aD1mNXOXoOVcElRltGBAavybJWbOxOYIMtyFjEPxN8aMBUC4XJ79nhgQZrpWrduXQ71b0Sbyhpx1/FxMYUYA6KrCKJ74hqcwL6n1oGfQcw8CH0mdNdgroVsNhuIzIcDHpzXJTgQMeMaxKa7yZm+7uE9yBiEwBGM9XDBE37JzLXgkEdqhfgmiGsry9JulFPemAzwThIw+HnQVwRMY/h5dFpsJuBVcBkQj9exdODxSDyJBGdGAcdiE8J432okCL8x2sm4aYv6DmCSq4v8v2TCsidAzDuQVpsf0K/V6MY25LnEz6oqIsDFyyC+L1KdhqifL4LjgnCfyE/w+Odzya36PKDZUkdlRCfV1Ky4QFUrlkHO9OmabP+46JzkQz7AgMCF5yCOCnpadcFgWUIiJgV8vWYxiG9i9NvXlChXXsbkBEaN4zqX8Kp8bz6guBwfQWzvIyGA2AQMnNXteMFMTKhZKwKY0mhAFfh7ciyoYCN5oOXkTqENEJXYolREwteJCoNOxyGv0XDxLhNfILGlAXYb8sAXSPMOgmsViMch6q5Zt27jZ5lxC+GPw0/CgGDR7roEh/Rm+OkOAwpEcX0HTtLQgMDk8B8jzD4mn34lSpQ4s3DhQsU/3gijnSMw2MfiuSiIbip8DFjd4b1ri9E/5hiNMJFG5kWsRP/uQpvhtK/1UvAPxFMa0sFmBG34pYJQ+gM3Xxrphg9JBMsPaBJwUSnKSLj77rvLG+I0JrHRBp5RRz8Q46dGPn8fXDQedYH7eF2+Cc7IyH5KhfiSWqk/57uKXWyngXJIjUghZ8ZkVwhNKDV7eW6DipIGUHd04AnNTZ2xPsMpHxQm0RqIk/8uOu6aQobruDyU3lWv0jBLeTxk0MsiHsJpHh1eigUE948A8B0ul+uurVu3XgyI5xeBdgmfGBOYfhufMctLLTGL7/Wvg9daiiKVNOKioqI+ArbuMJ4z/cVut2eg/1oNg/YBDNqvkM7TmO7wPB34+BqDlNdUJzGYEr0DRrQHwKhMsJw8vFgvN8xMrHSjwQ4cdkAeBj8VuNZNSEjApJK7w8Afh8FcD4QFsZz64J0MwmBO5hzow/cYN0xwDrfbzVzuR47PzWEdWRzwdTkdeecYcGgfCNdrYoGvQjVOSNjMYm82BzwtBp7uAexyJBZPTr4yDP5bXkCpK+J5S2vp+vU5ExvDrV27+bgX3vvf90L8I/MS/rNafOmMmuf2OKNd7TRXKJhmyARcn1qx6ILlL+dEbMf6xQVderTqs5ceL7NT84R9A1OwziA41lguw43L/4h8n9oVHX+N2FJepQ5Jz9A2nAoYZikFuBSaHzKEZuSlbX4w4BI4Y+DnMJt9mhOxMQhe7CIgeYsf+H8rmBJIbFxxQsKmjdwmDkO8KoMX/CSHrzntZ7zs7v7ExmkYtF9j1n32Gpwe4kH6oBEHPPycGW7ao0cP2YgP9DFombuVw4+nRRaNMYl5HoF/Hae14EQMRoOjXgc2exKI4z0jFtyygREGLtag1NP8DKLpYcTn5gOG28ljPBWKGkgAuqIpFnhksRVO/Cs3YvOmE2E8/IDweu+z6G3EowzmjhAdc17LX4PLGrppghNlUueSM7i45gpJgTjYqdjST4eVWrgwG1e78PA91S/26jAu3K2c1bSojzR3ifqapwJmnPJf4QRA48ip1CXiI+/d/ZgTRfJL1PPyYNrkukA/QvPZSAIzVp30VvAIfEUnnw5rj3Rk0adaIyteZk8j/BfyLbwAv1578O29bIMcL/uJ3PJgcE7FgD/sn45n5gq6g+Z0bmbQdvbs2Xszw9k8DNqmmZHfwp+XGW6VDTAzAhyBZRGd4FDH2tzgrhcPMZTXaqoXRqnqD4uJIlNE1R7yj88pjP524nj485izcxhrq+Hss8MElMcJXMz25qDq6F9FDmNCg/iuEz7Ezrw7S95Br0EmNX+tvjtDbY/7SzyqXatbbOkkRlAWd+6ffdtbrO4+wu3qw1dfkcDaVGT8Lmwpn2KJMi165smTRoakJ+68Q6MLD16Sk58Wl+hOnpN4mwED6isoUcZGjb120tvIkxd/5cqVqVho80K3jh88cNaSRbdJWKgvxMDUxRW/9L9kEBPFAwFzx6UyZcocZ7E5pwZjgHmQB33XtwsyQbRaBixEve3ATQqesTpmlTZBzMruMFj7eWPFx/AxaDUQudYO6xm7sZ7xzwVN4l2ol6MuYMJL8E/Laxhr1ktoGxMIKzSySCgYEx+hTU8jPgzvMQ4caC3C2Ry2MUpBs3o3J6A9LF7rDuF6yM9uESSDq3roBv/wFd9N2EYxoOoicBQT0UcoeSZ+ZdFWcEDxHNoCJcr1XY4v6/pZMDM4HfUIB1MV2YX+e3wD9mLciLKa1RlHsud5fMKqAblsoC2+WMi5VgvKmBL95dKveUFglH/+kU6trdLlQaonpYeQ8LEANQo7Mlf+0LQri7D1MKnYjFv/6KKqasOhol5h1On1daXCTCB+AtYL30kSzUlI2Lg6K8xf7UkrF9CikLNnz/BElyNnxCAAnjUWqf2cuNPvgd/Dp/hB9BQdWKwMVGRkDloeYLhNLX3jjh070lAuc57i2B5oD38Zp/k7zPy62Ar/PwZX8U/nMMTUShAVWawDp9Qa4D1g24FVZrz3qK0HURxEWF+rgyP5xgviWOxPRBu43xUB+wz8tfhlc+CSXTMJ66hBlJicQrGmL8bASAvF+rAvgpChcnfgqE4M8hg/CExQuqg5C1uTNdDuYXgER9d4AvsRJX+A+v7jB58leFME5xG274JcVkUV6TbhSj/zR9PXloLIIhW32k5i0RYXo2ggSFl2zlMcyqzoJTPX+td6ofsj/ch6tS9p7jhVRfs1BwjTtU3IqbMjrcU+EdN3uP3hbyWMmXwlEPMkEDMjh3IwIMWjQOijgIFKWB2FTdcA4swh1385irlJcvLVwHdlRzPK57MpwcwRmftxPknSFmFAg+Co2JkzZ7rAX8rxhsMeJBROTAd0jImNA8DjHgzW+pjh78JjFoLj/TrAMyHyGusb9gMd8DwRZQxFSb4kPPs50TCTUPQ4lJMl1QsoPkD+SQh3xNrWYWwd+BXCBMX9ghNfeH3sUDmdJaH5DOFn1NkJMLrIaaTn7Ov99yVBKoowHtat2zAcCqot2FMfjRJrIL4j/I4gPP5CEz7LJuaA+E4a8OwHvkT/tFzDpXcMu3Ch6oS7ZEfEPEkJLqU6M7oTbLe4NLDxC5Ka/Klbk2YXW/VeolFIUtzQSMXheoosafgElqeScIWRhqsbNMm9EN+gmxb55c8/GbAF7QMxn2C23gqCGglE6zNwYB2Ib44h+APElFFAUrxfelaMIwHX/KGz/z0H7sJtyNaOm2hBFIjN1/bUVOc6hyPoHMrBIV+tK/wsBAd8dMYb5cE7x6gLBPAp4urjx2uX54x49m02i7EWvJzTLI+BCO7lXd8B/AS69AkG8AFwuyucH2ErfmXQlvuQxhNAjn2GYcJX4FRMcJHYZngA/jz8fA7vkLmfLj6jvZ/7EvwCaEcC6tmEdJ+s6JfsC6I9APESPbdPkuQEXyICrKCC9zXG132YoAahyTzhVEL5o9CGV8FF3wVX/peR56YIjjMX/fXFnxJj4iuUpMi25LZUEm7hlkPUXRGu6D1ix798HIrXe6o9Y4DH4uorFDmIVEwwsnKeJM8U1ZIxv/iChVkW9kbDCtrP1AI+hJcBotNY/Y8B49sU9atOewMwJzFgZmVGZpthYamhz5J+mW5rEETixGB1BVRyBi8XX4jVP2gXkJT9EbMwRA99o9nXH3AtNzjOZxgcEItEb3C/51BXCudGuCgGNVTi7KQlXp83yi3zMwd7OYiGjSFBbDPS4GPAoSRx7WuyRhpE9zcRbpGZ/iYmwdeNtBz8megvc9QcxT208RzS1yI9Du+QxcosBIe4EYhjtwHv/YA3yDoB9Tw4XDqeudzvYAww3ki7VR/1MI6WACe1JInuBxYG4rkEcDESfW+Rnu7syPi+aYLjBsYkxvMgyFEEu1B77H1asPNZN7k7kNsG+kJVknpY2NS308I9X5RbmPUbc1zef8OBkFj+Z0SPx6zUHhx5DMLNstatvY3n2fjx4NS1W1nTSV8HBMTdzkdux1n8SvtVEoy+fOf3fFNBEOznIEYQHNncbjdzla+4IKj+Wdyy47c3c7LiaMJgv4DBvgpBtofsD18nOO+2hWjAMGAK89n3c+BUuujKxLjpBsRGmPCivKj3KyFbULwFmDhEN8N+ZW1soexjEF6Lnj175lEOYyLxbS/wMytJ0PbzCOJT0riUyjsOOKnAHCag/ShsPyasCR6PawL6/RR+bSBJjEb8K1KB1YSCNIqX/qg6/qnzVcYdwR7bYkqxdaA0WJ44g1apqr1H0YSxVYqsenfW/4rYAvuKgfQT9rEgSl6zasmEKQ5iLMphSVIvZsb5PEgYNXwP/7WA8HGZzCojIa48cavVY6Cy2dtxLgeD8Plr5WmsCYQTc72+/38x3fskuvL6ksPYthjgjdN+w0Sw3hv2/m/atGkYQkH8BOnie29s7v/BReXcU70pqIKJ/iw/wTjgMW8sUeZaNBjPf0KUW2TE+/mnM8MtgT9u121xLCmAgzJOjGVVD66owAjuVPV3HzldPeQXt6ROc8tU0cOq4Qx5mnDa2hbb/lrH4hvjv74tPbt+oWhEXpz4LBAKIqc+QGw25w6kBYhzYpAx0ALz4Tkph7hbjsIJhi8DCwGBvI9B0ygwPr/PUJ4YnKCpX95WHA4ODp7qF6cHsaYE0bB5HJVITb2ii4kg2l5eOGlmIDwIyCfGIs0SmH6zz6jz35wXePARHCbDNzgOaRPZD3SAnWPEod+9jfDt8tGObzLLZjG2YDp/uOq7c/ABq76Zo/tPTE+TNGysljoywphNbld/blSuBvmZB0ASNJErsS+0l+V//0zgZDh2okCkykKbGqzALzHcqlU7rkAMYe7S0y9fUWgNoQZuORqEsM9ut1/A+iAMYVZvQ4PnB1lAQWjiDqMdn6O4R/yKDEFd20B0HyJuOdrwG47PnL1y5YpstwsYzlpLg6NUwyBsjbl1MDj6n355fUEYR8/H8ZSxiHCgrO7wPZyIspfxXiaH/R1rLAE3F+mDsZ7tiqMzv3o8rKYnDQT6kT8sh8FpUtB2LgeDTtwDfxTH5+agTVSx1sot2ReP/s4E3GhEROFddAD+N6B8Fmu1jIyMHNdnEGdnARZpWgRE37GwdVweaH7lq6AAAhC7q2FMsNP1Gjfu1Q0qPVh93GZF0vpyadhpnYRDTZXKHxrx77KHX8qV2Fj0vEGxBZWMoS8ex+9F3ovDYh82hC32gwhXYcD8hDDOv/GxE91o2VcnELQ060AT+kzqA/AGauGlLcALP8jlwqgYm6HE1uJYMN8eFxYWzn3Jhlce+PgtQ1t+S0tLPY1jOaexUXsAfYPYpU1Gfx4E4ZXPrVW80Yy0uZyOcthC5VMvrDbF62f/L8vq7EyYpz0ey8ZMiFlZ8ebLh+opUwylhsD7276UHAKZ7fHnijlAEfF2ANo6yZuovY/+r/OGxb9ZQZFjJuhOEH9fZloYjufsyJxkcgHHgc+mTUtgYq7pDwCirYt1a7R/XGAY5d7NuM+M38n+Lc3Fe2LGfiITPrwI1Fg00b3aweGLAyvlZ63HAvnMvhO4Vo/6SZpaC3mKCVW9YrHbfoje/8LAnPIURJyXe3nPceWjvKswJK4cyA3ACIcDeePyUY4PFPmqY5b/xYgAwWOGFS8azxg0F9PSMkpdZ5AYoKxQAOFoaxFxpy8yDwG04d/+6unALBg8lZlgr8WL01gnlbv2nD3EkxdiY4wUGBlUgNLghPEc4Av0GzjwTW6H0O9V4DK7AMec1wKq5AHMBscsJjOnZdFwONqdI7fidCgneDOb8+tLAI6DMXfEjaxI0JbH0JZZDJ/p9qK2zah7P5RIFyEVBKNtZZEGhZrWHv7vWO9XYFjUyfakFxBvQRlroXhKQPQvyJukaXI0+lEvM09Lhvc6UQ34/FUyHvPrb68zrgG2tp/gL3xjY+qx3IjtaNVx/Y/uO34CIudShbTuHiGqegRFIV8FjyqeTmow9bP81p13eKVU3mF1SFidyLUCiY1TIIq8C+T2QTC3AaUXkMO/o4hLzhovivk/Y1AVgQgERN7Y4aWdTE/PYDGF1yjOG+fwQmBNmtuMrwOwyIoAOKLh1GxrNyPF8NEGH6fCYFt5HWLjLDipbcPped9tbNURHoRoiPzaUvzwrXX6BD+WJnRi40ySpJ9852COjpUTeC8G92QO/dWNiI0LgkJjNhRiWE7Q6syC66Ccp0BkH6At8xE/A/4b+N2FdBCWv9VTeknEs2ImBD5O+Iux+C2BEcHPkCrAdPR1ZCaxsZG4qMfExvXk6SUzYKDbEjNuhtBEf6tsX1l/3xBuVBa3u9Lr3UIcRUZoHmczrgS/JBy+WiRrIkGCjZ9kU0soLs+3wSHRJOzuiCJbhlzNUkABPeDAZhXI+q1QXDX86gIZkfDtQCjvaKZjNjqKxfM+zGobgZT1N6qWZzdFcfUGfG2eyfCCgXT8h9kM8oKwBCP2DNJOw/8Fs/P2wDIhamDWJOQVKuBwvYBIRdWsSlcDYa/3jHJKo+1d8KJrA64uZuVQ1M+TaAZadB7+HvxOwoh4O4hhN8LXdVweAO7ldiUlJc0xDk3mlokNroOD7f1Qv4wZfzEG+h+5wfrHg0vH4RkKGjUG7a2IMGslFbwTXl/zBMVtP4vfL1ardTeIyoNwrg4iXzgUM48wAOD5CBK4T95d69axrRVFNAHOqiNXVfjgtvrpCObIvwmh7A6wQJIgPZVAkzHuBfpAuCpDP79oQxiToDiFvu1G3E68/+X+LblpgttQ690dFmFt4HanTW55aCRmKq9bUaR/u7CIEi+FhxTpBLERkapicYs3ba7UsXcej88w4I5WHzdYqMoHweFFcYPE5dCSe4dnW5wbsKZvYqCwYIBZ5c052X4Q4leD1JSUZz913F/MERKaHB1col5YSJGGwfYQbJw6wdW0uVZVer3ar8NOGJXsjxnf2Kao4xRNjbPag0hxu14obRKbgR7TL+QYuGkO92PM++Ujw4J+smpyZcitpOEqLxnHcFyuNOxauX6QbNKohntf3Gzgb1vM2Cb4KOqLgkRP/U4qbJNLJI+udmgY5GTTmRj4e2DgpgnOQM+WJh93gwFpeVJUWXM7z6hpri1Nfxl+jNO3N4wPVtPDB8o4b4ULoppyZd6fuhSr4dF19g3jTWXTmRgwMXArGFgTF29JiJkwcVPM+OTNMeO1LfhtxW97jQnfbYsZ1+JWyr6ZvFikwzYvu4MCJJQv5smecuMYVhh06tQpxP96gg4dGkbcOGdWCLShZG77OWzNwun+OXKDDYTzzxMYBqxPhX4di5nAbOZzAWDgljlcYBuWxYyv6ZD1e0ruYNERZssnoMT7HHcjvd/s2NA8abECy7zZZwysSBiQ4g5IgYs9RSjUwBtx0DQBGiYcpdAaQat3HBq8xNDQ0L1paWmtoCn8getiAoVmCtpNHByRtOo4gjEnM74HLp353eMRobDMiIFOiDWry7lslNcX4ZOAl2C5McdqFY3xbJEk21ZFcb+JbQXdTpEv+HG5lHUpKSlJ0dERA6ANs3LZFou6yN/igdsIhRNU1ZTs8ajLXS7XyeDgoAHQhnqgFUT96g9sB4m2dgBcG/SR944kqN6nwOKiItpTnvvDk0JqaqoEbVky6samvJaCvSK+lw7XwGnoIeE0M+87qRXQz29Rn4Q9qr4ul2dpbne/cHtNd3MYuOl9uJyq+67qe2WsFrEdOtw7LLLlfKjF9kSzxBcqNNv//EgmtoQaE0vxL6e8tyMO1u+VUW4UBttk+OtBIH1BhKHYJoD5lfoHiOATqMs3ZWRcLY903mzVHagMMFKs1apATS3iwFVgksSO920sKUhvAEJdinJn4ncWgxcDmTIQngYtP27xldtAzRyJXx20AYObekHl/oRegiqaAN6DG7geAuGUw37Qe/wDsZ3gdHYgon9gXQw1t/Qx2jgRe2SHYGpWE0RVBETxIQh8F/L28nI7tQ+OdH2BuichaxTU8wPQP4XbymXB8mQsvPc4jPxt0S8ZKvRVmBguo3xMEDacC1NroLwmDAOHaVLEwQwu39zam938fz0MFCjBBYXZpitCODCDft9i99ASDfYMmcWV/1j33UHr6kzYh3NwZ8AhzmyIGf/FAlifXK9hBZEGLoA9EYn3ZDTM9usR3sCzPwbbXt5HAxF0Z7MdXAh6ETBJRp1MEDz7ezmOfkASdNqsAgb6JWyK78WYxMFHcS/nh0jJ+2j7kLcuOMhgpF3CgP8NdVhRxhWkFYP/GPw0nJXCKWOxjgcz4vjKb91yBeJpMMTRcKN+EAD2dehL3oBHxRbUE4YyeV+qOMKDkBcbyAIbt1IcyksA3AHOm5R05U20PRhx57GXdAb1FUc0a6KP8lXhIKQDqHMl72uh/xdQz6XMMF8xfidzXxB7n8w8Pnzg2XQFhIECI7h42EcG2e2dMajpkHR66xMxPaJfjBnw6pd1R++3apYPnTiBi+8OEE4SkCLooVKJp/RZt4D6kWMx4EYY9CrUpoZT75Rl91XM5rjDX90GrsAXyfyBgcsioW+PEBzKjQGt40ZRaCWIpwKOgNzNBJtZUjLSv+f8mfeAhCEem+j6wdTi4JpHUAcusRESCBz7/VIZ0PsXEN86Aa4POMwZ+BaIiXdyeSEh9kYZGY5eHGaHvC7AVuIwiNMOryeIiDfW2fICp6LpHyAcbMrSnwjrcJwWHR1dGYRTFnXBWBtmCUJMAJG9h/58DXtHhMljbCKj/zJg9EkPxMxmTCA6yxaEuY/JaCPXa7oCxkCBEdwb9IaW7M7Y6YK6P5IiRrWSYy52tFR/s7gWGZNGiksR6piMNFuQQmIrEx50ms0LuC/ZioN4hTWWAFNo0Qsz98sYrk7mWhiI5TDAENWyG9I6giiczDUy4XpADMRJXex1wIF4YDEg1cfAvh+c5CeOQ/6SINDOmRyhIqLCQAh7MdDfQbkXsP5qjzi2lnBgsIPgtDII49yW9gmYbdPk5GRwRXUD8jyNNuBOFekhJPvW0yh/KZ4roj0DsLbsD7gSmBSg6FBPsIgJm8UxWJuOB8GvAydzA+41tKU3iAX2niKB62KHtO5o069Ywx3HIyxIFJ/Yij4FI05XnsgyhaO/Tr6klScLxIMr4svrpitwDBQYwWF/TUtKcXZPI/VAuAjHCImGjYuakizcH0lWucJde0a8pjicDXCLSX2203HJ2qgC701AgV77QG0hBnBRDPo9GHxjGAQDczaGIwxndWNZvoTmdwzUr8HJMNNrweAeUCLIXxjFgSDHQeECcdFw0myUeRWDNhoxbHT7BfKzwoFNi97G8yn81lqtniU4OwbOwfeA6Nbth0AsrXAnvR0Kj42YAHh9xcSYCI7Cpl26QzuPyrJ1OIgAx29wHZOifYU4NtH6igFAFCuxHp3PGlYQ4OsgyLPgVuVAlBNBhDoM6oQvYhmejaLR/thLl66u4Wd26NP3mJB+9oYpAWXrbcQzskqQPvS7TjjZdAWIAVGAZfmK+rze+I5WGTKNzbK956YXLnHCkjrj++M29BlcoUTq9M57RgzwZTADJgb+Jhi4LQQXiLsF9ce/bFHp7czKFnXbM4y1eqYzMfC3w8BtJ7j59cb3UhX1M2xIwfSLvuu5a9i9fzssmx02MZCJgdtKcNMaTrPalWRXGD5hhe8UL7x/8+CeJuZNDPydMcB7NLfNRVWMUsVJz7Qoe4jnrIrvm5rOxICJARMDJgZMDPy3MPB/iEqmY8IvemoAAAAASUVORK5CYII=\"></image>\r\n </g>\r\n </g>\r\n</svg>\r\n</ng-template>","// Angular import statements\r\nimport { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup } from \"@angular/forms\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\n\r\n@Component({\r\n selector: \"anna-cognito-lib-login\",\r\n templateUrl: \"./login.component.html\",\r\n styleUrls: [\"./login.component.scss\"],\r\n})\r\nexport class LoginComponent implements OnInit {\r\n loginForm: FormGroup;\r\n constants: typeof LoginConstant;\r\n\r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.onIntialiseForm();\r\n }\r\n\r\n onIntialiseForm() {\r\n this.loginForm = this.fb.group({\r\n username: [null],\r\n password: [null],\r\n });\r\n }\r\n\r\n OnLogin() {\r\n this.authService.consumingProjectAuthService.isLoggingIn = true;\r\n const username = this.loginForm.controls['username'].value;\r\n const password = this.loginForm.controls['password'].value;\r\n this.authService.handleSignIn({ username, password });\r\n }\r\n\r\n signInWithSSO() {\r\n this.authService.signInWithDuo();\r\n }\r\n}\r\n","<div class=\"main\">\r\n <!-- Load login page when all constant variable are intiated otherwise it will show a glitch. that's why ngIf check of constants.forgotPassword -->\r\n <section *ngIf=\"constants.forgotPassword\">\r\n <header>\r\n <img [ngSrc]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" width=\"145\" height=\"50\"\r\n alt=\"Anna Logo\" priority />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"OnLogin()\">\r\n <div id=\"alert-div\" *ngIf=\"authService.loginErrorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.loginErrorMessage }}</p>\r\n </div>\r\n\r\n <input type=\"text\" tabindex=\"1\" formControlName=\"username\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\" [placeholder]=\"constants.enterEmail\"\r\n autocomplete=\"username\" autofocus />\r\n\r\n <input type=\"password\" tabindex=\"2\" formControlName=\"password\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\" [placeholder]=\"constants.password\"\r\n autocomplete=\"current-password\" autofocus />\r\n\r\n <a tabindex=\"4\" [routerLink]=\"constants.forgortPasswordPageUrl\">{{ constants.forgotPassword }}</a>\r\n <button tabindex=\"3\" class=\"login-btn\"\r\n [anna-cognito-lib-SpinnerButton]=\"authService.consumingProjectAuthService.isLoggingIn\"\r\n [spinnerButtonText]=\"constants.login\"></button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>","import { Component, Inject } from '@angular/core';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\nimport { LoginConstant } from '../../constants/loginConstant';\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-sso-login',\r\n templateUrl: './sso-login.component.html',\r\n styleUrls: ['./sso-login.component.scss']\r\n})\r\nexport class SsoLoginComponent {\r\n constants: typeof LoginConstant;\r\n\r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n }\r\n\r\n signInWithSSO() {\r\n this.authService.signInWithDuo();\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section *ngIf=\"constants.forgotPassword\">\r\n <header>\r\n <img [ngSrc]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" width=\"145\" height=\"50\"\r\n alt=\"Anna Logo\" priority />\r\n </header>\r\n <article>\r\n <p class=\"sub-title\">Login</p>\r\n <p>Sign in to your account with SSO</p>\r\n <button class=\"login-btn\" (click)=\"signInWithSSO()\">Login</button>\r\n <div class=\"dashed-line\"></div>\r\n <!-- <a tabindex=\"4\" class=\"login-link\" [routerLink]=\"constants.loginPageUrl\">Sign in with username</a> -->\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>","// Angular import statements\r\nimport { EventEmitter, Inject, Input, Output } from \"@angular/core\";\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { AbstractControl, FormBuilder, FormGroup, ValidationErrors, ValidatorFn, Validators } from \"@angular/forms\";\r\n\r\n// Third party import statements\r\nimport { debounceTime } from \"rxjs/operators\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-password-matching',\r\n templateUrl: './password-matching.component.html',\r\n styleUrls: ['./password-matching.component.scss']\r\n})\r\nexport class PasswordMatchingComponent implements OnInit {\r\n @Output() passwordChange = new EventEmitter();\r\n @Output() confirmPasswordChange = new EventEmitter();\r\n\r\n @Input() passwordNotMatching: boolean;\r\n passwordForm: FormGroup;\r\n constants: typeof LoginConstant;\r\n constructor(@Inject(FormBuilder) private fb: FormBuilder) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.createGroup();\r\n this.formValueChanged();\r\n }\r\n\r\n formValueChanged() {\r\n const password = this.passwordForm.get(\"password\");\r\n const confirmPassword = this.passwordForm.get(\"confirmPassword\");\r\n\r\n password && password.valueChanges.subscribe(() => {\r\n password && password.setValidators([\r\n Validators.required,\r\n this.regexValidator(new RegExp(\".{8,}\"), { minLength: true }),\r\n this.regexValidator(new RegExp(\"[a-z]\"), { lowercase: true }),\r\n this.regexValidator(new RegExp(\"[A-Z]\"), { uppercase: true }),\r\n this.regexValidator(new RegExp(\"[0-9]\"), { number: true }),\r\n this.regexValidator(new RegExp(\"[^a-zA-Z0-9]\"), { specialCharacter: true }),\r\n ]);\r\n password.updateValueAndValidity({ emitEvent: false });\r\n this.onPasswordChange();\r\n });\r\n\r\n if(confirmPassword){\r\n confirmPassword.valueChanges.pipe(debounceTime(300)).subscribe(() => {\r\n confirmPassword.setValidators([Validators.required]);\r\n confirmPassword.updateValueAndValidity({ emitEvent: false });\r\n this.onConfirmPasswordChange();\r\n });\r\n }\r\n \r\n }\r\n\r\n onPasswordChange() {\r\n let result = {\r\n value: this.passwordForm.value.password,\r\n status: this.passwordForm.controls['password'].status,\r\n };\r\n this.passwordChange.emit(result);\r\n }\r\n\r\n onConfirmPasswordChange() {\r\n let result = {\r\n value: this.passwordForm.value.confirmPassword,\r\n status: this.passwordForm.controls['confirmPassword'].status,\r\n };\r\n this.confirmPasswordChange.emit(result);\r\n }\r\n\r\n createGroup() {\r\n this.passwordForm = this.fb.group({\r\n password: [null],\r\n confirmPassword: [null],\r\n });\r\n return this.passwordForm;\r\n }\r\n\r\n // TODO: check the return again\r\n regexValidator(regex: RegExp, error: ValidationErrors): any\r\n {\r\n return (control: AbstractControl): { [key: string]: boolean } => {\r\n const valid = regex.test(control.value);\r\n return (valid ? null : error) as any;\r\n };\r\n }\r\n\r\n}\r\n","<form [formGroup]=\"passwordForm\">\r\n <div id=\"alert-div\" *ngIf=\"passwordNotMatching\">\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p>{{ constants.passwordNotMatching }}</p>\r\n </div>\r\n <div class=\"password-policies\">\r\n <ng-container *ngIf=\"!passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }} </b>\r\n </p>\r\n <p>{{ constants.minimumCharacter }}</p>\r\n <p>{{ constants.oneUppercase }}</p>\r\n <p>{{ constants.oneLowercase }}</p>\r\n <p>{{ constants.oneNumber }}</p>\r\n <p>{{ constants.specialCharacter }}</p>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }}</b>\r\n </p>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('minLength') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('minLength')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('minLength')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.minimumCharacter }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('uppercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('uppercase')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('uppercase')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneUppercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('lowercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('lowercase')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('lowercase')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneLowercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('number') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('number')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('number')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneNumber }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('specialCharacter') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('specialCharacter')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('specialCharacter')\">\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.specialCharacter }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"2\"\r\n formControlName=\"password\"\r\n [placeholder]=\"constants.password\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"3\"\r\n formControlName=\"confirmPassword\"\r\n [placeholder]=\"constants.confirmPassword\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n</form>\r\n","\r\n// Angular import statements\r\nimport { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// User defined import statements\r\nimport { AnnaLibAuthService } from \"../../services/auth.service\";\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\n\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\ntype passwordType = { value: string | null, status: string | null };\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-set-new-password',\r\n templateUrl: './set-new-password.component.html',\r\n styleUrls: ['./set-new-password.component.scss']\r\n})\r\nexport class SetNewPasswordComponent implements OnInit {\r\n passwordNotMatching = false;\r\n\r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n constants: typeof LoginConstant;\r\n\r\n constructor(public authService: AnnaLibAuthService,\r\n private router: Router,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.authService.setNewPasswordButtonMessage = LoginConstant.setNewPasswordButton;\r\n }\r\n\r\n isFormValid() {\r\n return this.password.status === \"VALID\" && this.confirmPassword.status === \"VALID\";\r\n }\r\n onPasswordChange($event: passwordType) {\r\n this.password = $event;\r\n }\r\n\r\n onConfirmPasswordChange($event: passwordType) {\r\n this.confirmPassword = $event;\r\n }\r\n\r\n onSettingNewPassword() {\r\n if (this.password.value != this.confirmPassword.value) {\r\n this.passwordNotMatching = true;\r\n } else {\r\n this.passwordNotMatching = false;\r\n if (this.authService.setNewPasswordButtonMessage === LoginConstant.loginAgain) {\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n } else {\r\n this.authService.changePassword(this.password.value);\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section>\r\n <header>\r\n <img [src]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form>\r\n <div id=\"heading\">\r\n {{ constants.setNewPasswordHeading }}\r\n </div>\r\n\r\n <div id=\"alert-div\" *ngIf=\"authService.setNewPasswordErrorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.setNewPasswordErrorMessage }}</p>\r\n </div>\r\n <anna-cognito-lib-password-matching\r\n (passwordChange)=\"onPasswordChange($event)\"\r\n (confirmPasswordChange)=\"onConfirmPasswordChange($event)\"\r\n [passwordNotMatching]=\"passwordNotMatching\"\r\n >\r\n </anna-cognito-lib-password-matching>\r\n <button tabindex=\"3\" class=\"login-btn\" [disabled]=\"!isFormValid()\" (click)=\"onSettingNewPassword()\">\r\n {{ authService.setNewPasswordButtonMessage }}\r\n </button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>\r\n","export class AuthenticationData {\r\n Username: string;\r\n Password: string;\r\n constructor(Username: string, Password: string) {\r\n this.Username = Username;\r\n this.Password = Password;\r\n }\r\n}\r\n\r\nexport class UserPoolInformation {\r\n UserPoolId: string;\r\n ClientId: string;\r\n constructor(UserPoolId: string, ClientId: string) {\r\n this.UserPoolId = UserPoolId;\r\n this.ClientId = ClientId;\r\n }\r\n}\r\n\r\nexport class UsernameInfo {\r\n isUsernameAvailable: boolean;\r\n constructor(object: { isUsernameAvailable: boolean }) {\r\n this.isUsernameAvailable = object.isUsernameAvailable;\r\n }\r\n} \r\n\r\nexport class UserState {\r\n userStatus: string;\r\n isUserWithTempPassword: boolean;\r\n constructor(userState: string ) {\r\n this.userStatus = userState;\r\n this.isUserWithTempPassword = userState == 'FORCE_CHANGE_PASSWORD';\r\n }\r\n}","// Angular import statements\r\nimport { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\n\r\n// Third party import statements\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { forkJoin, catchError, pipe, map } from \"rxjs\";\r\n\r\n// User defined import statements\r\nimport { UsernameInfo, UserState } from \"../../models/auth.model\";\r\nimport { AnnaLibAuthService } from \"../../services/auth.service\";\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { Router } from '@angular/router';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\n\r\ntype passwordType = {value: string, status: string};\r\n@Component({\r\n selector: 'anna-cognito-lib-forgot-password',\r\n templateUrl: './forgot-password.component.html',\r\n styleUrls: ['./forgot-password.component.scss']\r\n})\r\nexport class ForgotPasswordComponent implements OnInit {\r\n errorMessage: string;\r\n verifyRegisteredEmail: FormGroup;\r\n passwordNotMatching = false;\r\n constants: typeof LoginConstant;\r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n infoMessageToRedirectLogin: string = null;\r\n isLoading: boolean = false;\r\n\r\n constructor(\r\n private authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n private toastr: ToastrService,\r\n private router: Router,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.infoMessageToRedirectLogin = null;\r\n this.constants = LoginConstant;\r\n this.onIntialiseForm();\r\n if (this.authService.userName) {\r\n this.onUpdateForm();\r\n }\r\n }\r\n\r\n onIntialiseForm() {\r\n this.verifyRegisteredEmail = this.fb.group({\r\n email: [null, [Validators.required]],\r\n });\r\n }\r\n\r\n onUpdateForm() {\r\n this.verifyRegisteredEmail.patchValue({\r\n email: this.authService.userName,\r\n });\r\n }\r\n\r\n isFormValid() {\r\n return this.verifyRegisteredEmail.valid;\r\n }\r\n\r\n onLoginOrGetOtpButtonClick(){\r\n if(this.infoMessageToRedirectLogin){\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n }\r\n else {\r\n this.onVerifyRegisteredEmail();\r\n }\r\n }\r\n\r\n onVerifyRegisteredEmail() {\r\n this.isLoading = true;\r\n this.errorMessage = null;\r\n this.infoMessageToRedirectLogin = null;\r\n let username = this.verifyRegisteredEmail.controls['email'].value;\r\n\r\n let isUsernameAvailable = this.authService.consumingProjectAuthService.isUsernameAvailable(username);\r\n let isUsernameTempPasswordSet = this.authService.consumingProjectAuthService.getUserState(username);\r\n\r\n forkJoin([isUsernameAvailable, isUsernameTempPasswordSet]).subscribe(\r\n { next: (result) => {\r\n let isUsernameAvailable = new UsernameInfo(result[0]).isUsernameAvailable;\r\n let isUserWithTempPassword = new UserState(result[1]).isUserWithTempPassword;\r\n this.onGettingUserStatus(isUsernameAvailable,isUserWithTempPassword,username);\r\n this.isLoading = false;\r\n },\r\n error: (error) => {\r\n if(error.status == 400){\r\n this.errorMessage = this.constants.userNotFound;\r\n }\r\n else {\r\n this.toastr.error(LoginConstant.apiFailErrorMessage);\r\n }\r\n this.isLoading = false;\r\n }\r\n });\r\n }\r\n\r\n onGettingUserStatus(isUsernameAvailable: boolean, isUserWithTempPassword: boolean, username: string){\r\n if(!isUsernameAvailable){\r\n if(!isUserWithTempPassword){\r\n this.authService.onForgotPasswordGenerateOTP(username);\r\n }\r\n else {\r\n this.infoMessageToRedirectLogin = this.constants.firstTimeLoginUserTempPasswordMsg;\r\n }\r\n }\r\n else {\r\n this.errorMessage = this.constants.userNotFound;\r\n }\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section>\r\n <header>\r\n <img [src]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"verifyRegisteredEmail\">\r\n <ng-container *ngIf=\"!infoMessageToRedirectLogin\">\r\n <div id=\"heading\">\r\n {{ constants.forgotPasswordHeading }}\r\n </div>\r\n <p>\r\n {{ constants.forgotPasswordMessage }}\r\n </p>\r\n </ng-container>\r\n <div id=\"alert-div\" *ngIf=\"errorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p id=\"alert-msg\">{{ errorMessage }}</p>\r\n </div>\r\n <div id=\"info-div\" *ngIf=\"infoMessageToRedirectLogin\">\r\n <i class=\"mi mdi-info\"></i>\r\n <p>{{ infoMessageToRedirectLogin }}</p>\r\n </div>\r\n\r\n <input *ngIf=\"!infoMessageToRedirectLogin\"\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"email\"\r\n [placeholder]=\"constants.enterEmail\"\r\n [ngClass]=\"{\r\n 'input-invalid': verifyRegisteredEmail.get('email')?.dirty && verifyRegisteredEmail.get('email')?.errors\r\n }\"\r\n />\r\n\r\n <button\r\n tabindex=\"2\"\r\n type=\"submit\"\r\n class=\"login-btn\"\r\n [anna-cognito-lib-SpinnerButton]=\"isLoading\"\r\n (click)=\"onLoginOrGetOtpButtonClick()\"\r\n [spinnerButtonText]=\"infoMessageToRedirectLogin ? constants.login : constants.forgotPasswordButton\"\r\n ></button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>\r\n","// Angular import statements\r\nimport { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\r\nimport { CONFIG_SERVICE_TOKEN, IConfigService } from '../../config/config-service.token';\r\ntype passwordType = { value: string | null, status: string | null };\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-verify-and-set-new-password',\r\n templateUrl: './verify-and-set-new-password.component.html',\r\n styleUrls: ['./verify-and-set-new-password.component.scss']\r\n})\r\nexport class VerifyAndSetNewPasswordComponent implements OnInit {\r\n verifyOtpForm: FormGroup;\r\n passwordNotMatching = false;\r\n constants: typeof LoginConstant;\r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n\r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n private router: Router,\r\n @Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.authService.verifyAndSetNewPasswordButton = LoginConstant.setNewPasswordButton;\r\n this.onIntialiseForm();\r\n }\r\n\r\n onIntialiseForm() {\r\n this.verifyOtpForm = this.fb.group({\r\n otp: [null, [Validators.required]],\r\n });\r\n }\r\n\r\n isFormValid() {\r\n if (\r\n this.password.status === \"VALID\" &&\r\n this.confirmPassword.status === \"VALID\" &&\r\n this.verifyOtpForm.controls['otp'].valid\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n onPasswordChange($event: passwordType) {\r\n this.password = $event;\r\n }\r\n\r\n onConfirmPasswordChange($event: passwordType) {\r\n this.confirmPassword = $event;\r\n }\r\n\r\n onVerifyOtpSettingNewPassword() {\r\n if (this.password.value != this.confirmPassword.value) {\r\n this.passwordNotMatching = true;\r\n } else {\r\n this.passwordNotMatching = false;\r\n this.authService.forgotPasswordAndGlobalSignoutLoader = true;\r\n if (this.authService.verifyAndSetNewPasswordButton === LoginConstant.regenerateOtp) {\r\n this.router.navigate([LoginConstant.forgortPasswordPageUrl]);\r\n } else {\r\n this.password.value && this.authService.verifyCode(this.verifyOtpForm.controls['otp'].value, this.password.value);\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\n","<div class=\"main\" [ngClass]=\"{ 'main-height': authService.verifyAndSetNewPasswordErrorMessage }\">\r\n <section>\r\n <header>\r\n <img [src]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <span class=\"back-btn\" [routerLink]=\"constants.forgortPasswordPageUrl\">\r\n <i class=\"mdi mdi-arrow-left\"></i>\r\n </span>\r\n\r\n <form [formGroup]=\"verifyOtpForm\">\r\n <div class=\"pull-left\" id=\"heading\">\r\n {{ constants.verifyAndSetNewPasswordheading }}\r\n </div>\r\n <p>{{ authService.verifyAndSetNewPasswordMessage }}</p>\r\n\r\n <div id=\"alert-div\" *ngIf=\"authService.verifyAndSetNewPasswordErrorMessage\">\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p id=\"display-block-msg\">{{ authService.verifyAndSetNewPasswordErrorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"otp\"\r\n [placeholder]=\"constants.enterOtp\"\r\n autocomplete=\"new-field-name\"\r\n [ngClass]=\"{ 'input-invalid': authService.verifyAndSetNewPasswordErrorMessage }\"\r\n />\r\n\r\n <anna-cognito-lib-password-matching\r\n (passwordChange)=\"onPasswordChange($event)\"\r\n (confirmPasswordChange)=\"onConfirmPasswordChange($event)\"\r\n [passwordNotMatching]=\"passwordNotMatching\"\r\n >\r\n </anna-cognito-lib-password-matching>\r\n <button\r\n tabindex=\"4\"\r\n class=\"login-btn\"\r\n type=\"submit\"\r\n [disabled]=\"authService.sessionLocked || !isFormValid()\"\r\n (click)=\"onVerifyOtpSettingNewPassword()\"\r\n [anna-cognito-lib-SpinnerButton]=\"authService.forgotPasswordAndGlobalSignoutLoader\"\r\n [spinnerButtonText]=\"authService.verifyAndSetNewPasswordButton\"\r\n ></button>\r\n </form>\r\n </article>\r\n <footer>\r\n <anna-cognito-lib-powered-by-logo-template>\r\n </anna-cognito-lib-powered-by-logo-template>\r\n </footer>\r\n </section>\r\n</div>\r\n\r\n<div class=\"page-footer\">\r\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\r\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { LoginComponent } from './components/login/login.component';\r\nimport { SsoLoginComponent} from './components/sso-login/sso-login.component';\r\nimport { SpinnerButtonDirective } from './directives/spinner-button';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SetNewPasswordComponent } from './components/set-new-password/set-new-password.component';\r\nimport { PasswordMatchingComponent } from './components/password-matching/password-matching.component';\r\nimport { ForgotPasswordComponent } from './components/forgot-password/forgot-password.component';\r\nimport { VerifyAndSetNewPasswordComponent } from './components/verify-and-set-new-password/verify-and-set-new-password.component';\r\nimport { VersionAndTermPolicyComponent } from './components/version-and-term-policy/version-and-term-policy.component';\r\nimport { SurewavesYearLogoComponent } from './components/surewaves-year-logo/surewaves-year-logo.component';\r\nimport { PoweredByLogoTemplateComponent } from './components/powered-by-logo-template/powered-by-logo-template.component';\r\nimport { NgOptimizedImage } from '@angular/common';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n LoginComponent,\r\n SetNewPasswordComponent,\r\n PasswordMatchingComponent,\r\n ForgotPasswordComponent,\r\n VerifyAndSetNewPasswordComponent,\r\n SpinnerButtonDirective,\r\n VersionAndTermPolicyComponent,\r\n SurewavesYearLogoComponent,\r\n PoweredByLogoTemplateComponent,\r\n SsoLoginComponent,\r\n ],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n CommonModule,\r\n NgOptimizedImage\r\n ],\r\n exports: [\r\n LoginComponent,\r\n SsoLoginComponent,\r\n SetNewPasswordComponent,\r\n PasswordMatchingComponent,\r\n ForgotPasswordComponent,\r\n VerifyAndSetNewPasswordComponent,\r\n SpinnerButtonDirective,\r\n VersionAndTermPolicyComponent,\r\n SurewavesYearLogoComponent,\r\n PoweredByLogoTemplateComponent,\r\n NgOptimizedImage\r\n ]\r\n})\r\nexport class AnnaCognitoLibModule {\r\n constructor() {}\r\n}\r\n","import { Inject, Injectable } from \"@angular/core\";\r\nimport { IConfigService, CONFIG_SERVICE_TOKEN } from '../config/config-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaConfigService {\r\n \r\n constructor(@Inject(CONFIG_SERVICE_TOKEN) public consumingProjectConfigService: IConfigService) {}\r\n\r\n\r\n}\r\n","/*\r\n * Public API Surface of anna-cognito-lib\r\n */\r\n\r\nexport * from './lib/anna-cognito-lib.module';\r\n\r\n//COMPONENTS \r\nexport * from './lib/components/login/login.component';\r\nexport * from './lib/components/sso-login/sso-login.component';\r\nexport * from './lib/components/forgot-password/forgot-password.component';\r\nexport * from './lib/components/set-new-password/set-new-password.component';\r\nexport * from './lib/components/password-matching/password-matching.component';\r\nexport * from './lib/components/verify-and-set-new-password/verify-and-set-new-password.component';\r\nexport * from './lib/components/version-and-term-policy/version-and-term-policy.component';\r\nexport * from './lib/components/powered-by-logo-template/powered-by-logo-template.component';\r\nexport * from './lib/components/surewaves-year-logo/surewaves-year-logo.component';\r\n\r\n//SERVICES \r\nexport * from './lib/services/auth.service';\r\nexport * from './lib/services/acl.service';\r\nexport * from './lib/config/auth-service.token';\r\nexport * from './lib/config/acl-service.token';\r\nexport * from './lib/config/config-service.token';\r\nexport * from './lib/services/config.service';\r\n\r\n//DIRECTIVES \r\nexport * from './lib/directives/spinner-button';\r\n\r\n//CONSTANTS \r\nexport * from './lib/constants/loginConstant';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.AnnaLibAclService","i3","i4","i5.SpinnerButtonDirective","i6.VersionAndTermPolicyComponent","i7.SurewavesYearLogoComponent","i8.PoweredByLogoTemplateComponent","i2","i3.VersionAndTermPolicyComponent","i4.SurewavesYearLogoComponent","i5.PoweredByLogoTemplateComponent","i5.PasswordMatchingComponent","i5","i6.SpinnerButtonDirective","i7.VersionAndTermPolicyComponent","i8.SurewavesYearLogoComponent","i9.PoweredByLogoTemplateComponent"],"mappings":"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"}