{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/Model/AzureTokenResponseModel.ts","./src/app/Model/ErrorReasonModel.ts","./src/app/Model/ExternalTokenRespone.ts","./src/app/Model/Google/GoogleAccountDetailsModel.ts","./src/app/Model/MFA/MFATokenRequestModel.ts","./src/app/Model/MFA/MFATrustDeviceModel.ts","./src/app/Model/MFA/QueryStringValuesModel.ts","./src/app/Model/MFA/ResponseMsgToClient.ts","./src/app/Model/MFA/VerifyOTPRequestModel.ts","./src/app/app-config.service.ts","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/common/class/app-error.ts","./src/app/common/translation-loader.service.ts","./src/app/common/user-session.service.ts","./src/app/email-autentication/email-autentication.component.ts","./src/app/email-autentication/email-autentication.component.html","./src/app/errorpage/errorpage.component.ts","./src/app/errorpage/errorpage.component.html","./src/app/failed/failed.component.ts","./src/app/failed/failed.component.html","./src/app/footer/footer.component.ts","./src/app/footer/footer.component.html","./src/app/header/header.component.ts","./src/app/header/header.component.html","./src/app/home/home.component.ts","./src/app/password-expired/password-expired.component.ts","./src/app/password-expired/password-expired.component.html","./src/app/password-reset/password-reset.component.ts","./src/app/password-reset/password-reset.component.html","./src/app/profile/profile.component.ts","./src/app/profile/profile.component.html","./src/app/reset-password-error/reset-password-error.component.ts","./src/app/reset-password-error/reset-password-error.component.html","./src/app/reset-password-reminder/reset-password-reminder.component.ts","./src/app/reset-password-reminder/reset-password-reminder.component.html","./src/app/reset-password-success/reset-password-success.component.ts","./src/app/reset-password-success/reset-password-success.component.html","./src/app/reset-password/reset-password.component.ts","./src/app/reset-password/reset-password.component.html","./src/app/resolver/email-authentication.resolver.ts","./src/app/resolver/rpost-authentication-resolver.resolver.ts","./src/app/rpost-authentication-logout/rpost-authentication-logout.component.ts","./src/app/rpost-authentication-logout/rpost-authentication-logout.component.html","./src/app/rpost-authentication/rpost-authentication.component.ts","./src/app/rpost-authentication/rpost-authentication.component.html","./src/app/service/azure-token-response.service.ts","./src/app/service/common-util.service.ts","./src/app/service/data-sharing.service.ts","./src/app/service/google-authentication.service.ts","./src/app/service/mfaauthentication.service.ts","./src/app/service/resetpassword.service.ts","./src/app/service/rpost-authentication.service.ts","./src/app/translation-loader.service.ts","./src/environments/environment.ts","./src/main.ts"],"sourcesContent":["\r\nexport class AzureTokenResponseModel\r\n{\r\n accesstoken!: string;\r\n username!: string;\r\n useremail!: string;\r\n idtoken!:string;\r\n refreshtoken!:string;\r\n ssotype!:string;\r\n}\r\n\r\n","export enum ErrorReason {\r\n ACQUIRE_TOKEN_FAILURE='ACQUIRE_TOKEN_FAILURE', \r\n AZURE_LOGIN_FAILURE='You have closed login popup, please sign in again', \r\n AZURE_TOKEN_EMPTY_RESPONSE_FIRST_TIME_LOGIN='Error occured, please sign in again',//'AZURE_TOKEN_EMPTY_RESPONSE_FIRST_TIME_LOGIN', \r\n AZURE_TOKEN_EMPTY_RESPONSE_ACQUIRE_TOKEN_POPUP='AZURE_TOKEN_EMPTY_RESPONSE_ACQUIRE_TOKEN_POPUP', \r\n AZURE_TOKEN_EMPTY_RESPONSE_ACQUIRE_TOKEN_SILENT='AZURE_TOKEN_EMPTY_RESPONSE_ACQUIRE_TOKEN_SILENT',\r\n USER_CLOSED_LOGIN_POPUP='USER_CLOSED_LOGIN_POPUP',\r\n ACQUIRE_TOKEN_POPUP_FAILURE='ACQUIRE_TOKEN_POPUP_FAILURE',\r\n LOGIN_POPUP_FAILURE='LOGIN_POPUP_FAILURE' ,\r\n MSAL_GUARD_CONFIG_AUTH_REQUEST_LOGIN_POPUP_FAILURE='AUTH_REQUEST_LOGIN_POPUP_FAILURE',\r\n UNKNOWN_ERROR_OCCURED='UNKNOWN_ERROR_OCCURED',\r\n COULD_NOT_ABLE_TO_SEND_MESSAGE='COULD_NOT_ABLE_TO_SEND_MESSAGE',\r\n AZURE_TOKEN_EMPTY_RESPONSE_BEFORE_SENDING_MESSAGE='AZURE_TOKEN_EMPTY_RESPONSE_BEFORE_SENDING_MESSAGE',\r\n USER_CANCELLED='user_cancelled' ,\r\n CONSENT_REQUIRED='consent_required',\r\n INTERACATION_REQUIRED='interaction_required',\r\n LOGIN_REQUIRED='login_required',\r\n CLIENT_APP_PRIVILEGES_ERROR='USER_DO_NOT_HAVE_PRIVILEGES',\r\n USER_CANCELLED_AT_LOGIN='user_cancelled_from_login',\r\n USER_CANCELLED_FROM_UNAUTHORIZED_AT_LOGIN_POPUP='Error occured at login popup, please sign in again',\r\n USER_CANCELLED_CURRENT_REQUEST='user_cancelled_current_request_from_SSO_system',\r\n INTERACTION_IN_PROGRESS='interaction_in_progress',\r\n GOOGLE_LOGIN_FAILED='Error Occured,Please login using Google SSO login',\r\n MESSAGE_TO_POST_EMPTY_RESPONSE='Response is empty',\r\n MFA_VALIDATE_TOKEN_INVALID_EMAIL='Invalid Email Address',\r\n INVALID_MFA_TOKEN_ERROR_MSG_KEY='RCAP_MFA_Invalid_Token',\r\n INVALID_MFA_TOKEN_ERROR_MSG='Invalid MFA Token',\r\n INVALID_MFA_TOKEN_ERROR_MESG1='MFA session has expired',\r\n MFA_NOT_ENABLED_PWD_CHANGE_NOT_REQUIRED='MFA not enabled and Password change is not required',\r\n ACCESS_TOKEN_IS_EMPTY='Error occured while generating access token',\r\n MESSAGE_TO_POST_IS_EMPTY='Erro occured: Message is empty',\r\n RESET_PWD_SCREEN_RESPONSE_IS_EMPTY='Error occured while getting access token: response is null',\r\n PAGE_REFRESH_IS_NOT_ALLOWED='Due to the page refresh/back button click, you have been redirected to the login page.',\r\n RESET_PWD_INVALID_ATTEMPTS='The password reset attempts are unsuccessful. Please try again.',\r\n RESET_PWD_SESSION_EXPIRED_MSG='Password reset session has expired.'\r\n\r\n }","export class MessageDetailsResponse{\r\n Status!: string;\r\n StatusCode!: number;\r\n StatusText!: string;\r\n \r\n}\r\n\r\nexport class MessageResponse\r\n{\r\n Message!: string;\r\n MessageId!: string;\r\n}\r\nexport class ResultContent\r\n{\r\n refresh_token!: string;\r\n refresh_expires_in!: string;\r\n refresh_expires!: string;\r\n access_token!: string;\r\n token_type!: string;\r\n expires_in!: number;\r\n emailaddress!: string;\r\n issued!: string;\r\n expires!: string;\r\n \r\n}\r\n\r\nexport interface IExternalTokenResponseDetails\r\n{\r\n status:string;\r\n statusCode:number;\r\n statusText:string;\r\n message:IMessageResponse;\r\n resultContent:IResultContent;\r\n}\r\n\r\nexport interface IMessageResponse\r\n{\r\n Message:string;\r\n MessageId:string;\r\n\r\n}\r\n\r\nexport interface IResultContent\r\n{\r\n refresh_token: string;\r\n refresh_expires_in: string;\r\n refresh_expires: string;\r\n access_token: string;\r\n token_type: string;\r\n expires_in: number;\r\n emailaddress: string;\r\n issued: string;\r\n expires: string;\r\n}","import { AzureTokenResponseModel } from \"../AzureTokenResponseModel\";\r\n\r\nexport class GoogleTokenResponseModel extends AzureTokenResponseModel\r\n{\r\n /* accesstoken!: string;\r\n username!: string;\r\n useremail!: string;\r\n idtoken!:string;\r\n refreshtoken!:string; */\r\n\r\n\r\n\r\n}\r\n\r\n","export class MFATokenRequestModel\r\n{\r\n emailAddress!: string;\r\n password!: string;\r\n clientId!: string;\r\n sourceClientId!:string;\r\n mfaToken!:string;\r\n}","export class MFATrustDeviceModel\r\n{\r\n TrustDevice!: Boolean;\r\n Device!: string;\r\n \r\n}","export class QueryStringValuesModel\r\n{\r\n EmailAddress!: string;\r\n Pwd!: string;\r\n ClientId!: string;\r\n SourceClientId!:string;\r\n MFAToken!:string;\r\n CallBackUrl!:string;\r\n LoginUrl!:string;\r\n MFAEEnabled!:boolean;\r\n PasswordChangeType:number | undefined;\r\n Password!: string;\r\n Language!:string;\r\n}","export class ResponseMsgToClient\r\n{\r\n \r\n MFAToken!:string;\r\n TrustDeviceInfo!:string;\r\n JwtToken!: JwtToken;\r\n //AccessToken!:string;\r\n RedirectedFrom!:string;\r\n TrustDeviceExpirationDate!:string;\r\n}\r\n\r\nexport class JwtToken\r\n{\r\n access_token!:string;\r\n token_type!:string;\r\n expires_in!:number;\r\n emailaddress!:string;\r\n issued!:string;\r\n expires!:string;\r\n\r\n\r\n}","\r\nexport class VerifyOTPRequestModel\r\n{\r\n MFA_Token!: string;\r\n AccessCode!: string;\r\n SourceClient_Id!:string;\r\n RedirectURI!:string;\r\n Client_Id!:string;\r\n TrustDevice!: boolean;\r\n Browser_Device!:string;\r\n}","import { Injectable } from '@angular/core';\r\nimport { environment } from '../environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppConfigService {\r\n baseAuthApiUrlCfg = environment.baseAuthAPIUrl;\r\n rcapClientId=environment.rcapClientId;\r\n constructor() { }\r\n \r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { MsalGuard } from '@azure/msal-angular';\r\nimport { BrowserUtils } from '@azure/msal-browser';\r\nimport { ProfileComponent } from './profile/profile.component';\r\nimport { HomeComponent } from './home/home.component';\r\nimport { FailedComponent } from './failed/failed.component';\r\nimport { RPostAuthenticationComponent } from './rpost-authentication/rpost-authentication.component';\r\nimport { RpostAuthenticationLogoutComponent } from './rpost-authentication-logout/rpost-authentication-logout.component';\r\nimport { RpostAuthenticationResolverResolver } from './resolver/rpost-authentication-resolver.resolver';\r\nimport { EmailAutenticationComponent } from './email-autentication/email-autentication.component';\r\nimport { EmailAuthenticationResolver } from './resolver/email-authentication.resolver';\r\nimport { ResetPasswordComponent } from './reset-password/reset-password.component';\r\nimport { ResetPasswordReminderComponent } from './reset-password-reminder/reset-password-reminder.component';\r\nimport { PasswordExpiredComponent } from './password-expired/password-expired.component';\r\nimport { ErrorpageComponent } from './errorpage/errorpage.component';\r\nimport { PasswordResetComponent } from './password-reset/password-reset.component';\r\nimport { ResetPasswordSuccessComponent } from './reset-password-success/reset-password-success.component';\r\nimport { ResetPasswordErrorComponent } from './reset-password-error/reset-password-error.component';\r\nconst routes: Routes = [\r\n {\r\n path: 'profile',\r\n component: ProfileComponent,\r\n canActivate: [MsalGuard]\r\n },\r\n {\r\n path: '',\r\n component: HomeComponent\r\n },\r\n {\r\n path: 'login-failed',\r\n component: FailedComponent\r\n },\r\n {\r\n /* path: 'rpost-authentication/:clientId', */\r\n path: 'rpost-authentication',\r\n component: RPostAuthenticationComponent,\r\n resolve: { authencationResolver: RpostAuthenticationResolverResolver}\r\n }\r\n ,\r\n {\r\n \r\n path: 'rpost-authentication-logout',\r\n component: RpostAuthenticationLogoutComponent\r\n }\r\n ,\r\n {\r\n \r\n path: 'email-authentication',\r\n component: EmailAutenticationComponent,\r\n resolve: {validateTokenDetails: EmailAuthenticationResolver}\r\n }\r\n ,\r\n {\r\n \r\n path: 'multifactor-authentication',\r\n component: EmailAutenticationComponent,\r\n resolve: {validateTokenDetails: EmailAuthenticationResolver}\r\n }\r\n ,\r\n {\r\n \r\n path: 'reset-password',\r\n component: ResetPasswordComponent\r\n }\r\n ,\r\n {\r\n \r\n path: 'reset-password-reminder',\r\n component: ResetPasswordReminderComponent\r\n }\r\n ,\r\n {\r\n \r\n path: 'password-expired',\r\n component: PasswordExpiredComponent\r\n }\r\n ,\r\n {\r\n \r\n path: 'resetpassword',\r\n component: PasswordResetComponent,\r\n resolve: {validateTokenDetails: EmailAuthenticationResolver}\r\n }\r\n ,\r\n {\r\n \r\n path: 'resetpasswordsuccess',\r\n component: ResetPasswordSuccessComponent\r\n }\r\n ,\r\n {\r\n \r\n path: 'resetpassworderror',\r\n component: ResetPasswordErrorComponent\r\n }\r\n ,\r\n { path:'errorpage/:errorDesc', component:ErrorpageComponent}\r\n \r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, {\r\n // Don't perform initial navigation in iframes or popups\r\n initialNavigation: !BrowserUtils.isInIframe() && !BrowserUtils.isInPopup() ? 'enabledNonBlocking' : 'disabled' // Set to enabledBlocking to use Angular Universal\r\n })],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","import { Component, OnInit, Inject, OnDestroy, HostListener } from '@angular/core';\r\nimport { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration } from '@azure/msal-angular';\r\nimport { AuthenticationResult, InteractionStatus, PopupRequest, RedirectRequest, EventMessage, EventType } from '@azure/msal-browser';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ClientAppInputParameters } from './Model/ClientAppInputParametersModel';\r\nimport { environment } from 'src/environments/environment';\r\nimport {TranslateService} from \"@ngx-translate/core\";\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css']\r\n})\r\n\r\nexport class AppComponent implements OnInit, OnDestroy {\r\n title = 'RPostAuthUI';\r\n isIframe = false;\r\n loginDisplay = false;\r\n private readonly _destroying$ = new Subject();\r\n clientId=\"\";\r\n callBackUrlFromQueryString='';\r\n constructor(\r\n @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration,\r\n private authService: MsalService,\r\n private msalBroadcastService: MsalBroadcastService,\r\n private route: ActivatedRoute,\r\n private translate: TranslateService\r\n ) {\r\n\r\n //this.route.params.subscribe( params => this.clientId=params['clientId']);\r\n this.route.queryParams.subscribe(params => {\r\n this.callBackUrlFromQueryString = params['CallBackUrl'];\r\n \r\n });\r\n \r\n translate.setDefaultLang('en-us');\r\n //translate.use('en');\r\n }\r\n\r\n \r\n\r\n \r\n\r\n ngOnInit(): void {\r\n if (window.opener && window.opener !== window) {\r\n //alert('popup');\r\n localStorage.setItem(\"IsPopupClosedFromRCAP\",'Y');\r\n window.close();\r\n //window.location.href='http://localhost:63183/Login/SSOCallBack' //this.callBackUrlFromQueryString;\r\n }\r\n this.isIframe = window !== window.parent && !window.opener; // Remove this line to use Angular Universal\r\n \r\n this.setLoginDisplay();\r\n\r\n /* this.authService.instance.enableAccountStorageEvents(); // Optional - This will enable ACCOUNT_ADDED and ACCOUNT_REMOVED events emitted when a user logs in or out of another tab or window\r\n this.msalBroadcastService.msalSubject$\r\n .pipe(\r\n filter((msg: EventMessage) => msg.eventType === EventType.ACCOUNT_ADDED || msg.eventType === EventType.ACCOUNT_REMOVED),\r\n )\r\n .subscribe((result: EventMessage) => {\r\n if (this.authService.instance.getAllAccounts().length === 0) {\r\n window.location.pathname = \"/\";\r\n } else {\r\n this.setLoginDisplay();\r\n }\r\n });\r\n \r\n this.msalBroadcastService.inProgress$\r\n .pipe(\r\n filter((status: InteractionStatus) => status === InteractionStatus.None),\r\n takeUntil(this._destroying$)\r\n )\r\n .subscribe(() => {\r\n this.setLoginDisplay();\r\n this.checkAndSetActiveAccount();\r\n })\r\n\r\n this.loginPopup(); */\r\n }\r\n\r\n setLoginDisplay() {\r\n \r\n this.loginDisplay = this.authService.instance.getAllAccounts().length > 0;\r\n }\r\n\r\n checkAndSetActiveAccount(){\r\n /**\r\n * If no active account set but there are accounts signed in, sets first account to active account\r\n * To use active account set here, subscribe to inProgress$ first in your component\r\n * Note: Basic usage demonstrated. Your app may require more complicated account selection logic\r\n */\r\n let activeAccount = this.authService.instance.getActiveAccount();\r\n\r\n if (!activeAccount && this.authService.instance.getAllAccounts().length > 0) {\r\n let accounts = this.authService.instance.getAllAccounts();\r\n this.authService.instance.setActiveAccount(accounts[0]);\r\n }\r\n }\r\n\r\n loginRedirect() {\r\n if (this.msalGuardConfig.authRequest){\r\n this.authService.loginRedirect({...this.msalGuardConfig.authRequest} as RedirectRequest);\r\n } else {\r\n this.authService.loginRedirect();\r\n }\r\n }\r\n\r\n loginPopup() {\r\n \r\n if (this.msalGuardConfig.authRequest){\r\n this.authService.loginPopup({...this.msalGuardConfig.authRequest} as PopupRequest)\r\n .subscribe((response: AuthenticationResult) => {\r\n this.authService.instance.setActiveAccount(response.account);\r\n });\r\n } else {\r\n this.authService.loginPopup()\r\n .subscribe((response: AuthenticationResult) => {\r\n this.authService.instance.setActiveAccount(response.account);\r\n });\r\n }\r\n\r\n //alert(this.authService.instance.getTokenCache());\r\n }\r\n\r\n logout(popup?: boolean) {\r\n let returnUrl=window.location.href; //+\"/rpost-authentication/{clienId}/{callbackUrl}\";\r\n let clientId= localStorage.getItem(\"clienIdLS\")!;\r\n let callbackUrl= localStorage.getItem(\"callbackUrl_\"+clientId)!;\r\n //returnUrl=returnUrl.replace(\"{clienId}\",clientId).replace(\"{callbackUrl}\",callbackUrl);\r\n\r\n if (popup) {\r\n this.authService.logoutPopup({\r\n \r\n //mainWindowRedirectUri: \"/\"\r\n /* mainWindowRedirectUri:\"http://localhost:53577/rpost-authentication/89278687-d54e-4321-81af-9e0d5f2f8cda/trackinportalurl\" */\r\n mainWindowRedirectUri:returnUrl //\"http://{returnUrl}/rpost-authentication/{clienId}/{trackinportalurl}\"\r\n \r\n });\r\n } else {\r\n this.authService.logoutRedirect();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._destroying$.next(undefined);\r\n this._destroying$.complete();\r\n }\r\n}\r\n","\r\n\r\n
\r\n \r\n
\r\n \"Processing...\"\r\n
\r\n \r\n \r\n
\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { NgModule } from '@angular/core';\r\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { HomeComponent } from './home/home.component';\r\nimport { ProfileComponent } from './profile/profile.component';\r\n\r\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\r\nimport { IPublicClientApplication, PublicClientApplication, InteractionType, BrowserCacheLocation, LogLevel } from '@azure/msal-browser';\r\nimport { MsalGuard, MsalInterceptor, MsalBroadcastService, MsalInterceptorConfiguration, MsalModule, MsalService, MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalGuardConfiguration, MsalRedirectComponent } from '@azure/msal-angular';\r\nimport { FailedComponent } from './failed/failed.component';\r\nimport { RPostAuthenticationComponent } from './rpost-authentication/rpost-authentication.component';\r\nimport { RpostAuthenticationLogoutComponent } from './rpost-authentication-logout/rpost-authentication-logout.component';\r\nimport { environment } from 'src/environments/environment';\r\nimport { HeaderComponent } from './header/header.component';\r\nimport { FooterComponent } from './footer/footer.component';\r\nimport { SocialLoginModule, SocialAuthServiceConfig, GoogleInitOptions } from '@abacritt/angularx-social-login';\r\nimport {\r\n GoogleLoginProvider,\r\n FacebookLoginProvider\r\n} from '@abacritt/angularx-social-login';\r\nimport { EmailAutenticationComponent } from './email-autentication/email-autentication.component';\r\n// import ngx-translate and the http loader\r\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\r\nimport {TranslateHttpLoader} from '@ngx-translate/http-loader';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport { ResetPasswordReminderComponent } from './reset-password-reminder/reset-password-reminder.component';\r\nimport { ResetPasswordComponent } from './reset-password/reset-password.component';\r\nimport { PasswordExpiredComponent } from './password-expired/password-expired.component';\r\nimport { ErrorpageComponent } from './errorpage/errorpage.component';\r\n//import { ErrorInterceptor } from './_helpers/error.interceptor';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { PasswordResetComponent } from './password-reset/password-reset.component';\r\nimport { ResetPasswordSuccessComponent } from './reset-password-success/reset-password-success.component';\r\nimport { ResetPasswordErrorComponent } from './reset-password-error/reset-password-error.component';\r\n\r\n\r\n\r\nconst isIE = window.navigator.userAgent.indexOf(\"MSIE \") > -1 || window.navigator.userAgent.indexOf(\"Trident/\") > -1; // Remove this line to use Angular Universal\r\nlet clientIdPv='';\r\nlet postLogoutRedirectUri='';\r\nexport function HttpLoaderFactory(http: HttpClient) {\r\n return new TranslateHttpLoader(http, '../../assets/i18n/', '.json');\r\n}\r\nexport function loggerCallback(logLevel: LogLevel, message: string) {\r\n console.log(message);\r\n \r\n \r\n}\r\n\r\nexport function MSALInstanceFactory(): IPublicClientApplication {\r\n //clientIdPv='89278687-d54e-4321-81af-9e0d5f2f8cda';\r\n clientIdPv= localStorage.getItem('clienIdLS')!;\r\n postLogoutRedirectUri = localStorage.getItem(\"postLogoutRedirectUri\")!;\r\n /* alert(clientIdPv);\r\n alert('app.module.ts'); */\r\n return new PublicClientApplication({\r\n \r\n auth: {\r\n // clientId: '6226576d-37e9-49eb-b201-ec1eeb0029b6', // Prod enviroment. Uncomment to use. \r\n clientId: environment.azureSSOClientId, // '89278687-d54e-4321-81af-9e0d5f2f8cda', // PPE testing environment\r\n // authority: 'https://login.microsoftonline.com/common', // Prod environment. Uncomment to use.\r\n authority: 'https://login.microsoftonline.com/common', // PPE testing environment.\r\n redirectUri: '/',\r\n postLogoutRedirectUri: '/'\r\n },\r\n cache: {\r\n cacheLocation: BrowserCacheLocation.LocalStorage,\r\n storeAuthStateInCookie: isIE, // set to true for IE 11. Remove this line to use Angular Universal\r\n },\r\n system: {\r\n loggerOptions: {\r\n loggerCallback,\r\n logLevel: LogLevel.Info,\r\n piiLoggingEnabled: false\r\n }\r\n ,tokenRenewalOffsetSeconds: 300\r\n }\r\n });\r\n}\r\n// required for AOT compilation\r\n// export function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader {\r\n// return new TranslateHttpLoader(http);\r\n// }\r\nexport function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration {\r\n const protectedResourceMap = new Map>();\r\n // protectedResourceMap.set('https://graph.microsoft.com/v1.0/me', ['user.read']); // Prod environment. Uncomment to use.\r\n protectedResourceMap.set('https://graph.microsoft-ppe.com/v1.0/me', ['user.read']);\r\n\r\n return {\r\n interactionType: InteractionType.Popup,\r\n protectedResourceMap\r\n };\r\n}\r\n\r\nexport function MSALGuardConfigFactory(): MsalGuardConfiguration {\r\n return { \r\n interactionType: InteractionType.Popup,\r\n authRequest: {\r\n //scopes: ['user.read'] //microsft graph aPI\r\n //scopes: [\"api://8f491afb-add0-4cd4-82a5-f9e477d6a057/.default\"], // client ID of the API\r\n scopes: [\"api://\"+environment.scopeId+\"/.default\"], // client ID of the API\r\n },\r\n loginFailedRoute: '/login-failed'\r\n };\r\n}\r\nconst googleLoginOptions: GoogleInitOptions = {\r\n oneTapEnabled: false, // default is true\r\n scopes: 'https://www.googleapis.com/auth/calendar.readonly'\r\n}; // https://developers.google.com/identity/oauth2/web/guides/use-token-model#initialize_a_token_client\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n HomeComponent,\r\n ProfileComponent,\r\n FailedComponent,\r\n RPostAuthenticationComponent,\r\n RpostAuthenticationLogoutComponent,\r\n HeaderComponent,\r\n FooterComponent,\r\n EmailAutenticationComponent,\r\n ResetPasswordReminderComponent,\r\n ResetPasswordComponent,\r\n PasswordExpiredComponent,\r\n ErrorpageComponent,\r\n PasswordResetComponent,\r\n ResetPasswordSuccessComponent,\r\n ResetPasswordErrorComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n AppRoutingModule,\r\n MatButtonModule,\r\n MatToolbarModule,\r\n MatListModule,\r\n MatMenuModule,\r\n HttpClientModule,\r\n MsalModule,\r\n SocialLoginModule,\r\n // ngx-translate and the loader module\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: HttpLoaderFactory,\r\n deps: [HttpClient]\r\n }\r\n })\r\n ],\r\n providers: [\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: MsalInterceptor,\r\n multi: true\r\n },\r\n //{ provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },\r\n //{ provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\r\n\r\n {\r\n provide: MSAL_INSTANCE,\r\n useFactory: MSALInstanceFactory\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useFactory: MSALGuardConfigFactory\r\n },\r\n {\r\n provide: MSAL_INTERCEPTOR_CONFIG,\r\n useFactory: MSALInterceptorConfigFactory\r\n },\r\n {\r\n provide: 'SocialAuthServiceConfig',\r\n useValue: {\r\n autoLogin: false,\r\n providers: [\r\n {\r\n id: GoogleLoginProvider.PROVIDER_ID,\r\n provider: new GoogleLoginProvider(\r\n environment.googleSSOClientId,googleLoginOptions\r\n )\r\n }\r\n /* ,\r\n {\r\n id: FacebookLoginProvider.PROVIDER_ID,\r\n provider: new FacebookLoginProvider('clientId')\r\n } */\r\n ],\r\n onError: (err) => {\r\n console.error(err);\r\n }\r\n } as SocialAuthServiceConfig,\r\n },\r\n MsalService,\r\n MsalGuard,\r\n MsalBroadcastService\r\n ],\r\n bootstrap: [AppComponent, MsalRedirectComponent]\r\n})\r\nexport class AppModule { \r\n\r\n constructor(private route: ActivatedRoute) {\r\n //alert(this.route.snapshot.queryParamMap.get('clientId'));\r\n //this.route.params.subscribe( params => clientIdPv =(params['clientId']));\r\n //clientIdPv=localStorage.getItem('clienIdLS')!;\r\n //alert(clientIdPv);\r\n //alert(this.clientId);\r\n //localStorage.setItem(\"clienIdLS\",this.clientId); */\r\n }\r\n\r\n ngOnInit(): void {\r\n /* let clientIdPv=0;\r\n this.route.paramMap.subscribe((params: ParamMap) => {\r\n clientIdPv= +params.get('clientId')!\r\n })\r\n alert(clientIdPv); */\r\n }\r\n}\r\n","export class AppError {\r\n MessageId: string | undefined;\r\n constructor(public originalError?: any) { }\r\n \r\n Message: string | undefined;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {TranslateLoader} from '@ngx-translate/core';\r\nimport {Observable} from 'rxjs';\r\nimport {shareReplay} from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TranslationLoaderService implements TranslateLoader {\r\n cache$: Observable = null!;\r\n cachedLang: string = null!;\r\n prefix = '../../assets/i18n/';\r\n suffix = '.json';\r\n constructor(private http: HttpClient) {}\r\n public getTranslation(lang: string): Observable {\r\n if (!this.cache$ || this.cachedLang !== lang) {\r\n this.cache$ = this.http.get(`${this.prefix}${lang}${this.suffix}`).pipe(shareReplay(1));\r\n this.cachedLang = lang;\r\n }\r\n return this.cache$;\r\n }\r\n public use(lang: string): Observable {\r\n if (!this.cache$ || this.cachedLang !== lang) {\r\n this.cache$ = this.http.get(`${this.prefix}${lang}${this.suffix}`).pipe(shareReplay(1));\r\n this.cachedLang = lang;\r\n }\r\n return this.cache$;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n//import { IAppUser, IBrandHF, IBrandContent } from './../auth/iapp-user';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserSessionService {\r\n\r\n constructor() {}\r\n \r\n setLanguages(list: any) {\r\n const key = 'language';\r\n localStorage.setItem(key, JSON.stringify(list));\r\n }\r\n setAppLanguage(lang: string) {\r\n localStorage.setItem('appLang', lang);\r\n }\r\n \r\n getLanguages() {\r\n const key = 'language';\r\n if (localStorage.getItem(key) !== undefined && localStorage.getItem(key) !== null) {\r\n return JSON.parse(localStorage.getItem(key)!);\r\n } else {\r\n return null;\r\n }\r\n }\r\n getAppLanguage() {\r\n const val = localStorage.getItem('appLang');\r\n if (val !== undefined && val !== null) {\r\n return val;\r\n } else {\r\n return 'en-us';\r\n }\r\n }\r\n \r\n \r\n}\r\n","import { Component } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Observable, catchError, map, of, takeWhile, tap, timer } from 'rxjs';\r\nimport { CommonService } from '../service/common/common.service';\r\nimport { MFAAuthenticationService} from '../service/mfaauthentication.service'\r\nimport { MFATokenRequestModel } from '../Model/MFA/MFATokenRequestModel';\r\nimport { IMFATokenResponseDetails } from '../Model/MFA/MFATokenResponse';\r\nimport { TranslateModule, TranslateLoader, TranslateService} from '@ngx-translate/core';\r\nimport { TranslateHttpLoader} from '@ngx-translate/http-loader';\r\nimport { TranslationLoaderService } from '../common/translation-loader.service';\r\nimport { UserSessionService } from '../common/user-session.service';\r\nimport { CommonUtilService } from '../service/common-util.service';\r\nimport { MFATrustDeviceModel } from '../Model/MFA/MFATrustDeviceModel';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { VerifyOTPRequestModel } from '../Model/MFA/VerifyOTPRequestModel';\r\nimport { IVerifyOTPResponseDetails, JwtToken } from '../Model/MFA/VerifyOTPResponseModel';\r\nimport { QueryStringValuesModel } from '../Model/MFA/QueryStringValuesModel';\r\nimport { callbackify } from 'util';\r\nimport { ResponseMsgToClient } from '../Model/MFA/ResponseMsgToClient';\r\nimport { AppError } from '../common/class/app-error';\r\nimport { IValidateMFATokenResponseDetails } from '../Model/MFA/ValidateMFATokenResponse';\r\nimport { IResendOTPResponseDetails } from '../Model/MFA/ResendOTPResponseModel';\r\nimport { error } from 'console';\r\nimport { ErrorReason } from '../Model/ErrorReasonModel';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { AppConfigService } from '../app-config.service';\r\nimport { LocationStrategy } from '@angular/common';\r\nimport { ParseTreeResult } from '@angular/compiler';\r\n//import * as $ from 'jquery';\r\n@Component({\r\n selector: 'app-email-autentication',\r\n templateUrl: './email-autentication.component.html',\r\n styleUrls: ['./email-autentication.component.css']\r\n})\r\nexport class EmailAutenticationComponent {\r\n qs='';\r\n clientIdQs='';\r\n loginUrlQs='';\r\n counter = 59;\r\n counterToDisplay='';\r\n maskedEmailAddress='';\r\n emailAddress='';\r\n sourceClientId='';\r\n callBackUrl='';\r\n public mfaTokenRequestModelObj=new MFATokenRequestModel();\r\n message: any;\r\n validateTokenSnapShot:IValidateMFATokenResponseDetails | undefined;\r\n errorMessage: any;\r\n appLang: any;\r\n fieldTextType: boolean | undefined;\r\n mfaForm: any;\r\n resendOTPAttemptCounter:number =0;\r\n rcapClientId:string | undefined;\r\n emailAddressFromResp:string | undefined;\r\n stepper: any;\r\n phoneNumber='';\r\n maskedPhoneNumber='';\r\nconstructor(private route: ActivatedRoute, private commonUtilSvc:CommonUtilService\r\n , private mfaSvc:MFAAuthenticationService\r\n ,private translate: TranslateService\r\n ,private deviceService: DeviceDetectorService\r\n ,private langSvc: TranslateService\r\n ,private langLoaderSvc: TranslationLoaderService\r\n ,private user: UserSessionService\r\n ,private router:Router\r\n ,private config: AppConfigService\r\n ,private location: LocationStrategy\r\n ){\r\n this.route.queryParams.subscribe(params => {\r\n this.qs = params['qs'];\r\n \r\n \r\n \r\n });\r\n\r\n\r\n this.rcapClientId=this.config.rcapClientId;\r\n this.disableBrowserBackButtonAngular();\r\n \r\n}\r\ndisableBrowserBackButtonAngular()\r\n{\r\n history.pushState(null, null!, window.location.href);\r\n // check if back or forward button is pressed.\r\n this.location.onPopState(() => {\r\n history.pushState(null, null!, window.location.href);\r\n this.stepper.previous();\r\n });\r\n}\r\nshowProgressBar()\r\n{\r\n $(\"#divProcessing\").show();\r\n}\r\n\r\nhideProgressBar()\r\n{\r\n $(\"#divProcessing\").hide();\r\n}\r\ntoggleFieldTextType() {\r\n this.fieldTextType = !this.fieldTextType;\r\n}\r\nonPaste(event: ClipboardEvent) {\r\n let clipboardData = event.clipboardData! ;\r\n let pastedText = clipboardData.getData('text');\r\n //alert(pastedText);\r\n if(pastedText.length==6)\r\n {\r\n this.enableButton('ancVerifyBtn');\r\n }\r\n else{\r\n this.disableButton('ancVerifyBtn');\r\n }\r\n}\r\n tabOut(event:any)\r\n {\r\n \r\n if(event.target.value.length==6)\r\n {\r\n this.enableButton('ancVerifyBtn');\r\n }\r\n else{\r\n this.disableButton('ancVerifyBtn');\r\n }\r\n \r\n }\r\n displayValidationErroMsg(errorMsgToDisplay:string)\r\n {\r\n \r\n //$('#divErrorMsg').show();\r\n $('#divErrorMsg').css(\"display\",\"flex\");\r\n $('#divErrorMsg').css(\"justify-content\",\"center\");\r\n $('#parErrorMsg').text(errorMsgToDisplay);\r\n }\r\n hideValidationErroMsg()\r\n {\r\n //$('#divErrorMsg').hide();\r\n $('#divErrorMsg').css(\"display\",\"none\");\r\n $('#parErrorMsg').text('');\r\n }\r\n displaySuccessMsg(msg:string)\r\n {\r\n //$('#divSuccessMsg').show();\r\n //$('#divSuccessMsg').css(\"display\",\"block\");\r\n $('#divSuccessMsg').css(\"display\",\"flex\");\r\n $('#divSuccessMsg').css(\"justify-content\",\"center\");\r\n $('#parSuccessMsg').text(msg);\r\n }\r\n hideSuccessMsg()\r\n {\r\n //$('#divSuccessMsg').hide();\r\n $('#divSuccessMsg').css(\"display\",\"none\");\r\n $('#parSuccessMsg').text('');\r\n }\r\n InitLang() {\r\n const lang = this.user.getAppLanguage();\r\n const browserLang = navigator.language.toLowerCase();\r\n if (lang === browserLang) {\r\n this.langLoaderSvc.use(lang);\r\n this.appLang = lang;\r\n } else {\r\n this.langLoaderSvc.use(lang);\r\n this.appLang = browserLang;\r\n }\r\n }\r\n \r\n // onKeyDownEvent(event: any)\r\n // {\r\n // var keyCode = event.keyCode || event.which; \r\n\t// \t\t if (keyCode == 9) { //If it's the tab key\r\n // let val : any =$('#txtOTP').val()!;\r\n // if(val.length==6)\r\n // {\r\n // this.enableButton('ancVerifyBtn');\r\n // }\r\n // }\r\n // }\r\n buildForm()\r\n {\r\n this.mfaForm = new FormGroup({\r\n txtOTP: new FormControl()\r\n });\r\n }\r\n checkIsPageRefreshed()\r\n {\r\n window.addEventListener(\"beforeunload\", function (e) {\r\n var confirmationMessage = \"\\o/\";\r\n console.log(\"cond\");\r\n e.returnValue = confirmationMessage; // Gecko, Trident, Chrome 34+\r\n return confirmationMessage; // Gecko, WebKit, Chrome <34\r\n });\r\n }\r\n disableBack() { window.history.forward(); }\r\n async ngOnInit(): Promise {\r\n //setTimeout( () => {\r\n this.disableBack();\r\n //}, 1000);\r\n \r\n this.commonUtilSvc.hideCommonProgressBar();\r\n this.buildForm();\r\n //$('#ancResend').attr(\"disabled\",\"disabled\");\r\n //this.commonUtilSvc.displaySpinner();\r\n //$(\"#divProcessing\").hide();\r\n this.hideProgressBar();\r\n this.getTimer();\r\n this.disableButton('ancResend');\r\n //this.ValidateMFAToken();\r\n let qsResults= this.GetQueryStringValues().then( qsValues => { \r\n //Begin S1-3356\r\n \r\n if(localStorage.getItem(\"phoneNumber_\"+qsValues.MFAToken)!=null && localStorage.getItem(\"phoneNumber_\"+qsValues.MFAToken)!=undefined)\r\n {\r\n this.phoneNumber= localStorage.getItem(\"phoneNumber_\"+qsValues.MFAToken)!;\r\n this.maskedPhoneNumber= this.commonUtilSvc.getMaskedPhoneNumber(this.phoneNumber);\r\n }\r\n\r\n //End S1-3356\r\n if(localStorage.getItem(qsValues.MFAToken)!=null && localStorage.getItem(qsValues.MFAToken)!=undefined)\r\n {\r\n let errorMsg= ErrorReason.PAGE_REFRESH_IS_NOT_ALLOWED;//'Redirected due to page refresh';\r\n //this.redirectToLoginWithErrorReason(errorMsg,qsValues.LoginUrl);\r\n }\r\n else\r\n {\r\n localStorage.setItem(qsValues.MFAToken,\"1\");\r\n }\r\n if(this.route.snapshot.data['validateTokenDetails']!=undefined)\r\n {\r\n this.validateTokenSnapShot=this.route.snapshot.data['validateTokenDetails'];\r\n if(this.validateTokenSnapShot!=null && this.validateTokenSnapShot?.resultContent!=null \r\n && this.validateTokenSnapShot?.resultContent!=undefined)\r\n {\r\n this.emailAddressFromResp=this.validateTokenSnapShot?.resultContent.emailAddress;\r\n }\r\n \r\n this.appLang=qsValues.Language;\r\n if(this.appLang ==null)\r\n {\r\n this.appLang='en-us';\r\n }\r\n \r\n if(this.validateTokenSnapShot!=null && this.validateTokenSnapShot.Message!=null \r\n && this.validateTokenSnapShot.Message!=undefined )\r\n {\r\n let errorMsgToDisplay=this.validateTokenSnapShot.Message;\r\n //this.displayValidationErroMsg(errorMsgToDisplay);\r\n this.displayErrorMsgAndRedirectToLoginWhenMFATokenInvalid(errorMsgToDisplay,qsValues.LoginUrl);\r\n // setTimeout(function () {\r\n // window.location.href=qsValues.LoginUrl+'?errorReason='+errorMsgToDisplay;\r\n // }, 3000);\r\n \r\n }\r\n }\r\n else\r\n {\r\n this.appLang='en-us';\r\n }\r\n this.langSvc.setDefaultLang(this.appLang);\r\n localStorage.setItem('appLang',this.appLang);\r\n this.InitLang();\r\n \r\n this.maskedEmailAddress= this.getMaskedEmailAddress_V1(this.emailAddressFromResp?.toLowerCase()!);//this.getMaskedEmailAddress(qsValues.EmailAddress);\r\n var mfaToken=qsValues.MFAToken;\r\n if(localStorage.getItem(\"Error_ValidateToken_\"+mfaToken)!=null && localStorage.getItem(\"Error_ValidateToken_\"+mfaToken)!=undefined)\r\n {\r\n \r\n var errorMsgToDisplay=localStorage.getItem(\"Error_ValidateToken_\"+mfaToken)?.toString()!;\r\n this.displayValidationErroMsg(errorMsgToDisplay);\r\n localStorage.removeItem(\"Error_ValidateToken_\"+mfaToken);\r\n }\r\n \r\n });\r\n \r\n \r\n}\r\nresendOTP(event: any)\r\n{\r\n $('#txtOTP').val('');\r\n this.disableButton('ancResend');\r\n this.disableButton('ancVerifyBtn');\r\n this.hideSuccessMsg();\r\n this.hideValidationErroMsg();\r\n let mfaTokenRequestObj= this.GetQueryStringValues().then( result => { \r\n let resendOTPCounter=0;\r\n this.resendOTPAttemptCounter= this.resendOTPAttemptCounter+1;\r\n \r\n this.showProgressBar();\r\n \r\n if(this.resendOTPAttemptCounter>2)\r\n {\r\n this.disableButton('ancResend');\r\n this.hideProgressBar();\r\n \r\n }\r\n else if(this.resendOTPAttemptCounter<=2)\r\n {\r\n resendOTPCounter=resendOTPCounter+1;\r\n localStorage.setItem(\"ResendOTPCounter_\"+result.MFAToken,resendOTPCounter.toString());\r\n this.mfaSvc.ReSendOTP(result.MFAToken,result.SourceClientId, result.ClientId,result.CallBackUrl)\r\n .subscribe({\r\n next: (resp) => {\r\n console.log(resp);\r\n //$(\"#divProcessing\").hide();\r\n this.hideProgressBar();\r\n //this.enableButton('ancResend');\r\n if (!(resp instanceof AppError)) { \r\n //this.getTimer();\r\n const response = resp as unknown as IResendOTPResponseDetails;\r\n const result = response.resultContent;\r\n if(result==null)\r\n {\r\n this.displayValidationErroMsg(\"Error Occured\");\r\n }\r\n else\r\n {\r\n if(result.accessCodeEmailed)\r\n {\r\n if(this.resendOTPAttemptCounter==1)\r\n {\r\n var succMsg=this.translate.instant('EmailAuthentication.ResendOTPSentSuccessMsg');\r\n this.displaySuccessMsg(succMsg);\r\n this.getTimer();\r\n }\r\n else if(this.resendOTPAttemptCounter==2){\r\n \r\n var OTPRequestExceededErrorMsg1=(this.phoneNumber=='')?this.translate.instant('EmailAuthentication.OTPRequestExceededErrorMsg1')\r\n : this.translate.instant('MobileAuthentication.OTPRequestExceededErrorMsg1');\r\n var OTPRequestExceededErrorMsg2=(this.phoneNumber=='')?this.translate.instant('EmailAuthentication.OTPRequestExceededErrorMsg2')\r\n : this.translate.instant('MobileAuthentication.OTPRequestExceededErrorMsg2');\r\n \r\n let successMsg= OTPRequestExceededErrorMsg1 + \" \" + OTPRequestExceededErrorMsg2;\r\n //this.displayValidationErroMsg(errorMsg);\r\n this.displaySuccessMsg(successMsg);\r\n \r\n this.hideProgressBar(); \r\n\r\n }\r\n \r\n //this.enableButton('ancResend');\r\n }\r\n \r\n }\r\n \r\n }\r\n else\r\n {\r\n this.hideProgressBar();\r\n const response = resp as AppError;\r\n let errorMsg=response.Message!;\r\n //this.displayValidationErroMsg(errorMsg);\r\n this.displayErrorMsgAndRedirectToLoginWhenMFATokenInvalid(errorMsg,result.LoginUrl);\r\n \r\n //return true;\r\n //let errorMessage=this.translate.instant('ReceiptAuthentication.GenericErrorMsg');\r\n //this.DisplayErrorMessage(errorMessage);\r\n // this.DisplayErrorMessage(response.Message);\r\n\r\n }\r\n }\r\n ,\r\n error: (e) => console.error(e)\r\n });\r\n }\r\n else{ \r\n var OTPRequestExceededErrorMsg1=this.translate.instant('EmailAuthentication.OTPRequestExceededErrorMsg1');\r\n var OTPRequestExceededErrorMsg2=this.translate.instant('EmailAuthentication.OTPRequestExceededErrorMsg2');\r\n \r\n let successMsg= OTPRequestExceededErrorMsg1 + \" \" + OTPRequestExceededErrorMsg2;\r\n //this.displayValidationErroMsg(errorMsg);\r\n this.displaySuccessMsg(successMsg);\r\n //event.stopPropagation();\r\n this.hideProgressBar();\r\n }\r\n // }\r\n \r\n \r\n });\r\n \r\n \r\n\r\n}\r\n\r\n\r\nasync GetQueryStringValues():Promise\r\n{\r\n let queryStringValuesObj= new QueryStringValuesModel();\r\n let qs=this.commonUtilSvc.ConvertBase64ToString(this.qs);\r\n console.log(qs);\r\n let emailAddress='';//this.commonUtilSvc.GetParameterByName(\"?EmailAddress\",qs)!;\r\n let password=''; //this.commonUtilSvc.GetParameterByName(\"Pwd\",qs)!;\r\n let clientId= this.rcapClientId!; //this.commonUtilSvc.GetParameterByName(\"ClientId\",qs)!;\r\n let sourceClientId= this.commonUtilSvc.GetParameterByName(\"?SourceClientId\",qs)!;\r\n let mfaToken=this.commonUtilSvc.GetParameterByName(\"MFAToken\",qs)!;\r\n let callBackUrl=this.commonUtilSvc.GetParameterByName(\"CallBackUrl\",qs)!;\r\n let mfaEnabled= this.commonUtilSvc.GetParameterByName(\"MFAEEnabled\",qs)!;\r\n let mfaEnabledBoolValue=(mfaEnabled==\"true\");\r\n let passwordChangeType=parseInt(this.commonUtilSvc.GetParameterByName(\"MFAEEnabled\",qs)!);\r\n let loginUrl=this.commonUtilSvc.GetParameterByName(\"LoginUrl\",qs)!;\r\n let lang=this.commonUtilSvc.GetParameterByName(\"Lang\",qs)!;\r\n \r\n queryStringValuesObj.EmailAddress=emailAddress;\r\n queryStringValuesObj.Password=password;\r\n queryStringValuesObj.ClientId=clientId;\r\n queryStringValuesObj.SourceClientId=sourceClientId;\r\n queryStringValuesObj.MFAToken=mfaToken;\r\n queryStringValuesObj.CallBackUrl=callBackUrl;\r\n queryStringValuesObj.MFAEEnabled=mfaEnabledBoolValue;\r\n queryStringValuesObj.PasswordChangeType=passwordChangeType;\r\n queryStringValuesObj.LoginUrl=loginUrl;\r\n queryStringValuesObj.Language=lang;\r\n return queryStringValuesObj;\r\n \r\n \r\n}\r\n\r\n\r\n\r\ngetTimer()\r\n{\r\n this.counter=59;\r\n timer(1000, 1000) //Initial delay 1 seconds and interval countdown also 1 second\r\n .pipe(\r\n takeWhile( () => this.counter > 0 ),\r\n tap(() => this.counter-- )\r\n )\r\n .subscribe( () => {\r\n //add you more code\r\n //alert(this.counter);\r\n if(this.counter==0)\r\n {\r\n this.counter=0;\r\n //this.counterToDisplay=\r\n // $('#ancResend').removeClass('btn-Disabled');\r\n // $('#ancResend').addClass('btn-Enabled');\r\n this.enableButton('ancResend');\r\n }\r\n\r\n } );\r\n \r\n}\r\n\r\ndisableButton(btnId:string)\r\n{\r\n if(btnId=='ancVerifyBtn')\r\n {\r\n \r\n $('#'+btnId+'').removeClass('verify-btn');\r\n $('#'+btnId+'').addClass('verify-btn-disabled');\r\n \r\n }\r\n else\r\n {\r\n $('#'+btnId+'').removeClass('btn-Enabled');\r\n $('#'+btnId+'').addClass('btn-Disabled');\r\n }\r\n \r\n $('#'+btnId+'').prop( \"disabled\", true);\r\n\r\n // $('#'+btnId+'').removeClass('btn-Enabled');\r\n // $('#'+btnId+'').addClass('btn-Disabled');\r\n // $('#'+btnId+'').click(function() { return false; }); \r\n // $('#ancResend').removeClass('btn-Enabled');\r\n // $('#ancResend').addClass('btn-Disabled');\r\n}\r\n\r\nenableButton(btnId:string)\r\n{\r\n if(btnId=='ancVerifyBtn')\r\n {\r\n $('#'+btnId+'').removeClass('verify-btn-disabled');\r\n $('#'+btnId+'').addClass('verify-btn');\r\n \r\n }\r\n else\r\n {\r\n $('#'+btnId+'').removeClass('btn-Disabled');\r\n $('#'+btnId+'').addClass('btn-Enabled');\r\n }\r\n $('#'+btnId+'').prop( \"disabled\", false);\r\n\r\n}\r\n\r\ngetMaskedEmailAddress(emailAddress:string):string\r\n{\r\n var maskedEmailAddress=emailAddress;\r\n var loopCounter=0;\r\n if(emailAddress!=null && emailAddress!='' && emailAddress!=undefined)\r\n {\r\n for(var i=0; i1 && lastPosition!=loopCounter && posValueAfterAtTheRateSymbol!=loopCounter \r\n && posValueAfterAtTheRateSymbol+1 !=loopCounter)\r\n {\r\n maskedEmailAddress=replaceAtPosition(maskedEmailAddress,loopCounter);\r\n }\r\n \r\n }\r\n }\r\n \r\n return maskedEmailAddress;\r\n}\r\n\r\ngetMaskedEmailAddress_V1(emailAddress:string):string\r\n{\r\n var maskedEmailAddress=emailAddress;\r\n if(emailAddress!=null && emailAddress!='' && emailAddress!=undefined)\r\n {\r\n var loopCounter=0;\r\n let lastPosition=emailAddress.indexOf(\"@\");\r\n let posValueAfterAtTheRateSymbol=lastPosition+1;\r\n for(var i=0; ilastPosition)// after @ symbol\r\n {\r\n let difference=Math.abs(loopCounter-lastPosition);\r\n if(difference<=3)\r\n {\r\n maskedEmailAddress=replaceAtPosition(maskedEmailAddress,loopCounter);\r\n \r\n }\r\n }\r\n \r\n }\r\n }\r\n \r\n return maskedEmailAddress;\r\n}\r\nsaveTrustDeviceInformation(values:any):void {\r\n console.log(values.currentTarget.checked);\r\n //store in json format\r\n let browserDeviceInfo= this.deviceService.browser +\"/\"+ this.deviceService.device;\r\n let trustDeviceInfoJson=this.getTrustDeviceDetails_Json(values.currentTarget.checked,browserDeviceInfo)\r\n localStorage.setItem(\"trustDeviceInfo_\"+this.emailAddress,trustDeviceInfoJson);\r\n}\r\n\r\n\r\ngetTrustDeviceDetails_Json(isTrustDeviceCheckboxChecked:boolean,deviceInfo:string)\r\n{\r\n var trustDeviceObj=new MFATrustDeviceModel();\r\n trustDeviceObj.TrustDevice=isTrustDeviceCheckboxChecked;\r\n trustDeviceObj.Device=deviceInfo;\r\n return this.commonUtilSvc.ConvertObjToJsonString(trustDeviceObj);\r\n}\r\n\r\n\r\nverifyOTP()\r\n{\r\n this.hideSuccessMsg();\r\n this.hideValidationErroMsg();\r\n let otpValue=$('#txtOTP').val()?.toString()!;\r\n \r\n if(otpValue=='')\r\n {\r\n \r\n var OTPRequiredErrorMsg=this.translate.instant('EmailAuthentication.OTPRequiredErrorMsg');\r\n this.displayValidationErroMsg(OTPRequiredErrorMsg);\r\n \r\n }\r\n else{\r\n this.disableButton('ancVerifyBtn');\r\n \r\n this.showProgressBar();\r\n let queryStringValuesObj= new QueryStringValuesModel();\r\n let qs=this.commonUtilSvc.ConvertBase64ToString(this.qs);\r\n console.log(qs);\r\n \r\n let clientId= this.rcapClientId!;\r\n let sourceClientId= this.commonUtilSvc.GetParameterByName(\"?SourceClientId\",qs)!;\r\n let mfaToken=this.commonUtilSvc.GetParameterByName(\"MFAToken\",qs)!;\r\n let callBackUrl=this.commonUtilSvc.GetParameterByName(\"CallBackUrl\",qs)!;\r\n let mfaEnabled= this.commonUtilSvc.GetParameterByName(\"MFAEEnabled\",qs)!;\r\n let mfaEnabledBoolValue=(mfaEnabled==\"true\");\r\n let passwordChangeType=parseInt(this.commonUtilSvc.GetParameterByName(\"MFAEEnabled\",qs)!);\r\n let loginUrl=this.commonUtilSvc.GetParameterByName(\"LoginUrl\",qs)!;\r\n let randomNumber= this.commonUtilSvc.GetRandomNumber()+'_'+mfaToken;\r\n\r\n let browserDeviceInfo= this.commonUtilSvc.getBrowserUserAgent();//this.deviceService.browser +\"-\"+ this.deviceService.device;\r\n \r\n let clientAppLoginUrl=queryStringValuesObj.LoginUrl;\r\n \r\n if(localStorage.getItem(\"mfaToken\")!=null && localStorage.getItem(\"mfaToken\")!=undefined)\r\n {\r\n mfaToken=localStorage.getItem(\"mfaToken\")!;\r\n }\r\n let trustDevice=$(\"#chkTrustDeviceCheckBox\").prop(\"checked\");\r\n localStorage.setItem(\"trustDeviceChecked_\"+mfaToken,trustDevice);\r\n let trustDeviceExpirationDate='';\r\n var verifyOTPRequestModelObj=new VerifyOTPRequestModel();\r\n verifyOTPRequestModelObj.AccessCode=otpValue;\r\n verifyOTPRequestModelObj.Browser_Device=browserDeviceInfo;\r\n verifyOTPRequestModelObj.MFA_Token=mfaToken;\r\n verifyOTPRequestModelObj.SourceClient_Id=sourceClientId;\r\n verifyOTPRequestModelObj.TrustDevice=trustDevice;\r\n verifyOTPRequestModelObj.Client_Id=clientId;\r\n verifyOTPRequestModelObj.RedirectURI=callBackUrl;\r\n this.mfaSvc.VerifyOTP(verifyOTPRequestModelObj)\r\n .subscribe({\r\n next: (resp) => {\r\n console.log(resp);\r\n \r\n this.hideProgressBar();\r\n this.enableButton('ancVerifyBtn');\r\n if (!(resp instanceof AppError)) { \r\n \r\n const response = resp as unknown as IVerifyOTPResponseDetails;\r\n const result = response.resultContent;\r\n \r\n if(result==null)\r\n {\r\n this.displayValidationErroMsg(\"Error Occured\");\r\n }\r\n //if OTP is valid, no pwd change\r\n else if(result.accessCodeValid)\r\n {\r\n localStorage.setItem(\"TrustDeviceExpirationDate_\"+mfaToken,result.trustDeviceExpirationDate);\r\n trustDeviceExpirationDate=result.trustDeviceExpirationDate;\r\n let enforcePasswordPolicy :number =0;\r\n if(localStorage.getItem(\"enforcePasswordPolicy_\"+mfaToken)!=null \r\n && localStorage.getItem(\"enforcePasswordPolicy_\"+mfaToken)!=undefined\r\n // && localStorage.getItem(\"enforcePasswordPolicy_\"+mfaToken)==\"1\"\r\n )\r\n {\r\n enforcePasswordPolicy= parseInt(localStorage.getItem(\"enforcePasswordPolicy_\"+mfaToken)!);\r\n }\r\n if(result.passwordChange==0)\r\n {\r\n if(enforcePasswordPolicy==1) //Rportal setting ->EncforcePasswordPolicyOn is next login(NextLoginAttempt)\r\n {\r\n //Redirect to reset password screen\r\n console.log(\"MFA is enabled, passwordchange is 0 and enforcePasswordPolicy is 1\");\r\n this.router.navigate(['/reset-password']);\r\n }\r\n else{\r\n //Redirect to Client Application and post message\r\n console.log(\"Before iframe creation\");\r\n this.commonUtilSvc.generateDataShareIframeHtmlElement(callBackUrl,clientId);\r\n console.log(\"After iframe creation\");\r\n let mfaToken_After_Verify_OTP=mfaToken;\r\n localStorage.setItem(\"MFAToken\",mfaToken);\r\n localStorage.setItem(\"LoginUrl_\"+mfaToken,loginUrl);\r\n localStorage.setItem(\"RedirectURI_\"+mfaToken,callBackUrl);\r\n localStorage.setItem(\"SourceClientId_\"+ mfaToken,sourceClientId);\r\n localStorage.setItem(\"ClientId_\"+ mfaToken,clientId);\r\n \r\n //let accessToken=(result.jwtToken!=null)?result.jwtToken.access_token:\"\";\r\n let msgToPost_Json='';\r\n if(result.access_Token!=null && result.access_Token!=undefined)\r\n {\r\n msgToPost_Json=this.commonUtilSvc.prepareMsgToPost_Json(mfaToken_After_Verify_OTP,trustDevice\r\n ,result.access_Token,trustDeviceExpirationDate);\r\n if(msgToPost_Json!=null && msgToPost_Json!=undefined && msgToPost_Json!='')\r\n {\r\n localStorage.setItem(\"MsgToPost_\"+mfaToken,msgToPost_Json);\r\n \r\n }\r\n else\r\n {\r\n let errorMsg=ErrorReason.MESSAGE_TO_POST_IS_EMPTY\r\n this.displayValidationErroMsg(errorMsg); \r\n setTimeout(function () {\r\n window.location.href=loginUrl+'?errorReason='+errorMsg;\r\n }, 3000);\r\n\r\n }\r\n \r\n }\r\n else\r\n {\r\n let errorMsg=ErrorReason.ACCESS_TOKEN_IS_EMPTY\r\n this.displayValidationErroMsg(errorMsg); \r\n setTimeout(function () {\r\n window.location.href=loginUrl+'?errorReason='+errorMsg;\r\n }, 3000);\r\n }\r\n \r\n this.commonUtilSvc.postMessageToClient(msgToPost_Json,\"iframe_\"+randomNumber,callBackUrl,clientId,clientAppLoginUrl);\r\n\r\n }\r\n\r\n \r\n }\r\n else if(result.passwordChange==-1 || result.passwordChange==1)\r\n {\r\n var numOfDaysToExpire=result.passwordExpiresInDays; \r\n \r\n //Redirect to Password expired screen\r\n \r\n //store message in local storage to post to client\r\n \r\n if(result.passwordChange == -1 || (result.passwordChange == 1 && numOfDaysToExpire==0))\r\n {\r\n //this.router.navigate(['/password-expired']);\r\n console.log(\"MFA is not enabled and passwordChange is \"+ result.passwordChange);\r\n this.mfaSvc.RedirectToResetPasswordOrResetPwdReminderScreen(numOfDaysToExpire,enforcePasswordPolicy,result.passwordChange);\r\n }\r\n else if(result.passwordChange == 1 && numOfDaysToExpire>0)\r\n {\r\n \r\n localStorage.setItem(\"OTPVerified_\"+mfaToken,'true');\r\n //var numOfDaysToExpireBase64String=this.commonUtilSvc.ConvertStringToBase64(numOfDaysToExpire.toString());\r\n //this.router.navigate(['/reset-password-reminder'],{queryParams: {qs: numOfDaysToExpireBase64String }});\r\n //this.router.navigate(['/reset-password-reminder'],{queryParams: {qs: numOfDaysToExpire}});\r\n\r\n \r\n //Test case: RPortal Login security set to - YES\r\n //Enforce Password Policy on : Next Login attempt\r\n //User status: Password about to expire in few days\r\n //Password not matched: Yes \r\n this.mfaSvc.RedirectToResetPasswordOrResetPwdReminderScreen(numOfDaysToExpire,enforcePasswordPolicy,result.passwordChange);\r\n }\r\n \r\n }\r\n \r\n \r\n }\r\n \r\n \r\n }\r\n else\r\n {\r\n \r\n \r\n const response = resp as AppError;\r\n let errorMsg=response.Message!;\r\n let errorCode='';\r\n if(response.originalError!=null && response.originalError!=undefined \r\n && response.originalError.error!=null && response.originalError.error!=undefined\r\n && response.originalError.error.resultContent!=undefined\r\n && response.originalError.error.resultContent.errors!=null \r\n && response.originalError.error.resultContent.errors!=undefined)\r\n {\r\n errorCode=response.originalError.error.resultContent.errors[0].code;\r\n \r\n }\r\n else if(response.originalError!=null && response.originalError!=undefined \r\n && response.originalError.error!=null && response.originalError.error!=undefined\r\n && response.originalError.error.message !=null && response.originalError.error.message!=undefined\r\n )\r\n {\r\n errorCode=response.originalError.error.message.messageCode;\r\n }\r\n\r\n if(errorCode!=null && errorCode!=undefined)\r\n {\r\n if(errorCode=='RCAP-1040')\r\n {\r\n errorMsg=(this.phoneNumber=='')?this.translate.instant('EmailAuthentication.IncorrectOrExpiredAccessCode')\r\n :this.translate.instant('MobileAuthentication.IncorrectOrExpiredAccessCode');\r\n }\r\n else if(errorCode=='RCAP-1051')\r\n {\r\n let errorMsgPart1= (this.phoneNumber=='')?this.translate.instant('EmailAuthentication.OTPMultipleInvalidAttemptsErroMsg1')\r\n : this.translate.instant('MobileAuthentication.OTPMultipleInvalidAttemptsErroMsg1');\r\n let errorMsgPart2= (this.phoneNumber=='')?this.translate.instant('EmailAuthentication.OTPMultipleInvalidAttemptsErroMsg2')\r\n :this.translate.instant('MobileAuthentication.OTPMultipleInvalidAttemptsErroMsg2');\r\n errorMsg=errorMsgPart1 + ' ' + errorMsgPart2;\r\n //Redirect after few seconds\r\n this.redirectToLoginWithErrorReason(errorMsg,loginUrl);\r\n //this.redirectToLoginWithErrorReason(errorCode,loginUrl);\r\n\r\n }\r\n else if(errorCode == 'RCAP-1025') //MFA token is invalid\r\n {\r\n errorMsg=this.translate.instant('EmailAuthentication.MFATokenInValidMsg');\r\n //Redirect after few seconds\r\n this.redirectToLoginWithErrorReason(errorMsg,loginUrl);\r\n }\r\n }\r\n \r\n //this.displayValidationErroMsg(errorMsg);\r\n this.displayErrorMsgAndRedirectToLoginWhenMFATokenInvalid(errorMsg,loginUrl);\r\n \r\n \r\n\r\n }\r\n }\r\n ,\r\n error: (e) => console.error(e)\r\n });\r\n }\r\n}\r\n\r\n \r\nredirectToLoginWithErrorReason(errorMsg:string,loginUrl:string)\r\n{\r\n //Redirect after few seconds\r\n setTimeout(function () {\r\n window.location.href=loginUrl+'?errorReason='+errorMsg;\r\n }, 3000);\r\n}\r\n\r\ndisplayErrorMsgAndRedirectToLoginWhenMFATokenInvalid(errorMsg:string,loginUrl:string)\r\n{\r\n let invalidMfaTokenErrorKey=ErrorReason.INVALID_MFA_TOKEN_ERROR_MSG_KEY;\r\n let invalidMfaTokenErrorMsg= ErrorReason.INVALID_MFA_TOKEN_ERROR_MSG;\r\n let sessionExpiryMsg=ErrorReason.INVALID_MFA_TOKEN_ERROR_MESG1;\r\n //this.displayValidationErroMsg(sessionExpiryMsg);\r\n if(errorMsg.indexOf(invalidMfaTokenErrorMsg.toLowerCase())!=-1 || errorMsg=='MFA token is invalid')\r\n {\r\n this.displayValidationErroMsg(sessionExpiryMsg);\r\n setTimeout(function () {\r\n window.location.href=loginUrl+'?errorReason='+sessionExpiryMsg;\r\n }, 3000);\r\n }\r\n else{\r\n this.displayValidationErroMsg(errorMsg);\r\n }\r\n}\r\n\r\n\r\n}\r\n\r\nfunction replaceAtPosition(originalString: string,index: any) {\r\n \r\n return setCharAt(originalString,index,'x');\r\n \r\n}\r\n\r\nfunction setCharAt(str: string,index: number,chr: string) {\r\n if(index > str.length-1) return str;\r\n return str.substring(0,index) + chr + str.substring(index+1);\r\n}\r\n\r\n \r\n","\r\n
\r\n
\r\n \"Processing...\"\r\n
\r\n
\r\n
\r\n

{{\"EmailAuthentication.IncorrectOrExpiredAccessCode\" |\r\n translate}}

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

\r\n\r\n
\r\n
\r\n \r\n
\r\n \"RPOST\"\r\n

{{\"EmailAuthentication.HeaderTitle\" |\r\n translate}}

\r\n

{{\"EmailAuthentication.AccessCodeTitle\" | translate}}

\r\n

{{maskedEmailAddress}}.

\r\n

{{\"MobileAuthentication.AccessCodeTitle\" | translate}}

\r\n

{{maskedPhoneNumber}}.

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

00:{{counter==0?'00':counter.toString().length>1?counter:'0'+counter}}

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

{{\"EmailAuthentication.DidNotReceiveCodeMessage\" | translate}}\r\n \r\n

\r\n \r\n
\r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-errorpage',\r\n templateUrl: './errorpage.component.html',\r\n styleUrls: ['./errorpage.component.css']\r\n})\r\nexport class ErrorpageComponent {\r\n\r\n}\r\n","

errorpage works!

\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-orders',\r\n templateUrl: './failed.component.html',\r\n styleUrls: ['./failed.component.css']\r\n})\r\nexport class FailedComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","

\r\n Login failed. Please try again.\r\n

\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.css']\r\n})\r\nexport class FooterComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","

footer works!

\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.css']\r\n})\r\nexport class HeaderComponent implements OnInit {\r\n timeStamp :string=new Date().getTime().toString();\r\n hdrLeftSideLogoImgPath=\"../assets/images/LatestLogo.png?t=\"+this.timeStamp;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n /* let hdrLeftSideLogoImgPath=$(\"#hdrLeftSideLogo\").attr('src')!;\r\n hdrLeftSideLogoImgPath+='?t=' + new Date().getTime();\r\n //alert(hdrLeftSideLogoImgPath);\r\n $(\"#hdrLeftSideLogo\").attr(\"src\",hdrLeftSideLogoImgPath); */\r\n\r\n }\r\n\r\n}\r\n","
\r\n \r\n
\r\n \r\n
\r\n \r\n \"RCAP\"\r\n
\r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { MsalBroadcastService, MsalService } from '@azure/msal-angular';\r\nimport { AuthenticationResult, EventMessage, EventType, InteractionStatus } from '@azure/msal-browser';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-home',\r\n templateUrl: './home.component.html',\r\n styleUrls: ['./home.component.css']\r\n})\r\nexport class HomeComponent implements OnInit {\r\n loginDisplay = false;\r\n\r\n constructor(private authService: MsalService, private msalBroadcastService: MsalBroadcastService) { }\r\n\r\n ngOnInit(): void {\r\n this.msalBroadcastService.msalSubject$\r\n .pipe(\r\n filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS),\r\n )\r\n .subscribe((result: EventMessage) => {\r\n console.log(result);\r\n const payload = result.payload as AuthenticationResult;\r\n \r\n this.authService.instance.setActiveAccount(payload.account);\r\n });\r\n \r\n this.msalBroadcastService.inProgress$\r\n .pipe(\r\n filter((status: InteractionStatus) => status === InteractionStatus.None)\r\n )\r\n .subscribe(() => {\r\n this.setLoginDisplay();\r\n })\r\n \r\n }\r\n \r\n setLoginDisplay() {\r\n this.loginDisplay = this.authService.instance.getAllAccounts().length > 0;\r\n }\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonUtilService } from '../service/common-util.service';\r\n\r\n@Component({\r\n selector: 'app-password-expired',\r\n templateUrl: './password-expired.component.html',\r\n styleUrls: ['./password-expired.component.css']\r\n})\r\nexport class PasswordExpiredComponent {\r\n\r\n constructor(private commonUtilSvc:CommonUtilService\r\n ){\r\n \r\n \r\n }\r\n\r\nasync ngOnInit(): Promise {\r\n this.commonUtilSvc.hideCommonProgressBar();\r\n \r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n \"RPOST\"\r\n

{{\"PasswordExpired.Title\" | translate}}

\r\n

{{\"PasswordExpired.PwdExpiredMsg\" | translate}}

\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
","import { Component } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { QueryStringValuesModel } from '../Model/MFA/QueryStringValuesModel';\r\nimport { CommonUtilService } from '../service/common-util.service';\r\nimport { IValidateMFATokenResponseDetails } from '../Model/MFA/ValidateMFATokenResponse';\r\nimport { ErrorReason } from '../Model/ErrorReasonModel';\r\n\r\n@Component({\r\n selector: 'app-password-reset',\r\n templateUrl: './password-reset.component.html',\r\n styleUrls: ['./password-reset.component.css']\r\n})\r\nexport class PasswordResetComponent {\r\n qs:string | undefined;\r\n validateTokenSnapShot:IValidateMFATokenResponseDetails | undefined;\r\n constructor(private route: ActivatedRoute, private commonUtilSvc:CommonUtilService,private router:Router\r\n ){\r\n this.route.queryParams.subscribe(params => {\r\n \r\n this.qs = params['qs'];\r\n\r\n \r\n });\r\n \r\n //this.rcapClientId=this.config.rcapClientId;\r\n }\r\n async GetQueryStringValues():Promise\r\n{\r\n let queryStringValuesObj= new QueryStringValuesModel();\r\n let qs=this.commonUtilSvc.ConvertBase64ToString(this.qs!);\r\n console.log(qs);\r\n let emailAddress='';//this.commonUtilSvc.GetParameterByName(\"?EmailAddress\",qs)!;\r\n let password=''; //this.commonUtilSvc.GetParameterByName(\"Pwd\",qs)!;\r\n //let clientId= this.rcapClientId!; //this.commonUtilSvc.GetParameterByName(\"ClientId\",qs)!;\r\n let sourceClientId= this.commonUtilSvc.GetParameterByName(\"?SourceClientId\",qs)!;\r\n let mfaToken=this.commonUtilSvc.GetParameterByName(\"MFAToken\",qs)!;\r\n let callBackUrl=this.commonUtilSvc.GetParameterByName(\"CallBackUrl\",qs)!;\r\n let mfaEnabled= this.commonUtilSvc.GetParameterByName(\"MFAEEnabled\",qs)!;\r\n let mfaEnabledBoolValue=(mfaEnabled==\"true\");\r\n let passwordChangeType=parseInt(this.commonUtilSvc.GetParameterByName(\"MFAEEnabled\",qs)!);\r\n let loginUrl=this.commonUtilSvc.GetParameterByName(\"LoginUrl\",qs)!;\r\n let lang=this.commonUtilSvc.GetParameterByName(\"Lang\",qs)!;\r\n \r\n queryStringValuesObj.EmailAddress=emailAddress;\r\n queryStringValuesObj.Password=password;\r\n queryStringValuesObj.ClientId=''; //clientId;\r\n queryStringValuesObj.SourceClientId=sourceClientId;\r\n queryStringValuesObj.MFAToken=mfaToken;\r\n queryStringValuesObj.CallBackUrl=callBackUrl;\r\n queryStringValuesObj.MFAEEnabled=mfaEnabledBoolValue;\r\n queryStringValuesObj.PasswordChangeType=passwordChangeType;\r\n queryStringValuesObj.LoginUrl=loginUrl;\r\n queryStringValuesObj.Language=lang;\r\n return queryStringValuesObj;\r\n \r\n \r\n}\r\n async ngOnInit(): Promise {\r\n \r\n let qsResults= this.GetQueryStringValues().then( qsValues => { \r\n \r\n \r\n if(this.route.snapshot.data['validateTokenDetails']!=undefined)\r\n {\r\n this.validateTokenSnapShot=this.route.snapshot.data['validateTokenDetails'];\r\n if(this.validateTokenSnapShot!=null && this.validateTokenSnapShot?.resultContent!=null \r\n && this.validateTokenSnapShot?.resultContent!=undefined)\r\n {\r\n //this.emailAddressFromResp=this.validateTokenSnapShot?.resultContent.emailAddress;\r\n }\r\n \r\n \r\n \r\n if(this.validateTokenSnapShot!=null && this.validateTokenSnapShot.Message!=null \r\n && this.validateTokenSnapShot.Message!=undefined )\r\n {\r\n let errorResp=this.validateTokenSnapShot.Message;\r\n let redirectUrl='';\r\n if(qsValues.LoginUrl!=null && qsValues.LoginUrl!=undefined && qsValues.LoginUrl!='')\r\n {\r\n redirectUrl=qsValues.LoginUrl;\r\n }\r\n else\r\n {\r\n redirectUrl=qsValues.CallBackUrl;\r\n }\r\n let errorMsgToDisplay='';\r\n if(errorResp=='MFA token is invalid')\r\n {\r\n errorMsgToDisplay= ErrorReason.RESET_PWD_SESSION_EXPIRED_MSG; //'Session is expired'\r\n }\r\n if(redirectUrl.indexOf(\"support.rpost.com\")!=-1)\r\n {\r\n var erroMsgBase64Str=this.commonUtilSvc.ConvertStringToBase64(errorMsgToDisplay.toString());\r\n this.router.navigate(['/resetpassworderror'],{queryParams: {qs: erroMsgBase64Str }});\r\n }\r\n else{\r\n setTimeout(function () {\r\n \r\n window.location.href=redirectUrl+'?errorReason='+errorMsgToDisplay;\r\n }, 3000);\r\n\r\n }\r\n \r\n \r\n }\r\n }\r\n \r\n \r\n var mfaToken=qsValues.MFAToken;\r\n if(localStorage.getItem(\"Error_ValidateToken_\"+mfaToken)!=null && localStorage.getItem(\"Error_ValidateToken_\"+mfaToken)!=undefined)\r\n {\r\n \r\n var errorMsgToDisplay=localStorage.getItem(\"Error_ValidateToken_\"+mfaToken)?.toString()!;\r\n //this.displayValidationErroMsg(errorMsgToDisplay);\r\n localStorage.removeItem(\"Error_ValidateToken_\"+mfaToken);\r\n }\r\n \r\n });\r\n \r\n\r\n }\r\n\r\n}\r\n","

password-reset works!

\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n// const GRAPH_ENDPOINT = 'https://graph.microsoft.com/v1.0/me'; // Prod graph endpoint. Uncomment to use.\r\nconst GRAPH_ENDPOINT = 'https://graph.microsoft-ppe.com/v1.0/me';\r\n\r\ntype ProfileType = {\r\n givenName?: string,\r\n surname?: string,\r\n userPrincipalName?: string,\r\n id?: string\r\n};\r\n\r\n@Component({\r\n selector: 'app-profile',\r\n templateUrl: './profile.component.html',\r\n styleUrls: ['./profile.component.css']\r\n})\r\nexport class ProfileComponent implements OnInit {\r\n profile!: ProfileType;\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.getProfile();\r\n }\r\n\r\n getProfile() {\r\n this.http.get(GRAPH_ENDPOINT)\r\n .subscribe(profile => {\r\n this.profile = profile;\r\n });\r\n }\r\n}\r\n","
\r\n

First Name: {{profile?.givenName}}

\r\n

Last Name: {{profile?.surname}}

\r\n

Email: {{profile?.userPrincipalName}}

\r\n

Id: {{profile?.id}}

\r\n
\r\n","import { Component } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { CommonUtilService } from '../service/common-util.service';\r\n\r\n@Component({\r\n selector: 'app-reset-password-error',\r\n templateUrl: './reset-password-error.component.html',\r\n styleUrls: ['./reset-password-error.component.css']\r\n})\r\nexport class ResetPasswordErrorComponent {\r\n errorMsg:any='';\r\n qs: any;\r\n stepper: any;\r\n\r\n constructor(private route: ActivatedRoute, private commonUtilSvc:CommonUtilService\r\n ){\r\n this.route.queryParams.subscribe(params => {\r\n \r\n this.qs = params['qs'];\r\n //this.numDaysToExpire=this.qs;\r\n this.errorMsg=this.commonUtilSvc.ConvertBase64ToString(this.qs);\r\n });\r\n \r\n //this.disableBrowserBackButtonAngular();\r\n \r\n }\r\n ngOnInit(): void {\r\n \r\n $('#divProcessingCommon').css(\"display\",\"none\");\r\n \r\n \r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n \r\n

{{errorMsg}}

\r\n
\r\n
\r\n
\r\n
\r\n\r\n","import { Component } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { CommonUtilService } from '../service/common-util.service';\r\nimport { ResetpasswordService } from '../service/resetpassword.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { TranslationLoaderService } from '../translation-loader.service';\r\nimport { UserSessionService } from '../common/user-session.service';\r\nimport { FormBuilder } from '@angular/forms';\r\nimport { AppError } from '../common/class/app-error';\r\nimport { IAccessTokenResponseDetails } from '../Model/ResetPassword/AccessTokenResponseDetails';\r\nimport { AccessTokenRequestModel } from '../Model/ResetPassword/AccessTokenRequestModel';\r\nimport { ErrorReason } from '../Model/ErrorReasonModel';\r\nimport { LocationStrategy } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-reset-password-reminder',\r\n templateUrl: './reset-password-reminder.component.html',\r\n styleUrls: ['./reset-password-reminder.component.css']\r\n})\r\nexport class ResetPasswordReminderComponent {\r\n numDaysToExpire:number=0;\r\n qs: any;\r\n stepper: any;\r\n\r\n constructor(private route: ActivatedRoute, private commonUtilSvc:CommonUtilService\r\n , private restPwdSvc:ResetpasswordService\r\n ,private translate: TranslateService\r\n \r\n ,private langSvc: TranslateService\r\n ,private langLoaderSvc: TranslationLoaderService\r\n ,private user: UserSessionService\r\n ,private formBuilder: FormBuilder\r\n ,private location: LocationStrategy){\r\n this.route.queryParams.subscribe(params => {\r\n \r\n this.qs = params['qs'];\r\n //this.numDaysToExpire=this.qs;\r\n this.numDaysToExpire=parseInt(this.commonUtilSvc.ConvertBase64ToString(this.qs));\r\n });\r\n \r\n this.disableBrowserBackButtonAngular();\r\n \r\n }\r\n disableBrowserBackButtonAngular()\r\n{\r\n history.pushState(null, null!, window.location.href);\r\n // check if back or forward button is pressed.\r\n this.location.onPopState(() => {\r\n history.pushState(null, null!, window.location.href);\r\n this.stepper.previous();\r\n });\r\n}\r\n async ngOnInit(): Promise {\r\n //setTimeout(\"disableBack()\", 0);\r\n //setTimeout( () => {\r\n this.disableBack();\r\n //}, 1000);\r\n this.commonUtilSvc.hideCommonProgressBar();\r\n \r\n this.commonUtilSvc.hideProgressBar();\r\n }\r\n continueClickEvent()\r\n {\r\n \r\n let mfaToken='';\r\n if(localStorage.getItem('MFAToken')!=null && localStorage.getItem('MFAToken')!=undefined)\r\n {\r\n mfaToken=localStorage.getItem('MFAToken')!;\r\n }\r\n \r\n let msgToPost_Json='';\r\n if(localStorage.getItem(\"MsgToPost_\"+mfaToken)!=null && localStorage.getItem(\"MsgToPost_\"+mfaToken)!=undefined)\r\n {\r\n msgToPost_Json=localStorage.getItem(\"MsgToPost_\"+mfaToken)!;\r\n }\r\n let randomNumber= this.commonUtilSvc.GetRandomNumber()+'_'+mfaToken;\r\n let callBackUrl='';\r\n if(localStorage.getItem(\"RedirectURI_\"+mfaToken)!=null && localStorage.getItem(\"RedirectURI_\"+mfaToken)!=undefined)\r\n {\r\n callBackUrl=localStorage.getItem(\"RedirectURI_\"+mfaToken)!;\r\n }\r\n let clientId='';\r\n if(localStorage.getItem(\"ClientId_\"+ mfaToken)!=null && localStorage.getItem(\"ClientId_\"+ mfaToken)!=undefined)\r\n {\r\n clientId=localStorage.getItem(\"ClientId_\"+ mfaToken)!;\r\n }\r\n let clientAppLoginUrl='';\r\n if(localStorage.getItem(\"RedirectURI_\"+ mfaToken)!=null && localStorage.getItem(\"RedirectURI_\"+ mfaToken)!=undefined)\r\n {\r\n clientAppLoginUrl=localStorage.getItem(\"RedirectURI_\"+mfaToken)!;\r\n }\r\n let isOTPVerified='false';\r\n if(localStorage.getItem(\"OTPVerified_\"+mfaToken)!=null && localStorage.getItem(\"OTPVerified_\"+mfaToken)!=undefined)\r\n {\r\n isOTPVerified=localStorage.getItem(\"OTPVerified_\"+mfaToken)!;\r\n }\r\n if(isOTPVerified=='true') //Came from MFA->After OTP verification\r\n {\r\n console.log(\"OTP verified\");\r\n \r\n \r\n } \r\n else //MFA not enabled, get accesstoken from API\r\n {\r\n console.log(\"MFA not enabled, PasswordChange is 1(Suggested Password change)\")\r\n\r\n }\r\n let sourceClientId='';\r\n if(localStorage.getItem(\"SourceClientId_\"+ mfaToken)!=null && localStorage.getItem(\"SourceClientId_\"+ mfaToken)!=undefined)\r\n {\r\n sourceClientId=localStorage.getItem(\"SourceClientId_\"+ mfaToken)!\r\n }\r\n let loginUrl=localStorage.getItem(\"LoginUrl_\"+mfaToken);\r\n if(localStorage.getItem(\"LoginUrl_\"+ mfaToken)!=null && localStorage.getItem(\"LoginUrl_\"+ mfaToken)!=undefined)\r\n {\r\n loginUrl=localStorage.getItem(\"LoginUrl_\"+mfaToken)!;\r\n }\r\n this.commonUtilSvc.showProgressBar();\r\n var obj = {\r\n mfA_Token:mfaToken,\r\n client_Id:clientId,\r\n sourceClient_Id:sourceClientId,\r\n redirectURI: clientAppLoginUrl\r\n \r\n }\r\n this.restPwdSvc.GetAccessToken(obj)\r\n .subscribe({\r\n next: (resp: unknown) => {\r\n console.log(resp);\r\n \r\n this.commonUtilSvc.hideProgressBar();\r\n if (!(resp instanceof AppError)) { \r\n \r\n const response = resp as unknown as IAccessTokenResponseDetails;\r\n const result = response.resultContent;\r\n if(response==null)\r\n {\r\n let errorMsg=ErrorReason.RESET_PWD_SCREEN_RESPONSE_IS_EMPTY;\r\n this.commonUtilSvc.displayValidationErroMsg(errorMsg);\r\n \r\n }\r\n else\r\n {\r\n let trustDevice='false';\r\n if(response.status=='Success' && response.statusCode==200 && response.message!=null \r\n && response.message.messageCode=='RCAP-1006')\r\n {\r\n if(localStorage.getItem(\"trustDeviceChecked_\"+mfaToken)!=null \r\n && localStorage.getItem(\"trustDeviceChecked_\"+mfaToken) !=undefined)\r\n {\r\n trustDevice = localStorage.getItem(\"trustDeviceChecked_\"+mfaToken)!;\r\n }\r\n\r\n let trustDeviceExpirationDate='';\r\n if(localStorage.getItem(\"TrustDeviceExpirationDate_\"+mfaToken)!=null \r\n && localStorage.getItem(\"TrustDeviceExpirationDate_\"+mfaToken)!=undefined\r\n && localStorage.getItem(\"TrustDeviceExpirationDate_\"+mfaToken)!=''\r\n )\r\n {\r\n trustDeviceExpirationDate= localStorage.getItem(\"TrustDeviceExpirationDate_\"+mfaToken)!;\r\n\r\n }\r\n \r\n let randomNumber=this.commonUtilSvc.GetRandomNumber()+'_'+obj.mfA_Token;\r\n let callbackUrl=obj.redirectURI;\r\n let clientId=obj.client_Id;\r\n let clientAppLoginUrl=loginUrl!;\r\n \r\n //post message to client\r\n let msgToPost_Json=this.commonUtilSvc.prepareMsgToPost_Json(obj.mfA_Token,trustDevice,result.access_Token,trustDeviceExpirationDate,\"RESET_Password_Reminder\");\r\n \r\n this.commonUtilSvc.postMessageToClient(msgToPost_Json,\"iframe_\"+randomNumber,callbackUrl,clientId,clientAppLoginUrl);\r\n \r\n }\r\n else{\r\n let errorMsg=this.translate.instant('ResetPassword.ResetPasswordErrorValidationMsg');\r\n this.commonUtilSvc.displayValidationErroMsg(errorMsg);\r\n }\r\n \r\n\r\n }\r\n \r\n }\r\n else\r\n {\r\n const response = resp as AppError;\r\n let errorMsg=response.Message!;\r\n let sessionExpiryMsg=ErrorReason.RESET_PWD_SESSION_EXPIRED_MSG;\r\n if(errorMsg == 'MFA token is invalid'|| errorMsg.indexOf('MFA token is invalid')!=-1)\r\n {\r\n errorMsg=sessionExpiryMsg;\r\n }\r\n setTimeout(function () {\r\n window.location.href=loginUrl+'?errorReason='+errorMsg;\r\n }, 3000);\r\n \r\n }\r\n }\r\n ,\r\n error: (e:any) => console.error(e)\r\n });\r\n\r\n \r\n \r\n }\r\n\r\n \r\n\r\nshowProgressBar()\r\n{\r\n $(\"#divProcessing\").show();\r\n}\r\n\r\nhideProgressBar()\r\n{\r\n $(\"#divProcessing\").hide();\r\n}\r\n\r\ndisableBack() { window.history.forward(); }\r\n}\r\n\r\nfunction disableBack() { window.history.forward(); }\r\n \r\n window.onunload = function () { null };\r\n\r\nfunction wait(arg0: number) {\r\n throw new Error('Function not implemented.');\r\n}\r\n\r\n","
\r\n
\r\n \"Processing...\"\r\n
\r\n
\r\n
\r\n
\r\n \"RPOST\"\r\n

{{\"ResetPasswordReminder.Title\" | translate}}

\r\n \r\n

0\" class=\"mb-0 text-center mb-3\" style=\"opacity: .8;\">{{\"ResetPasswordReminder.PwdExpiryMsg1\" | translate}} {{numDaysToExpire}} {{\"ResetPasswordReminder.PwdExpiryMsg2\" | translate}}

\r\n

{{\"ResetPasswordReminder.PwdExpiresTodayMsg\" | translate}}

\r\n \r\n
0\" class=\"d-flex justify-content-end mb-0 custom-skip-btn\">\r\n {{\"ResetPasswordReminder.SkipButtonText\" | translate}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-reset-password-success',\r\n templateUrl: './reset-password-success.component.html',\r\n styleUrls: ['./reset-password-success.component.css']\r\n})\r\nexport class ResetPasswordSuccessComponent {\r\n\r\n ngOnInit(): void {\r\n \r\n $('#divProcessingCommon').css(\"display\",\"none\");\r\n \r\n \r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n","
\r\n
\r\n
\r\n
\r\n \r\n

{{\"ResetPasswordSuccess.PasswordChangeSuccessMsg\" | translate}}

\r\n
\r\n
\r\n
\r\n
\r\n\r\n","import { Component } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { CommonUtilService } from '../service/common-util.service';\r\nimport { ResetpasswordService } from '../service/resetpassword.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { TranslationLoaderService } from '../translation-loader.service';\r\nimport { UserSessionService } from '../common/user-session.service';\r\nimport { QueryStringValuesModel } from '../Model/MFA/QueryStringValuesModel';\r\nimport { ResetPasswordRequestModel } from '../Model/ResetPassword/ResetPasswordRequestModel';\r\nimport { AppError } from '../common/class/app-error';\r\nimport { IResetPasswordResponseDetails } from '../Model/ResetPassword/ResetPasswordResponseModel';\r\nimport { FormBuilder, FormControl, Validators, ReactiveFormsModule, FormGroup } from '@angular/forms';\r\nimport {DomSanitizer} from '@angular/platform-browser';\r\nimport { AppConfigService } from '../app-config.service';\r\nimport { LocationStrategy } from '@angular/common';\r\nimport { ErrorReason } from '../Model/ErrorReasonModel';\r\nimport { ResultContent_PasswordPolicySetting } from '../Model/ResetPassword/PasswordPolicySettingResponse';\r\n@Component({\r\n selector: 'app-reset-password',\r\n templateUrl: './reset-password.component.html',\r\n styleUrls: ['./reset-password.component.css']\r\n})\r\nexport class ResetPasswordComponent {\r\n appLang: any;\r\n qs: any;\r\n fieldTextType: any;\r\n fieldTextType_ConfirmPwd: any;\r\n showPassword: boolean | undefined;\r\n showConfirmPassword: boolean | undefined;\r\n resetForm: any;\r\n hasUppercaseFlag: boolean | undefined;\r\n hasLowercaseFlag: boolean | undefined;\r\n hasNumberFlag: boolean | undefined;\r\n hasSpecialCharFlag: boolean | undefined;\r\n isLengthValidFlag: boolean | undefined;\r\n validPassword: boolean = false;\r\n validPasswordPattern: boolean = false;\r\n validConfirmPassword: boolean = false;\r\n validConfirmPatternPassword: boolean = false;\r\n validMatchPassword: boolean = false;\r\n SignInUrl:any;\r\n failedAttempts:number=0;\r\n rcapClientId:string | undefined;\r\n stepper: any;\r\n atleastText: any;\r\n upperCasePwdRuleText: any;\r\n upperCaseNumberText: any;\r\n lowerCasePwdRuleText: any;\r\n lowerCaseNumberText : any;\r\n numberPwdRuleText: any;\r\n numberText:any;\r\n specialCharPwdRuleText: any;\r\n specialCharNumberText:any;\r\n pwdLengthPwdRuleText: any;\r\n pwdLengthNumberText:any;\r\n fromUrl: any;\r\n constructor(private route: ActivatedRoute, private commonUtilSvc:CommonUtilService\r\n , private restPwdSvc:ResetpasswordService\r\n ,private translate: TranslateService\r\n \r\n ,private langSvc: TranslateService\r\n ,private langLoaderSvc: TranslationLoaderService\r\n ,private user: UserSessionService\r\n ,private formBuilder: FormBuilder\r\n , private sanitizer:DomSanitizer\r\n ,private config: AppConfigService\r\n ,private location: LocationStrategy\r\n ,private router:Router\r\n ){\r\n this.route.queryParams.subscribe(params => {\r\n \r\n this.qs = params['qs'];\r\n \r\n });\r\n this.rcapClientId=this.config.rcapClientId;\r\n this.disableBrowserBackButtonAngular();\r\n \r\n }\r\n \r\n\r\n disableBrowserBackButtonAngular()\r\n{\r\n \r\n history.pushState(null, null!, window.location.href);\r\n // check if back or forward button is pressed.\r\n this.location.onPopState(() => {\r\n history.pushState(null, null!, window.location.href);\r\n this.stepper.previous();\r\n });\r\n}\r\n\r\n toggleFieldTextType() {\r\n this.fieldTextType = !this.fieldTextType;\r\n }\r\n toggleFieldTextType_ConfirmPwd() {\r\n this.fieldTextType_ConfirmPwd = !this.fieldTextType_ConfirmPwd;\r\n }\r\n disableButton(btnId:string)\r\n{\r\n $('#'+btnId+'').removeClass('btn-Enabled');\r\n $('#'+btnId+'').addClass('btn-Disabled');\r\n $('#'+btnId+'').click(function() { return false; }); \r\n // $('#ancResend').removeClass('btn-Enabled');\r\n // $('#ancResend').addClass('btn-Disabled');\r\n}\r\nenableButton(btnId:string)\r\n{\r\n $('#'+btnId+'').removeClass('btn-Disabled');\r\n $('#'+btnId+'').addClass('btn-Enabled');\r\n\r\n}\r\nSubmitPassword()\r\n{\r\n alert('test');\r\n}\r\nbtnClick()\r\n{\r\n alert('button clicked');\r\n\r\n}\r\n /* test(event:any)\r\n {\r\n //alert(event.target.value);\r\n //$(\"#ancSubmit\").removeAttr(\"onclick\");\r\n if(event.target.value.length==6)\r\n {\r\n $(\"#btnSubmit\" ).prop( \"disabled\", false );\r\n //this.enableButton('ancSubmit');\r\n }\r\n \r\n }\r\n\r\n \r\n disableSubmitButton()\r\n {\r\n $('#btnSubmit').removeClass(\"verify-btn\");\r\n $('#btnSubmit').addClass(\"button-disable\");\r\n\r\n }\r\n enableSubmitButton()\r\n {\r\n $('#btnSubmit').removeClass(\"button-disable\");\r\n $('#btnSubmit').addClass(\"verify-btn\");\r\n } */\r\n buildForm() {\r\n\r\n /* this.resetForm = this.formBuilder.group({\r\n txtPassword: new FormControl('', [Validators.required,\r\n Validators.pattern(\"^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*]).{8,25}$\"),\r\n Validators.minLength(this.pwdLengthNumberText)]),\r\n txtConfirmPassword: new FormControl('', [Validators.required,\r\n Validators.pattern(\"^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*]).{8,25}$\"),\r\n Validators.minLength(this.pwdLengthNumberText)])\r\n\r\n }); */\r\n\r\n this.resetForm = this.formBuilder.group({\r\n txtPassword: new FormControl('', [Validators.required,\r\n Validators.minLength(this.pwdLengthNumberText)]),\r\n txtConfirmPassword: new FormControl('', [Validators.required,\r\n Validators.minLength(this.pwdLengthNumberText)])\r\n\r\n });\r\n\r\n}\r\n\r\n InitLang() {\r\n const lang = this.user.getAppLanguage();\r\n const browserLang = navigator.language.toLowerCase();\r\n if (lang === browserLang) {\r\n this.langLoaderSvc.use(lang);\r\n this.appLang = lang;\r\n } else {\r\n this.langLoaderSvc.use(lang);\r\n this.appLang = browserLang;\r\n }\r\n }\r\n disableBack() { window.history.forward(); }\r\n async ngOnInit(): Promise {\r\n this.commonUtilSvc.hideCommonProgressBar();\r\n //this.getMaskedEmailAddress_V1('ramesh.ne@rpostlabs.com');\r\n this.getPasswordRules();\r\n this.buildForm();\r\n this.commonUtilSvc.hideProgressBar();\r\n this.disableBack();\r\n \r\n }\r\n\r\n displayValidationErroMsg(errorMsgToDisplay:string)\r\n {\r\n \r\n \r\n $('#divErrorMsg').css(\"display\",\"flex\");\r\n $('#divErrorMsg').css(\"justify-content\",\"center\");\r\n $('#parErrorMsg').text(errorMsgToDisplay);\r\n }\r\n hideValidationErroMsg()\r\n {\r\n \r\n $('#divErrorMsg').attr(\"style\", \"display:none !important; background-color: #f2dede;\");\r\n $('#parErrorMsg').text('');\r\n }\r\n\r\n displaySuccessMsg(msg:string)\r\n {\r\n\r\n $('#divSuccessMsg').css(\"display\",\"flex\");\r\n $('#divSuccessMsg').css(\"justify-content\",\"center\");\r\n $('#parSuccessMsg').text(msg);\r\n }\r\n hideSuccessMsg()\r\n {\r\n \r\n $('#divSuccessMsg').attr(\"style\", \"display:none !important; background-color: palegreen;\");\r\n $('#parSuccessMsg').text('');\r\n }\r\n\r\n invokeResetPasswordAPI(pwd:string, confirmPwd:string)\r\n {\r\n this.commonUtilSvc.showProgressBar();\r\n this.hideSuccessMsg();\r\n this.hideValidationErroMsg();\r\n\r\n let mfaToken='';\r\n if(localStorage.getItem('MFAToken')!=null && localStorage.getItem('MFAToken')!=undefined)\r\n {\r\n mfaToken=localStorage.getItem('MFAToken')!;\r\n }\r\n \r\n // let msgToPost_Json='';\r\n // if(localStorage.getItem(\"MsgToPost_\"+mfaToken)!=null && localStorage.getItem(\"MsgToPost_\"+mfaToken)!=undefined)\r\n // {\r\n // msgToPost_Json=localStorage.getItem(\"MsgToPost_\"+mfaToken)!;\r\n // }\r\n // let randomNumber= this.commonUtilSvc.GetRandomNumber()+'_'+mfaToken;\r\n let callBackUrl='';\r\n if(localStorage.getItem(\"RedirectURI_\"+mfaToken)!=null && localStorage.getItem(\"RedirectURI_\"+mfaToken)!=undefined)\r\n {\r\n callBackUrl=localStorage.getItem(\"RedirectURI_\"+mfaToken)!;\r\n }\r\n let clientId='';\r\n if(localStorage.getItem(\"ClientId_\"+ mfaToken)!=null && localStorage.getItem(\"ClientId_\"+ mfaToken)!=undefined)\r\n {\r\n clientId=localStorage.getItem(\"ClientId_\"+ mfaToken)!;\r\n }\r\n let clientAppLoginUrl='';\r\n if(localStorage.getItem(\"RedirectURI_\"+ mfaToken)!=null && localStorage.getItem(\"RedirectURI_\"+ mfaToken)!=undefined)\r\n {\r\n clientAppLoginUrl=localStorage.getItem(\"RedirectURI_\"+mfaToken)!;\r\n }\r\n let sourceClientId='';\r\n if(localStorage.getItem(\"SourceClientId_\"+ mfaToken)!=null && localStorage.getItem(\"SourceClientId_\"+ mfaToken)!=undefined)\r\n {\r\n sourceClientId=localStorage.getItem(\"SourceClientId_\"+ mfaToken)!\r\n }\r\n\r\n let loginUrl='';\r\n if(localStorage.getItem(\"LoginUrl_\"+ mfaToken)!=null && localStorage.getItem(\"LoginUrl_\"+ mfaToken)!=undefined)\r\n {\r\n loginUrl=localStorage.getItem(\"LoginUrl_\"+mfaToken)!;\r\n }\r\n\r\n var obj = {\r\n mfA_Token:mfaToken,\r\n password: pwd,\r\n confirmPassword: confirmPwd,\r\n client_Id:clientId,\r\n sourceClient_Id:sourceClientId,\r\n redirectURI: clientAppLoginUrl\r\n \r\n }\r\n\r\n // let reqObj= new ResetPasswordRequestModel();\r\n let mfaTokenRequestObj= this.getQueryStringValues().then( qsValues => { \r\n // var obj = {\r\n // mfA_Token:qsValues.MFAToken,\r\n // password: decodeURIComponent(pwd),\r\n // confirmPassword: decodeURIComponent(confirmPwd),\r\n // client_Id:qsValues.ClientId,\r\n // sourceClient_Id:qsValues.SourceClientId,\r\n // redirectURI: qsValues.CallBackUrl\r\n \r\n // }\r\n this.restPwdSvc.ResetPassword(obj)\r\n .subscribe({\r\n next: (resp: unknown) => {\r\n console.log(resp);\r\n //$(\"#divProcessing\").hide();\r\n this.commonUtilSvc.hideProgressBar();\r\n if (!(resp instanceof AppError)) { \r\n \r\n const response = resp as unknown as IResetPasswordResponseDetails;\r\n const result = response.resultContent;\r\n if(response==null)\r\n {\r\n this.displayValidationErroMsg(\"Error occured\");\r\n \r\n }\r\n else\r\n {\r\n let fromUrl='';\r\n if(localStorage.getItem(\"FromUrl_\"+ mfaToken)!=null && localStorage.getItem(\"FromUrl_\"+ mfaToken)!=undefined)\r\n {\r\n fromUrl=localStorage.getItem(\"FromUrl_\"+mfaToken)!;\r\n }\r\n if(response.status=='Success' && response.statusCode==200 && response.message!=null \r\n && response.message.messageCode=='RCAP-1006')\r\n {\r\n if(fromUrl!=null && fromUrl!=undefined && fromUrl=='RPL'\r\n && callBackUrl!=null && callBackUrl!=undefined && callBackUrl.indexOf(\"support.rpost.com\")!=-1)\r\n //&& (callBackUrl==null || callBackUrl==undefined || callBackUrl=='')) //Request came from WebAPI Email link and if no callback url,navigate to Resetpassword success screen, incase of desktop outlook\r\n {\r\n this.router.navigate(['/resetpasswordsuccess']);\r\n }\r\n else\r\n {\r\n //redirect to login screen\r\n let successMsg=this.translate.instant('ResetPassword.ResetPasswordSuccesMsg');\r\n this.displaySuccessMsg(successMsg);\r\n setTimeout(function () {\r\n window.location.href= loginUrl;\r\n }, 3000);\r\n\r\n }\r\n\r\n }\r\n else{\r\n let errorMsg=this.translate.instant('ResetPassword.ResetPasswordErrorValidationMsg');\r\n this.displayValidationErroMsg(errorMsg);\r\n }\r\n \r\n\r\n }\r\n \r\n }\r\n else\r\n {\r\n \r\n const response = resp as AppError;\r\n let errorMsg=response.Message!;\r\n let errorCode='';\r\n if(response.originalError!=null && response.originalError!=undefined \r\n && response.originalError.error!=null && response.originalError.error!=undefined\r\n && response.originalError.error.resultContent!=undefined\r\n && response.originalError.error.resultContent.errors!=null \r\n && response.originalError.error.resultContent.errors!=undefined)\r\n {\r\n errorCode=response.originalError.error.resultContent.errors[0].code;\r\n \r\n }\r\n else if(response.originalError!=null && response.originalError!=undefined \r\n && response.originalError.error!=null && response.originalError.error!=undefined\r\n && response.originalError.error.message !=null && response.originalError.error.message!=undefined\r\n )\r\n {\r\n errorCode=response.originalError.error.message.messageCode;\r\n }\r\n\r\n if(errorCode!=null && errorCode!=undefined)\r\n {\r\n if(errorCode=='RCAP-1044')\r\n {\r\n \r\n errorMsg=this.translate.instant('ResetPassword.ResetPasswordInValidPwdErrorMsg')\r\n //Redirect after few seconds\r\n //this.redirectToLoginWithErrorReason(errorCode,loginUrl);\r\n\r\n }\r\n else if(errorCode == 'RCAP-1025') //MFA token is invalid\r\n {\r\n errorMsg=this.translate.instant('EmailAuthentication.MFATokenInValidMsg');\r\n //Redirect after few seconds\r\n //this.redirectToLoginWithErrorReason(errorMsg,loginUrl);\r\n }\r\n \r\n }\r\n let sessionExpiryMsg=ErrorReason.RESET_PWD_SESSION_EXPIRED_MSG;\r\n if(errorMsg == 'MFA token is invalid'|| errorMsg.indexOf('MFA token is invalid')!=-1)\r\n {\r\n errorMsg=sessionExpiryMsg;\r\n }\r\n this.displayValidationErroMsg(errorMsg);\r\n\r\n this.failedAttempts=this.failedAttempts+1;\r\n if(this.failedAttempts>3 || errorMsg == sessionExpiryMsg)\r\n {\r\n if(this.failedAttempts>3)\r\n {\r\n errorMsg= ErrorReason.RESET_PWD_INVALID_ATTEMPTS;\r\n }\r\n if(errorMsg == sessionExpiryMsg && (loginUrl=='' || loginUrl == null || loginUrl==undefined))\r\n {\r\n if(callBackUrl!=null && callBackUrl!='' && callBackUrl!=undefined && callBackUrl.indexOf(\"support.rpost.com\")!=-1)\r\n {\r\n var erroMsgBase64Str=this.commonUtilSvc.ConvertStringToBase64(errorMsg.toString());\r\n this.router.navigate(['/resetpassworderror'],{queryParams: {qs: erroMsgBase64Str }});\r\n }\r\n else\r\n {\r\n console.log(\"callbackurl is null/empty\");\r\n }\r\n }\r\n else{\r\n setTimeout(function () {\r\n window.location.href=loginUrl+'?errorReason='+errorMsg;\r\n }, 3000);\r\n\r\n }\r\n \r\n }\r\n \r\n\r\n }\r\n }\r\n ,\r\n error: (e:any) => console.error(e)\r\n });\r\n\r\n });\r\n }\r\n msgToPostToClient(mfaToken:string)\r\n {\r\n let msgToPost='';\r\n if(localStorage.getItem(\"MsgToPost_\"+mfaToken)!=null \r\n && localStorage.getItem(\"MsgToPost_\"+mfaToken)!=undefined)\r\n {\r\n msgToPost=localStorage.getItem(\"MsgToPost_\"+mfaToken)!;\r\n }\r\n\r\n return msgToPost;\r\n }\r\n async getQueryStringValues():Promise\r\n {\r\n let queryStringValuesObj= new QueryStringValuesModel();\r\n let qs=this.commonUtilSvc.ConvertBase64ToString(this.qs);\r\n console.log(qs);\r\n let emailAddress='';//this.commonUtilSvc.GetParameterByName(\"?EmailAddress\",qs)!;\r\n let password= '';//this.commonUtilSvc.GetParameterByName(\"Pwd\",qs)!;\r\n let clientId= this.rcapClientId!;//this.commonUtilSvc.GetParameterByName(\"ClientId\",qs)!;\r\n let sourceClientId= this.commonUtilSvc.GetParameterByName(\"?SourceClientId\",qs)!;\r\n let mfaToken=this.commonUtilSvc.GetParameterByName(\"MFAToken\",qs)!;\r\n let callBackUrl=this.commonUtilSvc.GetParameterByName(\"CallBackUrl\",qs)!;\r\n let mfaEnabled= this.commonUtilSvc.GetParameterByName(\"MFAEEnabled\",qs)!;\r\n let mfaEnabledBoolValue=(mfaEnabled==\"true\");\r\n let passwordChangeType=parseInt(this.commonUtilSvc.GetParameterByName(\"MFAEEnabled\",qs)!);\r\n let loginUrl=this.commonUtilSvc.GetParameterByName(\"LoginUrl\",qs)!;\r\n let lang=this.commonUtilSvc.GetParameterByName(\"Lang\",qs)!;\r\n \r\n queryStringValuesObj.EmailAddress=emailAddress;\r\n queryStringValuesObj.Password=password;\r\n queryStringValuesObj.ClientId=clientId;\r\n queryStringValuesObj.SourceClientId=sourceClientId;\r\n queryStringValuesObj.MFAToken=mfaToken;\r\n queryStringValuesObj.CallBackUrl=callBackUrl;\r\n queryStringValuesObj.MFAEEnabled=mfaEnabledBoolValue;\r\n queryStringValuesObj.PasswordChangeType=passwordChangeType;\r\n queryStringValuesObj.LoginUrl=loginUrl;\r\n queryStringValuesObj.Language=lang;\r\n return queryStringValuesObj;\r\n \r\n \r\n }\r\n\r\n hasTwoUppercaseLetters() { \r\n const password = this.resetForm.controls.txtPassword.value;\r\n this.hasUppercaseFlag = /[A-Z].*[A-Z]/.test(password);\r\n return this.hasUppercaseFlag;\r\n }\r\n\r\n hasTwoLowercaseLetters() {\r\n const password = this.resetForm.controls.txtPassword.value;\r\n this.hasLowercaseFlag = /[a-z].*[a-z]/.test(password);\r\n return this.hasLowercaseFlag;\r\n }\r\n \r\n hasTwoNumbers() {\r\n const password = this.resetForm.controls.txtPassword.value;\r\n this.hasNumberFlag = /[0-9].*[0-9]/.test(password);\r\n return this.hasNumberFlag;\r\n }\r\n \r\n hasTwoSpecialChars() {\r\n const password = this.resetForm.controls.txtPassword.value;\r\n this.hasSpecialCharFlag = /[#?!@$%^&*].*[#?!@$%^&*]/.test(password);\r\n return this.hasSpecialCharFlag;\r\n }\r\n \r\n isLengthValid() {\r\n const password = this.resetForm.controls.txtPassword.value;\r\n this.isLengthValidFlag = password.length >= 16;\r\n return this.isLengthValidFlag;\r\n }\r\n\r\n /* isPasswordValid() {\r\n return (\r\n this.hasTwoUppercaseLetters() &&\r\n this.hasTwoLowercaseLetters() &&\r\n this.hasTwoNumbers() &&\r\n this.hasTwoSpecialChars() &&\r\n this.isLengthValid() \r\n );\r\n } */\r\n // Begin S1-3262\r\n isPasswordValid() {\r\n return (\r\n this.hasUpperCaseLetters() &&\r\n this.hasLowerCaseLetters() &&\r\n this.hasNumbers() &&\r\n this.hasSpecialChars() &&\r\n this.isPasswordLengthValid() \r\n );\r\n }\r\n\r\n \r\n getPasswordPolicySettings()\r\n {\r\n let mfaToken='';\r\n if(localStorage.getItem('MFAToken')!=null && localStorage.getItem('MFAToken')!=undefined)\r\n {\r\n mfaToken=localStorage.getItem('MFAToken')!;\r\n }\r\n \r\n var pwdPolicySetting : any ='';\r\n if(localStorage.getItem(\"PwdPolicySettingsLs_\"+mfaToken)!=null \r\n && localStorage.getItem(\"PwdPolicySettingsLs_\"+mfaToken)!=undefined)\r\n {\r\n //alert(mfaToken);\r\n pwdPolicySetting= localStorage.getItem(\"PwdPolicySettingsLs_\"+mfaToken);\r\n }\r\n //alert(pwdPolicySetting);\r\n return pwdPolicySetting;\r\n \r\n }\r\n getPasswordPolicySettingsValues()\r\n {\r\n var pwdPolicySetting = this.getPasswordPolicySettings();\r\n var pwdPolicySettingObj;\r\n if(pwdPolicySetting!=null && pwdPolicySetting!='' && pwdPolicySetting!='undefined')\r\n {\r\n pwdPolicySettingObj= JSON.parse(pwdPolicySetting);\r\n }\r\n return pwdPolicySettingObj;\r\n }\r\n getPasswordRules()\r\n {\r\n \r\n let atleastUpperCaseLetters:number = 1;\r\n let atleastLowerCaseLetters:number = 1;\r\n let atleastNumbers:number = 1;\r\n let atleastSpecialCharacters:number = 1;\r\n let minPWdLength:number= 8;\r\n var pwdPolicySettingObj = this.getPasswordPolicySettingsValues();\r\n\tif(pwdPolicySettingObj!=null && pwdPolicySettingObj!=undefined)\r\n {\r\n //alert(pwdPolicySettingObj.upperCaseCharCount); \r\n atleastUpperCaseLetters=(pwdPolicySettingObj.upperCaseCharCount!=null)?pwdPolicySettingObj.upperCaseCharCount:atleastUpperCaseLetters;\r\n atleastLowerCaseLetters= (pwdPolicySettingObj.lowerCaseCharCount!=null)? pwdPolicySettingObj.lowerCaseCharCount:atleastLowerCaseLetters;\r\n atleastNumbers = (pwdPolicySettingObj.numberCharCount!=null)?pwdPolicySettingObj.numberCharCount:atleastNumbers;\r\n atleastSpecialCharacters = (pwdPolicySettingObj.specialCharCount!=null)?pwdPolicySettingObj.specialCharCount:atleastSpecialCharacters;\r\n minPWdLength = (pwdPolicySettingObj.minCharLength!=null)?pwdPolicySettingObj.minCharLength:minPWdLength;\r\n }\r\n \r\n this.atleastText= this.translate.instant('ResetPassword.AtleastText'); \r\n this.upperCasePwdRuleText= this.translate.instant('ResetPassword.UppercasePwdRuleText');\r\n this.lowerCasePwdRuleText= this.translate.instant('ResetPassword.LowercasePwdRuleText');\r\n this.numberPwdRuleText= this.translate.instant('ResetPassword.NumberPwdRuleText');\r\n this.specialCharPwdRuleText= this.translate.instant('ResetPassword.SpecialCharacterPwdRuleText');\r\n this.pwdLengthPwdRuleText= this.translate.instant('ResetPassword.PasswordLengthPwdRuleText');\r\n \r\n this.upperCaseNumberText = atleastUpperCaseLetters;\r\n this.lowerCaseNumberText = atleastLowerCaseLetters; \r\n this.numberText= atleastNumbers; \r\n this.specialCharNumberText = atleastSpecialCharacters;\r\n this.pwdLengthNumberText= minPWdLength;\r\n }\r\n getNumberText(numValue:number)\r\n {\r\n \r\n var numberText: any=''\r\n switch(numValue)\r\n {\r\n case 1:\r\n numberText= \"one\";\r\n break;\r\n case 2:\r\n numberText= \"two\";\r\n break;\r\n case 3:\r\n numberText= \"three\";\r\n break;\r\n }\r\n \r\n return numberText;\r\n } \r\n \r\n hasUpperCaseLetters()\r\n {\r\n let atleastUpperCaseLetters:number = this.upperCaseNumberText;\r\n /* let oneUpperCasePattern: any='/[A-Z]/';\r\n let twoUpperCasePattern: any ='/[A-Z].*[A-Z]/';\r\n let threeUpperCasePattern: any ='/[A-Z].*[A-Z].*[A-Z]/'; */\r\n const password = this.resetForm.controls.txtPassword.value;\r\n //this.hasUppercaseFlag = /[A-Z].*[A-Z]/.test(password);\r\n \r\n\r\n switch(atleastUpperCaseLetters)\r\n {\r\n case 1:\r\n this.hasUppercaseFlag = /[A-Z]/.test(password);\r\n break;\r\n case 2:\r\n this.hasUppercaseFlag = /[A-Z].*[A-Z]/.test(password);\r\n break;\r\n case 3:\r\n this.hasUppercaseFlag = /[A-Z].*[A-Z].*[A-Z]/.test(password);\r\n break;\r\n }\r\n\r\n return this.hasUppercaseFlag;\r\n }\r\n\r\n hasLowerCaseLetters() {\r\n let atleastLowerCaseLetters:number = this.lowerCaseNumberText;\r\n // let oneLowerCasePattern: any='/[a-z]/';\r\n // let twoLowerCasePattern: any ='/[a-z].*[a-z]/';\r\n // let threeLowerCasePattern: any ='/[a-z].*[a-z].*[a-z]/';\r\n const password = this.resetForm.controls.txtPassword.value;\r\n // this.hasLowercaseFlag = /[a-z].*[a-z]/.test(password);\r\n switch(atleastLowerCaseLetters)\r\n {\r\n case 1:\r\n this.hasLowercaseFlag = /[a-z]/.test(password);\r\n break;\r\n case 2:\r\n this.hasLowercaseFlag = /[a-z].*[a-z]/.test(password);\r\n break;\r\n case 3:\r\n this.hasLowercaseFlag = /[a-z].*[a-z].*[a-z]/.test(password);\r\n break;\r\n }\r\n return this.hasLowercaseFlag;\r\n }\r\n \r\n hasNumbers() {\r\n let atleastNumbers:number = this.numberText;\r\n // let oneNumberPattern: any='/[0-9]/';\r\n // let twoNumberPattern: any ='/[0-9].*[0-9]/';\r\n // let threeNumberPattern: any ='/[0-9].*[0-9].*[0-9]/';\r\n const password = this.resetForm.controls.txtPassword.value;\r\n //this.hasNumberFlag = /[0-9].*[0-9]/.test(password);\r\n switch(atleastNumbers)\r\n {\r\n case 1:\r\n this.hasNumberFlag = /[0-9]/.test(password);\r\n break;\r\n case 2:\r\n this.hasNumberFlag = /[0-9].*[0-9]/.test(password);\r\n break;\r\n case 3:\r\n this.hasNumberFlag = /[0-9].*[0-9].*[0-9]/.test(password);\r\n break;\r\n }\r\n return this.hasNumberFlag;\r\n }\r\n\r\n hasSpecialChars() {\r\n \r\n let atleastSpecialCharacters:number = this.specialCharNumberText;\r\n // let oneSpecialCharPattern: any='/[#?!@$%^&*]/';\r\n // let twoSpecialCharPattern: any ='/[#?!@$%^&*].*[#?!@$%^&*]/';\r\n // let threeSpecialCharPattern: any ='/[#?!@$%^&*].*[#?!@$%^&*].*[#?!@$%^&*]/';\r\n const password = this.resetForm.controls.txtPassword.value;\r\n //this.hasSpecialCharFlag = /[#?!@$%^&*].*[#?!@$%^&*]/.test(password);\r\n switch(atleastSpecialCharacters)\r\n {\r\n /* case 1:\r\n this.hasSpecialCharFlag = /[#?!@$%^&*]/.test(password);\r\n break;\r\n case 2:\r\n this.hasSpecialCharFlag = /[#?!@$%^&*].*[#?!@$%^&*]/.test(password);\r\n break;\r\n case 3:\r\n this.hasSpecialCharFlag = /[#?!@$%^&*].*[#?!@$%^&*].*[#?!@$%^&*]/.test(password);\r\n break; */\r\n //Begin S1-3357\r\n case 1:\r\n this.hasSpecialCharFlag = /[[\\]()_=#+{}|\\\\;:'\"<,>./?!~`@$%^&*-]/.test(password);\r\n break;\r\n case 2:\r\n this.hasSpecialCharFlag = /[[\\]()_=#+{}|\\\\;:'\"<,>./?!~`@$%^&*-].*[[\\]()_=#+{}|\\\\;:'\"<,>./?!~`@$%^&*-]/.test(password);\r\n break;\r\n case 3:\r\n this.hasSpecialCharFlag = /[[\\]()_=#+{}|\\\\;:'\"<,>./?!~`@$%^&*-].*[[\\]()_=#+{}|\\\\;:'\"<,>./?!~`@$%^&*-].*[[\\]()_=#+{}|\\\\;:'\"<,>./?!~`@$%^&*-]/.test(password);\r\n break; \r\n // case 1:\r\n // this.hasSpecialCharFlag = /[#!@$%^&*()_=+{}|;:'\"<,>.-]/.test(password);\r\n // break;\r\n // case 2:\r\n // this.hasSpecialCharFlag = /[#!@$%^&*()_=+{}|;:'\"<,>.-].*[#!@$%^&*()_=+{}|;:'\"<,>.-]/.test(password);\r\n // break;\r\n // case 3:\r\n // this.hasSpecialCharFlag = /[#!@$%^&*()_=+{}|;:'\"<,>.-].*[#!@$%^&*()_=+{}|;:'\"<,>.-].*[#!@$%^&*()_=+{}|;:'\"<,>.-]/.test(password);\r\n // break;\r\n\r\n //End S1-3357\r\n }\r\n return this.hasSpecialCharFlag;\r\n }\r\n\r\n isPasswordLengthValid() {\r\n let minPWdLength:number= this.pwdLengthNumberText;\r\n const password = this.resetForm.controls.txtPassword.value;\r\n this.isLengthValidFlag = password.length >= minPWdLength;\r\n return this.isLengthValidFlag;\r\n }\r\n\r\n //End S1-3262\r\n togglePasswordVisibility() {\r\n this.showPassword = !this.showPassword;\r\n }\r\n \r\n toggleConfirmPasswordVisibility() {\r\n this.showConfirmPassword = !this.showConfirmPassword;\r\n } \r\n\r\n validateResetForm(resetForm: any) {\r\n\r\n if (resetForm.controls.txtPassword && (resetForm.controls.txtPassword.value != '' || resetForm.controls.txtPassword.value == ''))\r\n this.validPassword = true;\r\n\r\n if (resetForm.controls.txtConfirmPassword && (resetForm.controls.txtConfirmPassword.value != '' || resetForm.controls.txtConfirmPassword.value == ''))\r\n this.validConfirmPassword = true;\r\n\r\n return false;\r\n\r\n}\r\n\r\nonPasswordBlur(event: any) {\r\n\r\n // if ((this.resetForm.controls.txtConfirmPassword.errors?.pattern || this.resetForm.controls.txtConfirmPassword.errors?.minlength) && event.target.value != \"\")\r\n // this.validPasswordPattern = true;\r\n // else\r\n // this.validPasswordPattern = false;\r\n\r\n if (this.resetForm.controls.txtPassword.value != this.resetForm.controls.txtConfirmPassword.value && this.resetForm.controls.txtConfirmPassword.value != \"\")\r\n this.validMatchPassword = true;\r\n else\r\n this.validMatchPassword = false;\r\n\r\n this.validPassword = event.value != \"\" ? false : true;\r\n\r\n}\r\n\r\nonConfirmPasswordBlur(event: any) {\r\n\r\n // if ((this.resetForm.controls.txtConfirmPassword.errors?.pattern || this.resetForm.controls.txtConfirmPassword.errors?.minlength) && event.target.value != \"\")\r\n // this.validConfirmPatternPassword = true;\r\n // else\r\n // this.validConfirmPatternPassword = false;\r\n\r\n if (this.resetForm.controls.txtPassword.value != \"\" && this.resetForm.controls.txtPassword.value != this.resetForm.controls.txtConfirmPassword.value)\r\n this.validMatchPassword = true;\r\n else\r\n this.validMatchPassword = false;\r\n\r\n this.validConfirmPassword = event.target.value != \"\" ? true : false;\r\n\r\n}\r\n\r\n resetPassword(form: FormGroup) {\r\n\r\n if (this.resetForm.invalid || !this.isPasswordValid() || this.validMatchPassword) {\r\n\r\n var validForm = this.validateResetForm(this.resetForm);\r\n\r\n if (!validForm)\r\n return;\r\n }\r\n\r\n if (form.value.txtPassword != form.value.txtConfirmPassword) {\r\n this.validMatchPassword = true;\r\n return;\r\n } \r\n\r\n this.invokeResetPasswordAPI(form.value.txtPassword,form.value.txtConfirmPassword);\r\n //this.InvokeResetPasswordAPI()\r\n // this.authService.resetPassword(obj.password, obj.confirmPassword, obj.code)\r\n // .subscribe(resp => {\r\n\r\n \r\n // if(resp instanceof IresetPassword){\r\n\r\n // var result = resp as IresetPassword;\r\n\r\n // if (result.Status == \"Success\") {\r\n // this.isPasswordReset = true;\r\n // // this.openSnackBar('Password reset successful', '');\r\n // }\r\n // }\r\n // else{\r\n // if (resp.includes(\"succeeded\")) {\r\n // this.isPasswordReset = true;\r\n // // this.openSnackBar('Password reset successful', '');\r\n // }\r\n // }\r\n\r\n // this.buildForm();\r\n\r\n // });\r\n\r\n}\r\n\r\nsanitize(url:string){\r\n return this.sanitizer.bypassSecurityTrustUrl(url);\r\n}\r\n\r\ngetMaskedEmailAddress_V1(emailAddress:string):string\r\n{\r\n var maskedEmailAddress=emailAddress;\r\n var loopCounter=0;\r\n let lastPosition=emailAddress.indexOf(\"@\");\r\n let posValueAfterAtTheRateSymbol=lastPosition+1;\r\n for(var i=0; ilastPosition)// after @ symbol\r\n {\r\n let difference=Math.abs(loopCounter-lastPosition);\r\n if(difference<=3)\r\n {\r\n maskedEmailAddress=replaceAtPosition(maskedEmailAddress,loopCounter);\r\n \r\n }\r\n }\r\n \r\n \r\n \r\n \r\n \r\n }\r\n return maskedEmailAddress;\r\n}\r\n\r\n// displaySuccessMsg(mesg:string)\r\n// {\r\n// $('#parSuccessMsg').text(mesg);\r\n// $('#divSuccessMsg').css('display','block');\r\n\r\n// }\r\n\r\n\r\n}\r\n\r\nfunction replaceAtPosition(originalString: string,index: any) {\r\n //var str = 'Hello World';\r\n return setCharAt(originalString,index,'x');\r\n //alert(str);\r\n}\r\n\r\nfunction setCharAt(str: string,index: number,chr: string) {\r\n if(index > str.length-1) return str;\r\n return str.substring(0,index) + chr + str.substring(index+1);\r\n}\r\n","
\r\n
\r\n \"Processing...\"\r\n
\r\n
\r\n
\r\n
\r\n \"RPOST\"\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n

{{\"EmailAuthentication.IncorrectOrExpiredAccessCode\" |\r\n translate}}\r\n

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

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

{{\"ResetPassword.CreateNewPasswordTitle\" |\r\n translate}}\r\n

\r\n
\r\n
\r\n {{\"ResetPassword.PasswordMustContainLabelText\" | translate}}:\r\n
    \r\n
  • \r\n \r\n     \r\n {{atleastText | translate }} {{pwdLengthNumberText | translate }} {{pwdLengthPwdRuleText | translate }}\r\n
  • \r\n
  • \r\n \r\n  \r\n   {{atleastText | translate }} {{upperCaseNumberText | translate }} {{upperCasePwdRuleText | translate }}\r\n
  • \r\n
  • \r\n \r\n  \r\n   {{atleastText | translate }} {{lowerCaseNumberText | translate }} {{lowerCasePwdRuleText | translate }}\r\n
  • \r\n
  • \r\n \r\n    \r\n {{atleastText | translate }} {{specialCharNumberText | translate }} {{specialCharPwdRuleText | translate }}\r\n
  • \r\n
  • \r\n \r\n    \r\n {{atleastText | translate }} {{numberText | translate }} {{numberPwdRuleText | translate }}\r\n
  • \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {{\"ResetPassword.PwdAndConfirPwdValidationMsg\" | translate}} \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n","import { Injectable, inject } from '@angular/core';\r\nimport {\r\n Router, Resolve,\r\n RouterStateSnapshot,\r\n ActivatedRouteSnapshot,\r\n ResolveFn\r\n} from '@angular/router';\r\nimport { Observable, catchError, map, of, pipe } from 'rxjs';\r\nimport { IMFATokenResponseDetails } from '../Model/MFA/MFATokenResponse';\r\nimport { CommonService } from '../service/common/common.service';\r\nimport { MFAAuthenticationService } from '../service/mfaauthentication.service';\r\n\r\n// @Injectable({\r\n// providedIn: 'root'\r\n// })\r\nexport const EmailAuthenticationResolver: ResolveFn = (\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n //router:Router,\r\n mfaSvc: MFAAuthenticationService = inject(MFAAuthenticationService)\r\n): Observable<{}> =>\r\n \r\n mfaSvc.ValidateMFATokenFromServer()\r\n .pipe(\r\n map((result: any) => {\r\n \r\n return result;\r\n })\r\n //,delay(5000)\r\n )\r\n .pipe(\r\n catchError((err) => {\r\n return of('No data' + err);\r\n })\r\n );\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n Router, Resolve,\r\n RouterStateSnapshot,\r\n ActivatedRouteSnapshot\r\n} from '@angular/router';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RpostAuthenticationResolverResolver implements Resolve {\r\n constructor(private router:Router\r\n ) {\r\n\r\n \r\n }\r\n resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n //let clientId=route.paramMap.get('clientId')!;\r\n //let callbackUrl=route.paramMap.get('callbackUrl')!;\r\n //alert('resolver');\r\n //alert(clientId);\r\n /* localStorage.setItem(\"clienIdLS\",clientId);\r\n localStorage.setItem(\"callbackUrl_\"+clientId,callbackUrl); */\r\n return of(true);\r\n }\r\n}\r\n","import { Component, HostListener, OnInit } from '@angular/core';\r\nimport { ActivatedRoute,Router } from '@angular/router';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { ThisReceiver } from '@angular/compiler';\r\nimport { ErrorReason } from '../Model/ErrorReasonModel';\r\nimport { GoogleAuthenticationService } from '../service/google-authentication.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'app-rpost-authentication-logout',\r\n templateUrl: './rpost-authentication-logout.component.html',\r\n styleUrls: ['./rpost-authentication-logout.component.css']\r\n})\r\nexport class RpostAuthenticationLogoutComponent implements OnInit {\r\n logoutCallBakcUrl='';\r\n postUrl='';\r\n loginFailReason='';\r\n emailAddress='';\r\n ssotype='';\r\n /* @HostListener('window:message', ['$event'])\r\n onMessage(e: any) { \r\n console.log(e);\r\n this.logoutForFailure();\r\n \r\n } */\r\n \r\n constructor(private authService: MsalService,private route: ActivatedRoute\r\n ,private sanitizer: DomSanitizer\r\n ,private router:Router\r\n ,private googleAutheService:GoogleAuthenticationService) {\r\n this.route.queryParams.subscribe( params => this.logoutCallBakcUrl=params['logoutcallbackurl']);\r\n this.route.queryParams.subscribe( params => this.loginFailReason=params['errorReason']);\r\n this.route.queryParams.subscribe(params => this.emailAddress=params['emailAddress']);\r\n this.route.queryParams.subscribe(params => this.ssotype=params['ssotype']);\r\n }\r\n\r\n \r\n\r\n ngOnInit(): void {\r\n var callbackUrl=this.logoutCallBakcUrl;\r\n var ssotype= this.ssotype;\r\n this.performLogoutAction(callbackUrl,ssotype);\r\n }\r\n\r\n performLogoutAction(callbackUrl:string,ssotype:string)\r\n {\r\n switch(ssotype)\r\n {\r\n case environment.azureADProvider:\r\n this.azureLogout(callbackUrl);\r\n break;\r\n case environment.googleProvider:\r\n this.googleLogout(callbackUrl);\r\n break;\r\n\r\n default:\r\n this.azureLogout(callbackUrl);\r\n break;\r\n\r\n }\r\n\r\n }\r\n azureLogout(callbackUrl:string)\r\n {\r\n if(this.loginFailReason!=null)\r\n {\r\n this.logoutForFailure(this.loginFailReason,callbackUrl);\r\n }\r\n else\r\n this.logout(callbackUrl);\r\n }\r\n\r\n logoutForFailure(loginFailReason:string,logoutCallBakcUrl:string)\r\n {\r\n let errorDesc='';\r\n if(loginFailReason.indexOf(ErrorReason.CLIENT_APP_PRIVILEGES_ERROR)>-1)\r\n {\r\n errorDesc=ErrorReason.CLIENT_APP_PRIVILEGES_ERROR;\r\n }\r\n else\r\n errorDesc=loginFailReason;\r\n let callbackUrl=logoutCallBakcUrl+'?errorReason='+errorDesc;\r\n this.logout(callbackUrl);\r\n \r\n }\r\n\r\n logout(logoutCallBakcUrl:string) {\r\n let returnUrl= '' \r\n returnUrl=logoutCallBakcUrl;\r\n let isPopupblocker=this.detectPopupBlocker();\r\n let activeUserName=this.getActiveAccountUserName();\r\n let loggedInActiveUserName=this.getActiveAccountByUserName(this.emailAddress);\r\n const homeAccountId=this.authService.instance.getActiveAccount()?.homeAccountId!;\r\n const currentAccount = this.authService.instance.getAccountByHomeId(homeAccountId);\r\n //alert('activeUserName'+ activeUserName);\r\n //alert('loggedInUserName'+ loggedInActiveUserName);\r\n //alert('test');\r\n if(isPopupblocker)\r\n {\r\n //alert(this.isUserAlreadyLoggedin());\r\n \r\n //if(this.isUserAlreadyLoggedin())\r\n if(loggedInActiveUserName!=null && loggedInActiveUserName!=undefined && loggedInActiveUserName!='')\r\n {\r\n this.authService.logout({\r\n postLogoutRedirectUri:returnUrl,\r\n account:currentAccount,\r\n \r\n });\r\n }\r\n else\r\n {\r\n //window.location.href=returnUrl;\r\n this.authService.logout({\r\n postLogoutRedirectUri:returnUrl,\r\n account:currentAccount,\r\n \r\n });\r\n }\r\n }\r\n else\r\n { \r\n //if(this.isUserAlreadyLoggedin())\r\n if(loggedInActiveUserName!=null && loggedInActiveUserName!=undefined && loggedInActiveUserName!='')\r\n {\r\n \r\n this.showLogoutPopup(returnUrl,currentAccount);\r\n \r\n }\r\n else\r\n this.showLogoutPopup(returnUrl,currentAccount);\r\n\r\n \r\n\r\n\r\n }\r\n \r\n \r\n }\r\n\r\n\r\n showLogoutPopup(returnUrl:string,currentAccount:any)\r\n {\r\n \r\n this.authService.logoutPopup({\r\n \r\n mainWindowRedirectUri:returnUrl,\r\n account:currentAccount,\r\n \r\n }).subscribe((result:any)=>\r\n {\r\n\r\n },\r\n error =>\r\n {\r\n // handle error\r\n var errorDesc=error.toString();\r\n let errorReason=''\r\n \r\n if(typeof errorDesc == \"string\" && errorDesc.indexOf(ErrorReason.INTERACTION_IN_PROGRESS) > -1)\r\n {\r\n errorReason= ErrorReason.INTERACTION_IN_PROGRESS;\r\n alert('Please open the logout popup');\r\n /* //if (location.hash.includes(\"id_token\")) {\r\n open(location.href, '_self')!.close()\r\n window.close()\r\n //} */\r\n //window.location.reload();\r\n //return;\r\n }\r\n console.log(error)\r\n }\r\n ) \r\n \r\n \r\n\r\n \r\n \r\n }\r\n detectPopupBlocker()\r\n {\r\n \r\n var isPopupblocker=false;\r\n var windowUrl = 'about:blank';\r\n var windowId = 'TestPopup_' + new Date().getTime();\r\n var windowFeatures = 'left=0%,top=0%,width=0.1%,height=0.1%';\r\n var windowRef = window.open(windowUrl, windowId, windowFeatures);\r\n\r\n if ( !windowRef )\r\n {\r\n //alert('A popup blocker was detected. Please turn it off to use this application.');\r\n //return false;\r\n $('#pnlPopupblockerMsg').css(\"display\",\"block\");\r\n isPopupblocker=true;\r\n }\r\n else\r\n {\r\n // No popup blocker was detected...\r\n windowRef.close();\r\n isPopupblocker=false;\r\n $('#pnlPopupblockerMsg').css(\"display\",\"none\");\r\n //document.getElementById('pageContent').style.display = 'block';\r\n }\r\n\r\n return isPopupblocker;\r\n }\r\n \r\n\r\n generateDataShareIframeHtmlElement(logoutCallBakcUrl:string)\r\n {\r\n const iframe = document.createElement('IFRAME');\r\n iframe.id = 'clientAppIframe_Logout';\r\n iframe.style.display = \"none\";\r\n (iframe).src = logoutCallBakcUrl; \r\n document.body.appendChild(iframe);\r\n \r\n }\r\n\r\n isUserAlreadyLoggedin()\r\n {\r\n const homeAccountId=this.authService.instance.getActiveAccount()?.homeAccountId!;\r\n const currentAccount = this.authService.instance.getAccountByHomeId(homeAccountId);\r\n let isLoggedIn = this.authService.instance.getActiveAccount()?.username!= null;\r\n \r\n //alert('homeAccountId'+ homeAccountId);\r\n //alert('current username' + this.authService.instance.getActiveAccount()?.username);\r\n //alert('isLoggedIn' + isLoggedIn);\r\n return isLoggedIn;\r\n }\r\n\r\n getActiveAccountUserName()\r\n {\r\n return this.authService.instance.getActiveAccount()?.username; \r\n }\r\n\r\n getActiveAccountByUserName(userEmailAddress:string)\r\n {\r\n //alert('userEmailAddress'+ userEmailAddress);\r\n let userNameFromMSAL='';\r\n if(userEmailAddress!=null && userEmailAddress!=undefined && userEmailAddress!='')\r\n {\r\n userNameFromMSAL= this.authService.instance.getAccountByUsername(userEmailAddress)?.username!;\r\n //alert('userNameFromMSAL'+userNameFromMSAL);\r\n }\r\n else\r\n userNameFromMSAL=this.getActiveAccountUserName()!; //for backward compatibility if emailaddress query string not there\r\n\r\n return userNameFromMSAL;\r\n }\r\n\r\n SignOutButtonClick()\r\n {\r\n //window.location.href=this.logoutCallBakcUrl;\r\n //this.logout(this.logoutCallBakcUrl);\r\n var callbackUrl=this.logoutCallBakcUrl;\r\n var ssotype= this.ssotype;\r\n this.performLogoutAction(callbackUrl,ssotype);\r\n }\r\n\r\n reload() {\r\n this.router.routeReuseStrategy.shouldReuseRoute = function () {\r\n return false;\r\n };\r\n }\r\n \r\n\r\n navigateToUrl(url:string)\r\n {\r\n //this.router.navigateByUrl(url);\r\n this.router.navigate(['/', 'rpost-authentication-logout'], { queryParams: {logoutCallBakcUrl: this.logoutCallBakcUrl,emailAddress:this.emailAddress},queryParamsHandling: 'merge' });\r\n }\r\n\r\n googleLogout(callbackUrl:string)\r\n {\r\n this.googleAutheService.signOut(callbackUrl);\r\n \r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\n","\r\n \r\n \r\n
\r\n\t \r\n\t
\r\n\t \r\n\t\t\t
\r\n\t\t\t \r\n\t\t\t\t \r\n\t\t\t \r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t

See you soon!

\r\n\t\t\t\t\t\t\t
Signing off.. Please wait..
\r\n\t\t\t
\r\n\t\t\t\t\t\t\t\t \r\n\t\t\t\t

You will be redirected to the login page once you sign out!

\r\n\t\t\t\t
\r\n\t\t\t\t \r\n\t\t\t\t\t\t\t \r\n\t\t\t\r\n\t\t
\r\n \r\n
\r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t \r\n\t\t\t
\r\n\t \r\n\t
\r\n\t \r\n\t
\r\n\t\t\r\n\t
\r\n
","import { Component, ENVIRONMENT_INITIALIZER, HostListener, Inject, OnInit } from '@angular/core';\r\nimport { MsalBroadcastService, MsalGuardConfiguration, MsalService, MSAL_BROADCAST_CONFIG, MSAL_GUARD_CONFIG } from '@azure/msal-angular';\r\nimport { AuthenticationResult, EventMessage, EventType, InteractionRequiredAuthError, InteractionStatus, PopupRequest } from '@azure/msal-browser';\r\nimport { filter } from 'rxjs/operators';\r\nimport { AppError } from '../common/class/app-error';\r\nimport { ExternalTokenModel } from '../Model/ExternalTokenModel';\r\nimport { IExternalTokenResponseDetails, ResultContent } from '../Model/ExternalTokenRespone';\r\nimport { TokenModel } from '../Model/TokenModel';\r\nimport { RpostAuthenticationService } from '../service/rpost-authentication.service';\r\nimport { DataSharingService } from '../service/data-sharing.service';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { AzureTokenResponseModel } from '../Model/AzureTokenResponseModel';\r\nimport { RefreshTokenResponseModel } from '../Model/RefreshTokenResponseModel';\r\nimport { AzureIdTokenResponseModel } from '../Model/AzureIdTokenResponseModel';\r\nimport { ErrorReason } from '../Model/ErrorReasonModel';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AzureTokenResponseService } from '../service/azure-token-response.service';\r\nimport { AzureAccessTokenResponseModel } from '../Model/AzureAccessTokenResponseModel';\r\nimport { AzureIdTokenClaimsResponseModel } from '../Model/AzureIdTokenClaimsResponseModel';\r\nimport { Observable } from 'rxjs';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { param } from 'jquery';\r\nimport { MSALInstanceFactory, MSALInterceptorConfigFactory } from '../app.module';\r\nimport { GoogleAuthenticationService } from '../service/google-authentication.service';\r\nimport { GoogleLoginProvider, SocialAuthService, SocialUser } from \"@abacritt/angularx-social-login\";\r\nimport { GoogleTokenResponseModel } from '../Model/Google/GoogleAccountDetailsModel';\r\nimport { UserSessionService } from '../common/user-session.service';\r\nimport { TranslationLoaderService } from '../common/translation-loader.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\ndeclare var $: any; \r\n@Component({\r\n selector: 'app-rpost-authentication',\r\n templateUrl: './rpost-authentication.component.html',\r\n styleUrls: ['./rpost-authentication.component.css'],\r\n providers: [DataSharingService]\r\n})\r\nexport class RPostAuthenticationComponent implements OnInit {\r\n title = 'RPostAuthUI';\r\n isIframe = false;\r\n loginDisplay = false;\r\n providerAccessToken='';\r\n refreshTokenFromRCAPAPI='';\r\n accessTokenFromRCAPAPI='';\r\n azureTokenResponseGv='';\r\n public resultContentObj=new ResultContent();\r\n safeSrc: SafeResourceUrl;\r\n clientAppLoginUrl='';\r\n callBackUrlFromQueryString='';\r\n clientIdFromQueryString='';\r\n loginUrlFromQueryString='';\r\n isUnAuthorized='';\r\n showLoginPopup='';\r\n googleRefreshToken='';\r\n googleSSOClientId=environment.googleSSOClientId;\r\n langQS='';\r\n appLang: any;\r\n constructor(@Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration\r\n ,private rpostAuthService: RpostAuthenticationService\r\n ,private authService: MsalService\r\n , private msalBroadcastService: MsalBroadcastService\r\n ,private dataShareService:DataSharingService\r\n ,private auzureTokenRespService:AzureTokenResponseService\r\n ,private sanitizer: DomSanitizer\r\n , private route: ActivatedRoute\r\n ,private googleAutheService:GoogleAuthenticationService\r\n ,private socialAuthService: SocialAuthService\r\n ,private user: UserSessionService\r\n ,private langLoaderSvc: TranslationLoaderService\r\n ,private langSvc: TranslateService) {\r\n let clientId= localStorage.getItem(\"clienIdLS\")!;\r\n let callbackUrl= localStorage.getItem(\"callbackUrl_\"+clientId)!;\r\n this.clientAppLoginUrl = localStorage.getItem(\"loginUrl_\"+clientId)!;\r\n this.safeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(callbackUrl);\r\n //this.route.params.subscribe( params => this.clientAppLoginUrl=params['LoginUrl']);\r\n this.route.queryParams.subscribe(params => {\r\n this.callBackUrlFromQueryString = params['CallBackUrl'];\r\n this.clientIdFromQueryString= params['RpostClientId'];\r\n this.loginUrlFromQueryString=params['LoginUrl'];\r\n this.isUnAuthorized=params['IsUnAuthorized'];\r\n this.showLoginPopup=params['ShowLoginPopup'];\r\n this.clientAppLoginUrl=(this.clientAppLoginUrl==null && this.loginUrlFromQueryString!=null)\r\n ?this.loginUrlFromQueryString:this.clientAppLoginUrl;\r\n clientId=(clientId==null && this.clientIdFromQueryString!=null)?this.clientIdFromQueryString:clientId;\r\n this.langQS=params['LN'];\r\n });\r\n }\r\n\r\n InitLang() {\r\n const lang = this.user.getAppLanguage();\r\n const browserLang = navigator.language.toLowerCase();\r\n if (lang === browserLang) {\r\n this.langLoaderSvc.use(lang);\r\n this.appLang = lang;\r\n } else {\r\n this.langLoaderSvc.use(lang);\r\n this.appLang = browserLang;\r\n }\r\n }\r\n disableGoogleButton(callbackUrl:string)\r\n {\r\n if(callbackUrl!=null && callbackUrl.indexOf(\"rmail.\")!=-1)\r\n $(\"#pnlGoogleBtn\").addClass(\"disabledbutton\");\r\n\r\n }\r\n displaySpinner()\r\n {\r\n \r\n $('#pnlSpinner').css(\"display\",\"block\");\r\n }\r\n\r\n hideSpinner()\r\n {\r\n $('#pnlSpinner').css(\"display\",\"none\");\r\n }\r\n displaySSOButtons()\r\n {\r\n //alert('display')\r\n $('#pnlSSOButtons').css(\"display\",\"block\");\r\n }\r\n hideSSOButtons()\r\n {\r\n //alert('hide');\r\n //$('#pnlSSOButtons').css(\"display\",\"none\");\r\n $('#pnlSSOButtons').attr('style', 'display: none !important');\r\n }\r\n /* postMessageIfUserAlreadyLoggedin(clientId:string,callbackUrl:string)\r\n {\r\n \r\n postMessageToClientApp(clientId,callbackUrl,azuretokenResp);\r\n } */\r\n \r\ngoogleBtnOnMouseOver()\r\n{\r\n alert('hi');\r\n $(\"#googleBtn\").attr('title', 'Sign in with Google');\r\n //document.getElementById('googleBtn')?.setAttribute('title', 'Sign in with Google');\r\n}\r\n ngOnInit(): void {\r\n if(this.langQS !=null && this.langQS!='')\r\n this.appLang=this.langQS;\r\n else\r\n this.appLang='en-us';\r\n this.langSvc.setDefaultLang(this.appLang);\r\n localStorage.setItem('appLang',this.appLang);\r\n this.InitLang();\r\n $('#divProcessingCommon').css(\"display\",\"none\");\r\n //this.disableGoogleButton(this.callBackUrlFromQueryString); //this is temp fix only\r\n this.displaySSOButtons(); \r\n \r\n this.getGoogleTokenResponseAndRedirectToClientApplication();\r\n \r\n }\r\n \r\n generateIframeHtmlElement()\r\n {\r\n this.hidePnlComingSoon();\r\n let clientId= this.getRpostClientId(); \r\n \r\n let callbackUrl=this.getCallBackUrl(); \r\n this.clearLocalStorageTokenResponse();\r\n this.generateDataShareIframeHtmlElement(callbackUrl,clientId);\r\n }\r\n \r\n \r\n \r\n//#region GoogleSociallogin functionality\r\n\r\n \r\n\r\n getGoogleTokenResponseAndRedirectToClientApplication()\r\n {\r\n this.generateIframeHtmlElement();\r\n this.getGoogleAccountDetails();\r\n \r\n }\r\n \r\n getGoogleAccountDetails()\r\n {\r\n let userDetails: any;\r\n this.socialAuthService.authState.subscribe((user) => {\r\n //this.user = user;\r\n userDetails=user;\r\n console.log(userDetails);\r\n if(userDetails!=null)\r\n {\r\n let googleTokenResponseModelObj=this.prepareGoogleTokenResponseObject(userDetails);\r\n let googleTokenResponse=this.getGoogleTokenResponse(googleTokenResponseModelObj);\r\n if(googleTokenResponse!=null && googleTokenResponse!='')\r\n {\r\n this.redirectToClientApplication(googleTokenResponse);\r\n //this.googleAutheService.getAccessToken();\r\n //alert(this.googleAutheService.refreshToken());\r\n }\r\n }\r\n //alert(this.user.authToken);\r\n //alert(userDetails.email);\r\n //this.loggedIn = (user != null);\r\n },\r\n error => {\r\n let errorDesc=error;\r\n this.displayActualErrorInConsole(errorDesc);\r\n this.redirectToClientAppLoginWhenErrorOccured(ErrorReason.GOOGLE_LOGIN_FAILED);\r\n }\r\n );\r\n\r\n //return userDetails;\r\n }\r\n\r\n getGoogleTokenResponse(googleTokenRespDetails:GoogleTokenResponseModel )\r\n {\r\n //todo: to be implemented as similar to azure token response\r\n return this.convertObjToJsonString(googleTokenRespDetails);\r\n \r\n }\r\n\r\n convertObjToJsonString(obj:any)\r\n {\r\n let response;\r\n response= JSON.stringify(obj);\r\n return response;\r\n }\r\n\r\n getGoogleRefreshToken()\r\n {\r\n /* return this.socialAuthService.refreshAuthToken(GoogleLoginProvider.PROVIDER_ID)\r\n .then(refreshToken => this.googleRefreshToken = refreshToken);\r\n */\r\n }\r\n\r\n prepareGoogleTokenResponseObject(userDetails:SocialUser)\r\n {\r\n let googleTokenRespObj=new GoogleTokenResponseModel();\r\n googleTokenRespObj.accesstoken=userDetails.idToken;\r\n googleTokenRespObj.idtoken=userDetails.idToken;\r\n googleTokenRespObj.refreshtoken= ''; // this.getGoogleRefreshToken();\r\n googleTokenRespObj.useremail=userDetails.email;\r\n googleTokenRespObj.username=userDetails.name;\r\n googleTokenRespObj.ssotype=environment.googleProvider;\r\n return googleTokenRespObj;\r\n }\r\n\r\n \r\n//#endregion\r\n \r\n CancelCurrentRequest()\r\n {\r\n window.location.href=this.loginUrlFromQueryString; //+'?errorReason='+ErrorReason.USER_CANCELLED_CURRENT_REQUEST;\r\n\r\n }\r\n\r\n AcquireTokenSilentAndRedirectClientAppIfAlreadyLogggedIn()\r\n {\r\n \r\n if(this.isUserAlreadyLoggedin())\r\n {\r\n //alert('You have already logged in using Azure Sign in');\r\n this.hideSSOButtons();\r\n let clientId= this.getRpostClientId(); \r\n \r\n let callbackUrl= this.getCallBackUrl(); \r\n this.clearLocalStorageTokenResponse();\r\n console.log(\"Before iframe creation\");\r\n this.generateDataShareIframeHtmlElement(callbackUrl,clientId);\r\n console.log(\"After iframe creation\");\r\n let scopeId=environment.scopeId\r\n //acquire token sliently article\r\n //https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/4b74fda49768168768ed427609941566e41456d3/lib/msal-browser/docs/token-lifetimes.md#token-renewal\r\n //user already loggin scenario\r\n //alert('already logged in');\r\n var request = {\r\n //scopes: ['user.read'] //[\"Mail.Read\"]\r\n //scopes: [\"api://8f491afb-add0-4cd4-82a5-f9e477d6a057/.default\"]\r\n scopes: [\"api://\"+scopeId+\"/.default\"],\r\n prompt:'select_account'\r\n };\r\n \r\n this.authService.acquireTokenSilent(request)\r\n .subscribe((result: AuthenticationResult) => {\r\n \r\n\r\n console.log(result);\r\n const payload = result as AuthenticationResult;\r\n \r\n this.authService.instance.setActiveAccount(payload.account);\r\n \r\n let azureTokenRespObj= this.getAzureTokenResponseObjectForAquireTokenSilent(payload);//this.getAzureTokenResponseObject(payload);\r\n let azuretokenresp= this.getAzureTokenJsonResponse(azureTokenRespObj);\r\n //this.azureTokenResponseGv=azuretokenresp;\r\n if(azuretokenresp!=null && azuretokenresp!=\"\")\r\n this.redirectToClientApplication(azuretokenresp);\r\n else\r\n {\r\n let errorReason= ErrorReason.AZURE_TOKEN_EMPTY_RESPONSE_ACQUIRE_TOKEN_SILENT; //\"Azure token response is empty for acquireTokenSilent Method\";\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n }\r\n \r\n \r\n }\r\n ,\r\n error => {\r\n let errorDesc=error;\r\n this.displayActualErrorInConsole(errorDesc);\r\n //AcquireTokenSilent Failure, send an interactive request.\r\n //alert('eeror')\r\n this.authService.acquireTokenPopup(request)\r\n .subscribe((result: AuthenticationResult) => {\r\n \r\n\r\n console.log(result);\r\n const payload = result as AuthenticationResult;\r\n \r\n this.authService.instance.setActiveAccount(payload.account);\r\n \r\n let azureTokenRespObj= this.getAzureTokenResponseObjectForAquireTokenSilent(payload);//this.getAzureTokenResponseObject(payload);\r\n let azuretokenresp= this.getAzureTokenJsonResponse(azureTokenRespObj);\r\n //this.azureTokenResponseGv=azuretokenresp;\r\n if(azuretokenresp!=null && azuretokenresp!=\"\")\r\n this.redirectToClientApplication(azuretokenresp);\r\n else\r\n {\r\n let errorReason= ErrorReason.AZURE_TOKEN_EMPTY_RESPONSE_ACQUIRE_TOKEN_POPUP; //\"Azure token response is empty from acquireTokenPopup method\";\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n }\r\n //this.redirectToClientApplication();\r\n \r\n \r\n }\r\n ,\r\n error => {\r\n \r\n let errorDesc=error;\r\n this.displayActualErrorInConsole(errorDesc);\r\n let errorReason= ErrorReason.ACQUIRE_TOKEN_POPUP_FAILURE;\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n \r\n },\r\n \r\n\r\n );\r\n \r\n \r\n }/* ,\r\n () => {\r\n // 'onCompleted' callback.\r\n // No errors, route to new page here\r\n } */\r\n \r\n );\r\n \r\n this.msalBroadcastService.msalSubject$\r\n .pipe(\r\n filter((msg: EventMessage) => msg.eventType === EventType.ACQUIRE_TOKEN_FAILURE),\r\n )\r\n .subscribe((result: EventMessage) => {\r\n let errorReason=\"ACQUIRE_TOKEN_FAILURE\";\r\n \r\n this.loginPopup();\r\n });\r\n \r\n this.msalBroadcastService.inProgress$\r\n .pipe(\r\n filter((status: InteractionStatus) => status === InteractionStatus.None)\r\n )\r\n .subscribe(() => {\r\n this.setLoginDisplay();\r\n })\r\n \r\n \r\n\r\n }\r\n }\r\n\r\n \r\n async AzureSignIn()\r\n {\r\n /* this.hidePnlComingSoon();\r\n let clientId= this.getRpostClientId(); \r\n \r\n let callbackUrl=this.getCallBackUrl(); \r\n this.clearLocalStorageTokenResponse();\r\n this.generateDataShareIframeHtmlElement(callbackUrl,clientId); */\r\n this.generateIframeHtmlElement();\r\n //this.isIframe = window !== window.parent && !window.opener; // Remove this line to use Angular Universal\r\n //alert('this.isIframe'+this.isIframe);\r\n //alert(location.hash);\r\n\r\n if(!this.isUserAlreadyLoggedin())\r\n {\r\n console.log(\"first time login\");\r\n \r\n await this.firstTimeLoginAndDisplayLoginPopup();\r\n \r\n }\r\n else if(this.isUserAlreadyLoggedin() && \r\n (this.isUnAuthorized!=null && this.isUnAuthorized=='Y') \r\n ||(this.showLoginPopup!=null && this.showLoginPopup=='Y')\r\n )\r\n {\r\n console.log('Already logged in, unauthorized request/unable to login due to some reason case, show loginpopup');\r\n //this.promptForPasswordForUnAuthroizedRequest();\r\n this.chooseAccountToLoginForAlreadyLoggedIn(true);\r\n } \r\n else if(this.isUserAlreadyLoggedin())\r\n {\r\n console.log(\"AlreadyLoggedIn\");\r\n //this.AcquireTokenSilentAndRedirectClientAppIfAlreadyLogggedIn();\r\n this.chooseAccountToLoginForAlreadyLoggedIn(false);\r\n }\r\n }\r\n\r\n async firstTimeLoginAndDisplayLoginPopup()\r\n {\r\n await this.loginPopup();\r\n this.hideSSOButtons();\r\n await this.msalBroadcastService.msalSubject$\r\n .pipe(\r\n filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS),\r\n )\r\n .subscribe((result: EventMessage) => {\r\n console.log(result);\r\n const payload = result.payload as AuthenticationResult;\r\n \r\n this.authService.instance.setActiveAccount(payload.account);\r\n \r\n let azureTokenRespObj=this.getAzureTokenResponseObject(payload);\r\n let azuretokenresp= this.getAzureTokenJsonResponse(azureTokenRespObj);\r\n localStorage.setItem(\"azureTokenRespLocalStorage\",azuretokenresp);\r\n \r\n if(azuretokenresp!=null && azuretokenresp!=\"\")\r\n this.redirectToClientApplication(azuretokenresp);\r\n else\r\n {\r\n let errorReason= ErrorReason.AZURE_TOKEN_EMPTY_RESPONSE_FIRST_TIME_LOGIN; //\"Azure token response is empty for First time azure login\";\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n }\r\n }\r\n ,\r\n error => {\r\n \r\n \r\n var errorDesc=error.toString();\r\n let errorReason=''\r\n \r\n if(typeof errorDesc == \"string\" && errorDesc.indexOf(ErrorReason.CONSENT_REQUIRED) > -1)\r\n {\r\n errorReason= ErrorReason.CONSENT_REQUIRED;\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n }\r\n else\r\n {\r\n this.displayActualErrorInConsole(errorDesc);\r\n errorReason=ErrorReason.UNKNOWN_ERROR_OCCURED;\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n }\r\n },\r\n );\r\n \r\n await this.msalBroadcastService.inProgress$\r\n .pipe(\r\n filter((status: InteractionStatus) => status === InteractionStatus.None)\r\n )\r\n .subscribe(() => {\r\n this.setLoginDisplay();\r\n })\r\n \r\n this.msalBroadcastService.msalSubject$\r\n .pipe(\r\n filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_FAILURE),\r\n )\r\n .subscribe((result: EventMessage) => {\r\n \r\n if(localStorage.getItem(\"IsPopupClosedFromRCAP\")==null)\r\n {\r\n let errorReason= ErrorReason.AZURE_LOGIN_FAILURE; //\"AZURE_LOGIN_FAILURE\";\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n }\r\n else if(localStorage.getItem(\"IsPopupClosedFromRCAP\")!=null \r\n && localStorage.getItem(\"IsPopupClosedFromRCAP\")=='Y')\r\n {\r\n localStorage.removeItem(\"IsPopupClosedFromRCAP\");\r\n let azuretokenresp=null;\r\n if(localStorage.getItem(\"azureTokenRespLocalStorage\")!=null)\r\n azuretokenresp=localStorage.getItem(\"azureTokenRespLocalStorage\");\r\n if(azuretokenresp!=null && azuretokenresp!=\"\")\r\n this.redirectToClientApplication(azuretokenresp);\r\n else\r\n {\r\n let errorReason= ErrorReason.AZURE_TOKEN_EMPTY_RESPONSE_FIRST_TIME_LOGIN;//\"Azure token response is empty for First time azure login\";\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n }\r\n //window.location.href=this.callBackUrlFromQueryString;\r\n }\r\n \r\n });\r\n\r\n }\r\n \r\n chooseAccountToLoginForAlreadyLoggedIn(IsUnAuthorized:boolean)\r\n {\r\n this.hideSSOButtons();\r\n if(IsUnAuthorized)\r\n console.log(\"already logged in, but unauthorized, autologin\");\r\n else\r\n console.log(\"already logged in\");\r\n\r\n let scopeId=environment.scopeId\r\n \r\n var request = {\r\n scopes: [\"api://\"+scopeId+\"/.default\"],\r\n prompt:'select_account'\r\n };\r\n this.authService.loginPopup(request)\r\n .subscribe((result: AuthenticationResult) => {\r\n \r\n\r\n console.log(result);\r\n const payload = result as AuthenticationResult;\r\n \r\n this.authService.instance.setActiveAccount(payload.account);\r\n \r\n let azureTokenRespObj= this.getAzureTokenResponseObjectForAquireTokenSilent(payload);//this.getAzureTokenResponseObject(payload);\r\n let azuretokenresp= this.getAzureTokenJsonResponse(azureTokenRespObj);\r\n //this.azureTokenResponseGv=azuretokenresp;\r\n if(azuretokenresp!=null && azuretokenresp!=\"\")\r\n this.redirectToClientApplication(azuretokenresp);\r\n else\r\n {\r\n let errorReason= ErrorReason.AZURE_TOKEN_EMPTY_RESPONSE_ACQUIRE_TOKEN_POPUP;//\"Azure token response is empty from acquireTokenPopup method\";\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n }\r\n //this.redirectToClientApplication();\r\n \r\n \r\n }\r\n ,\r\n \r\n error => {\r\n \r\n //if(IsUnAuthorized)\r\n //{\r\n var errorDesc=error.toString();\r\n let errorReason=''\r\n //alert(typeof errorDesc);\r\n if(typeof errorDesc == \"string\" && errorDesc.indexOf(ErrorReason.USER_CANCELLED) > -1)\r\n {\r\n errorReason= ErrorReason.USER_CANCELLED_FROM_UNAUTHORIZED_AT_LOGIN_POPUP;\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n //this.acquireTokenSilientImpl(request);\r\n }\r\n else\r\n {\r\n this.displayActualErrorInConsole(errorDesc);\r\n errorReason=ErrorReason.UNKNOWN_ERROR_OCCURED;\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n }\r\n \r\n //}\r\n /* else\r\n {\r\n this.authService.acquireTokenSilent(request)\r\n .subscribe((result: AuthenticationResult) => {\r\n //alert('acquire token silent');\r\n //alert(result.accessToken);\r\n\r\n console.log(result);\r\n const payload = result as AuthenticationResult;\r\n \r\n this.authService.instance.setActiveAccount(payload.account);\r\n \r\n let azureTokenRespObj= this.getAzureTokenResponseObjectForAquireTokenSilent(payload);//this.getAzureTokenResponseObject(payload);\r\n let azuretokenresp= this.getAzureTokenJsonResponse(azureTokenRespObj);\r\n //this.azureTokenResponseGv=azuretokenresp;\r\n if(azuretokenresp!=null && azuretokenresp!=\"\")\r\n this.redirectToClientApplication(azuretokenresp);\r\n else\r\n {\r\n let errorReason= ErrorReason.AZURE_TOKEN_EMPTY_RESPONSE_ACQUIRE_TOKEN_SILENT; //\"Azure token response is empty for acquireTokenSilent Method\";\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n }\r\n \r\n \r\n }\r\n ,\r\n error => {\r\n let errorDesc=error;\r\n this.displayActualErrorInConsole(errorDesc);\r\n //AcquireTokenSilent Failure, send an interactive request.\r\n //alert('eeror')\r\n this.authService.acquireTokenPopup(request)\r\n .subscribe((result: AuthenticationResult) => {\r\n //alert('acquire token silent');\r\n //alert(result.accessToken);\r\n\r\n console.log(result);\r\n const payload = result as AuthenticationResult;\r\n \r\n this.authService.instance.setActiveAccount(payload.account);\r\n \r\n let azureTokenRespObj= this.getAzureTokenResponseObjectForAquireTokenSilent(payload);//this.getAzureTokenResponseObject(payload);\r\n let azuretokenresp= this.getAzureTokenJsonResponse(azureTokenRespObj);\r\n //this.azureTokenResponseGv=azuretokenresp;\r\n if(azuretokenresp!=null && azuretokenresp!=\"\")\r\n this.redirectToClientApplication(azuretokenresp);\r\n else\r\n {\r\n let errorReason= ErrorReason.AZURE_TOKEN_EMPTY_RESPONSE_ACQUIRE_TOKEN_POPUP; //\"Azure token response is empty from acquireTokenPopup method\";\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n }\r\n //this.redirectToClientApplication();\r\n \r\n \r\n }\r\n ,\r\n error => {\r\n \r\n let errorDesc=error;\r\n this.displayActualErrorInConsole(errorDesc);\r\n let errorReason= ErrorReason.ACQUIRE_TOKEN_POPUP_FAILURE;\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n \r\n },\r\n \r\n\r\n );\r\n \r\n \r\n }\r\n \r\n );\r\n\r\n } */\r\n \r\n },\r\n );\r\n\r\n }\r\n\r\n //acquire token token siliently when any error occured during login popup account selection/ for any idle time scenario\r\n acquireTokenSilientImpl(request:any)\r\n {\r\n console.log(\"acquireTokenSilientImpl\");\r\n this.authService.acquireTokenSilent(request)\r\n .subscribe((result: AuthenticationResult) => {\r\n \r\n\r\n console.log(result);\r\n const payload = result as AuthenticationResult;\r\n \r\n this.authService.instance.setActiveAccount(payload.account);\r\n \r\n let azureTokenRespObj= this.getAzureTokenResponseObjectForAquireTokenSilent(payload);//this.getAzureTokenResponseObject(payload);\r\n let azuretokenresp= this.getAzureTokenJsonResponse(azureTokenRespObj);\r\n //this.azureTokenResponseGv=azuretokenresp;\r\n if(azuretokenresp!=null && azuretokenresp!=\"\")\r\n this.redirectToClientApplication(azuretokenresp);\r\n else\r\n {\r\n let errorReason= ErrorReason.AZURE_TOKEN_EMPTY_RESPONSE_ACQUIRE_TOKEN_SILENT; //\"Azure token response is empty for acquireTokenSilent Method\";\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n }\r\n \r\n \r\n }\r\n ,\r\n error => {\r\n console.log(\"error at acquireTokenSilientImpl method call\");\r\n let errorDesc=error;\r\n this.displayActualErrorInConsole(errorDesc);\r\n //AcquireTokenSilent Failure, send an interactive request.\r\n //alert('eeror')\r\n this.authService.acquireTokenPopup(request)\r\n .subscribe((result: AuthenticationResult) => {\r\n \r\n\r\n console.log(result);\r\n const payload = result as AuthenticationResult;\r\n \r\n this.authService.instance.setActiveAccount(payload.account);\r\n \r\n let azureTokenRespObj= this.getAzureTokenResponseObjectForAquireTokenSilent(payload);//this.getAzureTokenResponseObject(payload);\r\n let azuretokenresp= this.getAzureTokenJsonResponse(azureTokenRespObj);\r\n //this.azureTokenResponseGv=azuretokenresp;\r\n if(azuretokenresp!=null && azuretokenresp!=\"\")\r\n this.redirectToClientApplication(azuretokenresp);\r\n else\r\n {\r\n let errorReason= ErrorReason.AZURE_TOKEN_EMPTY_RESPONSE_ACQUIRE_TOKEN_POPUP; //\"Azure token response is empty from acquireTokenPopup method\";\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n }\r\n //this.redirectToClientApplication();\r\n \r\n \r\n }\r\n ,\r\n error => {\r\n console.log(\"error at acquireTokenPopup method call\");\r\n let errorDesc=error;\r\n this.displayActualErrorInConsole(errorDesc);\r\n let errorReason= ErrorReason.ACQUIRE_TOKEN_POPUP_FAILURE;\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n \r\n },\r\n \r\n\r\n );\r\n \r\n \r\n }\r\n \r\n );\r\n\r\n }\r\n\r\n /* promptForPasswordForUnAuthroizedRequest()\r\n {\r\n this.hideSSOButtons();\r\n console.log(\"already logged in, but unauthorized, autologin\");\r\n let scopeId=environment.scopeId\r\n \r\n var request = {\r\n //scopes: ['user.read'] //[\"Mail.Read\"]\r\n //scopes: [\"api://8f491afb-add0-4cd4-82a5-f9e477d6a057/.default\"]\r\n scopes: [\"api://\"+scopeId+\"/.default\"],\r\n //loginHint:'',\r\n prompt:'select_account'\r\n };\r\n this.authService.loginPopup(request)\r\n .subscribe((result: AuthenticationResult) => {\r\n //alert('acquire token silent');\r\n //alert(result.accessToken);\r\n\r\n console.log(result);\r\n const payload = result as AuthenticationResult;\r\n \r\n this.authService.instance.setActiveAccount(payload.account);\r\n \r\n let azureTokenRespObj= this.getAzureTokenResponseObjectForAquireTokenSilent(payload);//this.getAzureTokenResponseObject(payload);\r\n let azuretokenresp= this.getAzureTokenJsonResponse(azureTokenRespObj);\r\n //this.azureTokenResponseGv=azuretokenresp;\r\n if(azuretokenresp!=null && azuretokenresp!=\"\")\r\n this.redirectToClientApplication(azuretokenresp);\r\n else\r\n {\r\n let errorReason= ErrorReason.AZURE_TOKEN_EMPTY_RESPONSE_ACQUIRE_TOKEN_POPUP;//\"Azure token response is empty from acquireTokenPopup method\";\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n }\r\n //this.redirectToClientApplication();\r\n \r\n \r\n }\r\n ,\r\n \r\n error => {\r\n \r\n //alert(error);\r\n var errorDesc=error.toString();\r\n let errorReason=''\r\n //alert(typeof errorDesc);\r\n if(typeof errorDesc == \"string\" && errorDesc.indexOf(ErrorReason.USER_CANCELLED) > -1)\r\n {\r\n //errorReason= ErrorReason.USER_CANCELLED_FROM_UNAUTHORIZED_AT_LOGIN_POPUP;\r\n //this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n this.acquireTokenSilientImpl(request);\r\n }\r\n else\r\n {\r\n this.displayActualErrorInConsole(errorDesc);\r\n errorReason=ErrorReason.UNKNOWN_ERROR_OCCURED;\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n }\r\n },\r\n );\r\n\r\n \r\n } */\r\n\r\n getAzureTokenResponseObject(payload:AuthenticationResult)\r\n {\r\n let refreshtokenObj=this.auzureTokenRespService.getRefreshTokenJsonFromLocalStorage()\r\n let azureTokenRespObj=new AzureTokenResponseModel();\r\n azureTokenRespObj.accesstoken= payload.accessToken;//payload.idToken;\r\n azureTokenRespObj.useremail=payload.account?.username!;\r\n azureTokenRespObj.username=payload.account?.name!;\r\n azureTokenRespObj.idtoken=payload.idToken;\r\n azureTokenRespObj.refreshtoken=refreshtokenObj.secret; \r\n azureTokenRespObj.ssotype=environment.azureADProvider;\r\n return azureTokenRespObj;\r\n }\r\n\r\n getAzureTokenResponseObjectForAquireTokenSilent(payload:AuthenticationResult)\r\n {\r\n /* let refreshtokenObj=this.auzureTokenRespService.getRefreshTokenJsonFromLocalStorage()\r\n let azureTokenRespObj=new AzureTokenResponseModel();\r\n azureTokenRespObj.accesstoken= payload.accessToken;\r\n azureTokenRespObj.useremail=payload.account?.username!;\r\n azureTokenRespObj.username=payload.account?.name!;\r\n azureTokenRespObj.idtoken=payload.idToken;\r\n azureTokenRespObj.refreshtoken=refreshtokenObj.secret; \r\n azureTokenRespObj.ssotype=environment.azureADProvider;\r\n return azureTokenRespObj; */\r\n return this.getAzureTokenResponseObject(payload);\r\n }\r\n\r\n /* getAzureTokenResponseObjectForAlreadySingleSingON()\r\n {\r\n let refreshtokenObj=this.auzureTokenRespService.getRefreshTokenJsonFromLocalStorage()\r\n let idTokenObj=this.auzureTokenRespService.getIdTokenJsonFromLocalStorage();\r\n let accessTokenObj=this.auzureTokenRespService.getAccessTokenJsonFromLocalStorage();\r\n let idTokenClaimsObj=this.auzureTokenRespService.getIdTokenCliamsJsonFromLocalStorage();\r\n let azureTokenRespObj=new AzureTokenResponseModel();\r\n azureTokenRespObj.accesstoken= accessTokenObj.secret; //idTokenObj.secret;//accessTokenObj.secret;\r\n azureTokenRespObj.useremail=idTokenClaimsObj.username;\r\n azureTokenRespObj.username=idTokenClaimsObj.name;\r\n azureTokenRespObj.idtoken=idTokenObj.secret;\r\n azureTokenRespObj.refreshtoken=refreshtokenObj.secret; \r\n azureTokenRespObj.ssotype=environment.azureADProvider;\r\n return azureTokenRespObj;\r\n } */\r\n\r\n setLoginDisplay() {\r\n this.loginDisplay = this.authService.instance.getAllAccounts().length > 0;\r\n if(this.loginDisplay)\r\n $('#btnLogout').css('display','block');\r\n \r\n }\r\n\r\n checkAndSetActiveAccount(){\r\n /**\r\n * If no active account set but there are accounts signed in, sets first account to active account\r\n * To use active account set here, subscribe to inProgress$ first in your component\r\n * Note: Basic usage demonstrated. Your app may require more complicated account selection logic\r\n */\r\n let activeAccount = this.authService.instance.getActiveAccount();\r\n\r\n if (!activeAccount && this.authService.instance.getAllAccounts().length > 0) {\r\n let accounts = this.authService.instance.getAllAccounts();\r\n this.authService.instance.setActiveAccount(accounts[0]);\r\n }\r\n }\r\n\r\n async loginPopup() {\r\n let scopeId= environment.scopeId;\r\n var request = {\r\n scopes: [\"api://\"+scopeId+\"/.default\"],\r\n prompt:'select_account'\r\n };\r\n \r\n if (this.msalGuardConfig.authRequest){\r\n /* await this.authService.loginPopup({...this.msalGuardConfig.authRequest} as PopupRequest) */\r\n await this.authService.loginPopup(request)\r\n .subscribe((response: AuthenticationResult) => {\r\n this.authService.instance.setActiveAccount(response.account);\r\n },\r\n error => {\r\n \r\n var errorDesc=error.toString();\r\n let errorReason=''\r\n this.displayActualErrorInConsole(errorDesc);\r\n if(typeof errorDesc == \"string\" && errorDesc.indexOf(ErrorReason.USER_CANCELLED) > -1)\r\n {\r\n errorReason= ErrorReason.USER_CANCELLED;\r\n \r\n }\r\n else\r\n {\r\n errorReason= ErrorReason.MSAL_GUARD_CONFIG_AUTH_REQUEST_LOGIN_POPUP_FAILURE;\r\n \r\n }\r\n //this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n \r\n },\r\n );\r\n } else {\r\n await this.authService.loginPopup()\r\n .subscribe((response: AuthenticationResult) => {\r\n this.authService.instance.setActiveAccount(response.account);\r\n },\r\n error => {\r\n let errorDesc=error;\r\n this.displayActualErrorInConsole(errorDesc);\r\n let errorReason= ErrorReason.LOGIN_POPUP_FAILURE;\r\n this.redirectToClientAppLoginWhenErrorOccured(errorReason);\r\n \r\n },\r\n );\r\n \r\n }\r\n \r\n }\r\n\r\ndisplayPnlComingSoon()\r\n{\r\n $('#pnlComingSoon').css(\"display\",\"block\");\r\n setTimeout(function () {\r\n $('#pnlComingSoon').css(\"display\",\"none\");\r\n }, 2000);\r\n \r\n}\r\n\r\nhidePnlComingSoon()\r\n{\r\n $('#pnlComingSoon').css(\"display\",\"none\");\r\n}\r\n\r\nredirectToClientAppLoginWhenErrorOccured(errorDesc:string)\r\n{\r\n console.log(\"error is \" + errorDesc);\r\n this.clearLocalStorage();\r\n window.location.href= this.clientAppLoginUrl +\"?errorReason=\"+errorDesc;\r\n}\r\n\r\ndisplayActualErrorInConsole(errorDesc:string)\r\n{\r\n console.log('actual error is');\r\n console.log(errorDesc);\r\n}\r\n\r\n logout(popup?: boolean) {\r\n let returnUrl=window.location.href; \r\n let clientId= this.getRpostClientId();\r\n \r\n let callbackUrl= this.getCallBackUrl(); \r\n \r\n if (popup) {\r\n this.authService.logoutPopup({\r\n \r\n mainWindowRedirectUri:returnUrl\r\n \r\n });\r\n } else {\r\n this.authService.logoutRedirect();\r\n }\r\n }\r\n /* callRCAPExternalTokenAPI(providerAccessToken:string)\r\n {\r\n \r\n var externalTokenModelObj=new ExternalTokenModel();\r\n var clientId=localStorage.getItem(\"clienIdLS\")!;\r\n \r\n if(clientId==null)\r\n {\r\n alert(clientId);\r\n return;\r\n }\r\n externalTokenModelObj.Client_Id=clientId;\r\n externalTokenModelObj.provider='AzureAD'; //To DO: Need to Remove hardcoded value\r\n externalTokenModelObj.provider_access_token=providerAccessToken;\r\n\r\n this.rpostAuthService.getExternalTokenAPIResponseToken(externalTokenModelObj)\r\n .subscribe(async resp => {\r\n \r\n const response = resp as IExternalTokenResponseDetails;\r\n localStorage.setItem(\"extTokenAPIResponse_\"+clientId,resp.toString()); \r\n let callbackUrl= this.getCallBackUrl();//localStorage.getItem(\"callbackUrl_\"+clientId)!;\r\n this.postLocalStorageData(callbackUrl, 'trackingportal');\r\n window.location.href = callbackUrl;\r\n \r\n });\r\n } */\r\n\r\n generateDataShareIframeHtmlElement(callbackUrl:string,rpostClientId:string)\r\n {\r\n //removeIframeElement(rpostClientId);\r\n const iframe = document.createElement('IFRAME');\r\n iframe.id = 'receiverSOS1_'+rpostClientId;\r\n //iframe.id = 'receiverIframe';\r\n iframe.style.display = \"none\";\r\n iframe.style.width=\"1px\";\r\n //iframe.sandbox=\"allow-storage-access-by-user-activation allow-scripts allow-same-origin\"\r\n (iframe).src = callbackUrl; \r\n document.body.appendChild(iframe);\r\n \r\n }\r\n\r\n postLocalStorageData(linkURL: any, portal: any) {\r\n \r\n this.dataShareService.postCrossDomainMessage(linkURL, portal);\r\n }\r\n\r\n isUserAlreadyLoggedin()\r\n {\r\n let isLoggedIn = this.authService.instance.getAllAccounts().length > 0;\r\n /* if(isLoggedIn)\r\n this.setAzureTokenResponseFromCookie(); */\r\n return isLoggedIn;\r\n }\r\n\r\n /* setAzureTokenResponseIntoLocalStorage(clientId:string,azureTokenResp:string)\r\n {\r\n localStorage.setItem(\"azuretokenresp_\"+clientId,azureTokenResp);\r\n } */\r\n /* setAzureTokenResponseFromCookie()\r\n {\r\n let clientId=this.getRpostClientId();\r\n let azureTokenRespFromCookie=this.getCookie(clientId);\r\n let azureTokenResponseFromLocalStorage=localStorage.getItem(\"azuretokenresp_\"+ this.getAzureClientId());\r\n if((azureTokenResponseFromLocalStorage==null\r\n || azureTokenResponseFromLocalStorage ==undefined)\r\n &&(azureTokenRespFromCookie!=null && azureTokenRespFromCookie!=undefined)\r\n )\r\n {\r\n \r\n //localStorage.setItem(\"azuretokenresp_\"+ clientId,azureTokenRespFromCookie); \r\n this.setAzureTokenResponseIntoLocalStorage(clientId,azureTokenRespFromCookie);\r\n }\r\n }\r\n */\r\n getRpostClientId()\r\n {\r\n \r\n return this.clientIdFromQueryString;\r\n }\r\n\r\n getCallBackUrl()\r\n {\r\n \r\n\r\n return this.callBackUrlFromQueryString;\r\n }\r\n\r\n getAzureClientId()\r\n {\r\n return environment.azureSSOClientId;\r\n }\r\n getAzureTokenJsonResponse(azureTokenRespObj:AzureTokenResponseModel)\r\n {\r\n let response;\r\n response= JSON.stringify(azureTokenRespObj);\r\n \r\n\r\n return response;\r\n }\r\n clearLocalStorageTokenResponse()\r\n {\r\n let clientId= this.getRpostClientId();\r\n \r\n localStorage.removeItem(\"azuretokenresp_\"+this.getAzureClientId());\r\n }\r\n\r\n redirectToClientApplication(azureTokenResponse:string)\r\n {\r\n \r\n this.onLoad(azureTokenResponse);\r\n //this.dataShareService.postCrossDomainMessage(\"test\");\r\n }\r\n \r\n\r\n onLoad(azureTokenResponse:string) {\r\n let clientId= this.getRpostClientId(); \r\n let callbackUrl= this.getCallBackUrl();\r\n //alert(callbackUrl);\r\n let azuretokenResp= azureTokenResponse; \r\n \r\n const date = new Date();\r\n \r\n \r\n console.log('is window:load');\r\n var iframe = document.getElementById(\"receiverSOS1_\"+clientId); \r\n //const iframe = document.getElementById(\"receiverIframe\");\r\n console.log(iframe);\r\n //alert(iframe)\r\n //if (iframe == null) { return; }\r\n if (iframe == null) { \r\n this.generateDataShareIframeHtmlElement(callbackUrl,clientId);\r\n iframe = document.getElementById(\"receiverSOS1_\"+clientId); \r\n }\r\n const iWindow = (iframe as HTMLIFrameElement).contentWindow!;\r\n let msgToPost= JSON.stringify(azuretokenResp);\r\n \r\n if(msgToPost!=null && msgToPost!='')\r\n console.log('Azure token response exists');\r\n else\r\n console.log('Azure token response not exists');\r\n\r\n //let domainUrl=getDomainUrl(callbackUrl);\r\n \r\n\r\n this.displaySpinner();\r\n /* iWindow.addEventListener(\"load\", function() {\r\n console.log(\"Finish\");\r\n this.alert('iframe loaded');\r\n });\r\n */\r\n if(iframe!=null && msgToPost!=null && msgToPost!='')\r\n {\r\n this.clearLocalStorage();\r\n iWindow.postMessage(msgToPost, '*');\r\n setTimeout(function () {\r\n //iWindow.postMessage(msgToPost, callbackUrl);\r\n \r\n //alert(callbackUrl);\r\n console.log('callbackUr is ' + callbackUrl);\r\n \r\n window.location.href=callbackUrl; \r\n }, 1000);\r\n }\r\n else\r\n {\r\n let errorDesc='';\r\n if(iframe ==null)\r\n {\r\n errorDesc=ErrorReason.COULD_NOT_ABLE_TO_SEND_MESSAGE;\r\n \r\n this.redirectToClientAppLoginWhenErrorOccured(errorDesc);\r\n \r\n }\r\n else if(msgToPost==null || msgToPost=='')\r\n {\r\n errorDesc=ErrorReason.AZURE_TOKEN_EMPTY_RESPONSE_BEFORE_SENDING_MESSAGE;\r\n }\r\n\r\n }\r\n \r\n \r\n \r\n}\r\n\r\nclearLocalStorage()\r\n{\r\n localStorage.clear();\r\n}\r\n\r\n setCookie(name: string, value: string, expireDays: number, path: string = '') {\r\n let d:Date = new Date();\r\n d.setTime(d.getTime() + expireDays * 24 * 60 * 60 * 1000);\r\n let expires:string = `expires=${d.toUTCString()}`;\r\n let cpath:string = path ? `; path=${path}` : '';\r\n document.cookie = `${name}=${value}; ${expires}${cpath}`;\r\n}\r\n\r\nprivate getCookie(name: string) {\r\n let ca: Array = document.cookie.split(';');\r\n let caLen: number = ca.length;\r\n let cookieName = `${name}=`;\r\n let c: string;\r\n\r\n for (let i: number = 0; i < caLen; i += 1) {\r\n c = ca[i].replace(/^\\s+/g, '');\r\n if (c.indexOf(cookieName) == 0) {\r\n return c.substring(cookieName.length, c.length);\r\n }\r\n }\r\n return '';\r\n}\r\n\r\nprivate deleteCookie(name:string) {\r\n this.setCookie(name, '', -1);\r\n}\r\n\r\n\r\n} \r\n\r\n\r\n\r\nfunction getDomainUrl(callbackUrl: any)\r\n{\r\n var str = callbackUrl , \r\n delimiter = '/',\r\n start = 3,\r\n tokens = str.split(delimiter).slice(start),\r\n result = tokens.join(delimiter); \r\n \r\nconsole.log(result)\r\n\r\n// To get the substring BEFORE the nth occurence\r\nvar tokens2 = str.split(delimiter).slice(0, start),\r\n result2 = tokens2.join(delimiter); // this\r\n\r\nconsole.log(result2)\r\nreturn result2\r\n}\r\n\r\n/* function getRefreshTokenJsonFromLocalStorage() {\r\n\r\n var values = [],\r\n keys = Object.keys(localStorage),\r\n i = keys.length;\r\n var localStorageItem=''\r\n while ( i-- ) {\r\n if(keys[i].indexOf('login.windows.net-refreshtoken')!=-1)\r\n {\r\n localStorageItem=localStorage.getItem(keys[i])!;\r\n break;\r\n }\r\n \r\n }\r\n let jsonObj: any = JSON.parse(localStorageItem); \r\n return jsonObj;\r\n} */\r\n\r\nfunction removeIframeElement(rpostClientId:string)\r\n{\r\n document.getElementById('receiverSOS1_'+rpostClientId)?.remove();\r\n}\r\n\r\nfunction detectPopupBlocker()\r\n {\r\n \r\n var isPopupblocker=false;\r\n var windowUrl = 'about:blank';\r\n var windowId = 'TestPopup_' + new Date().getTime();\r\n var windowFeatures = 'left=0%,top=0%,width=0.1%,height=0.1%';\r\n var windowRef = window.open(windowUrl, windowId, windowFeatures);\r\n\r\n if ( !windowRef )\r\n {\r\n //alert('A popup blocker was detected. Please turn it off to use this application.');\r\n //return false;\r\n $('#pnlPopupblockerMsg').css(\"display\",\"block\");\r\n isPopupblocker=true;\r\n }\r\n else\r\n {\r\n // No popup blocker was detected...\r\n windowRef.close();\r\n isPopupblocker=false;\r\n $('#pnlPopupblockerMsg').css(\"display\",\"none\");\r\n //document.getElementById('pageContent').style.display = 'block';\r\n }\r\n\r\n return isPopupblocker;\r\n }\r\n\r\n function postMessageToClientAppIfUserAlreadyLoggedin(clientId:string,callbackUrl:string,azuretokenResp:string)\r\n {\r\n alert('postMessageToClientApp');\r\n //const iframeWin = document.getElementById('h5-iframe').contentWindow;\r\n const iframe = document.getElementById(\"receiverSOS1_\"+clientId); \r\n //const iframe = document.getElementById(\"receiverIframe\");\r\n console.log(iframe);\r\n //let azuretokenResp= this.azureTokenResponseGv;\r\n var msgToPost= JSON.stringify(azuretokenResp);\r\n //alert(iframe)\r\n if (iframe == null) { return; }\r\n const iWindow = (iframe as HTMLIFrameElement).contentWindow!;\r\n window.addEventListener(\r\n 'message',\r\n (e) => {\r\n const { data } = e;\r\n console.log('receive page load', data);\r\n if (data.pageLoaded) {\r\n /* iframeWin.postMessage(\"hello\", '*'); */\r\n // setTimeout(function () {\r\n iWindow.postMessage(\"rrrrr\", '*');\r\n \r\n /* if(callbackUrl.indexOf('?IsAzureSSO=Y')==-1)\r\n callbackUrl=callbackUrl+\"?IsAzureSSO=Y\"; */\r\n //alert('callbackUrl'+callbackUrl);\r\n window.location.href=callbackUrl; \r\n //}, 1000);\r\n \r\n }\r\n else{\r\n alert('iframe page is not loaded');\r\n setTimeout(function () {\r\n iWindow.postMessage('not', '*');\r\n \r\n /* if(callbackUrl.indexOf('?IsAzureSSO=Y')==-1)\r\n callbackUrl=callbackUrl+\"?IsAzureSSO=Y\"; */\r\n //alert('callbackUrl'+callbackUrl);\r\n window.location.href=callbackUrl; \r\n }, 1000);\r\n }\r\n },\r\n false,\r\n );\r\n }\r\n\r\nfunction displaySpinner() {\r\n throw new Error('Function not implemented.');\r\n}\r\n\r\nfunction handleGoogleToken(response:any)\r\n{\r\n console.log(response);\r\n alert(response);\r\n //this.getGoogleTokenResponseAndRedirectToClientApplication();\r\n}\r\n\r\nfunction handleCredentialResponse() {\r\n // decodeJwtResponse() is a custom function defined by you\r\n // to decode the credential response.\r\n //const responsePayload = decodeJwtResponse(response.credential);\r\n\r\n /* console.log(\"ID: \" + responsePayload.sub);\r\n console.log('Full Name: ' + responsePayload.name);\r\n console.log('Given Name: ' + responsePayload.given_name);\r\n console.log('Family Name: ' + responsePayload.family_name);\r\n console.log(\"Image URL: \" + responsePayload.picture);\r\n console.log(\"Email: \" + responsePayload.email); */\r\n alert('google login');\r\n}\r\n\r\n/* function trackGoogleLoginPopupClose()\r\n{\r\n window.onload = function () {\r\n google.accounts.id.initialize({\r\n\r\n // Ref: https://developers.google.com/identity/gsi/web/reference/js-reference#IdConfiguration\r\n client_id: environment.googleSSOClientId,\r\n //callback: this.handleCredentialResponse.bind(this), // Whatever function you want to trigger...\r\n auto_select: false,\r\n ux_mode: 'popup',\r\n cancel_on_tap_outside: false\r\n });\r\n google.accounts.id.prompt((notification) => {\r\n if (notification.getDismissedReason()=='cancel_called') {\r\n // continue with another identity provider.\r\n alert('cancel');\r\n }\r\n });\r\n };\r\n} */\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n

{{\"SSOAuthentication.LoginWithText\" | translate}}

\r\n \r\n
\r\n \r\n
{{\"SSOAuthentication.AccountText\" | translate}}\r\n
\r\n
\r\n \r\n

{{\"SSOAuthentication.RedirectText\" | translate}}

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

Coming soon..

\r\n
\r\n
\r\n
Go to settings and disable the popup block.
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AzureTokenResponseService {\r\n\r\n constructor() { }\r\n\r\n getRefreshTokenJsonFromLocalStorage() {\r\n\r\n var values = [],\r\n keys = Object.keys(localStorage),\r\n i = keys.length;\r\n var localStorageItem=''\r\n while ( i-- ) {\r\n if(keys[i].indexOf('login.windows.net-refreshtoken')!=-1)\r\n {\r\n localStorageItem=localStorage.getItem(keys[i])!;\r\n break;\r\n }\r\n \r\n }\r\n let jsonObj: any = JSON.parse(localStorageItem); \r\n return jsonObj;\r\n }\r\n\r\n getIdTokenJsonFromLocalStorage() {\r\n\r\n var values = [],\r\n keys = Object.keys(localStorage),\r\n i = keys.length;\r\n var localStorageItem=''\r\n while ( i-- ) {\r\n if(keys[i].indexOf('login.windows.net-idtoken')!=-1)\r\n {\r\n localStorageItem=localStorage.getItem(keys[i])!;\r\n break;\r\n }\r\n \r\n }\r\n let jsonObj: any = JSON.parse(localStorageItem); \r\n return jsonObj;\r\n }\r\n\r\n getAccessTokenJsonFromLocalStorage() {\r\n\r\n var values = [],\r\n keys = Object.keys(localStorage),\r\n i = keys.length;\r\n var localStorageItem=''\r\n while ( i-- ) {\r\n if(keys[i].indexOf('login.windows.net-accesstoken')!=-1)\r\n {\r\n localStorageItem=localStorage.getItem(keys[i])!;\r\n break;\r\n }\r\n \r\n }\r\n let jsonObj: any = JSON.parse(localStorageItem); \r\n return jsonObj;\r\n }\r\n\r\n getIdTokenCliamsJsonFromLocalStorage() {\r\n\r\n var values = [],\r\n keys = Object.keys(localStorage),\r\n i = keys.length;\r\n var localStorageItem=''\r\n while ( i-- ) {\r\n if(keys[i].indexOf('login.windows.net')!=-1\r\n && keys[i].indexOf('login.windows.net-refreshtoken')==-1\r\n && keys[i].indexOf('login.windows.net-idtoken')==-1 \r\n && keys[i].indexOf('login.windows.net-accesstoken')==-1)\r\n {\r\n localStorageItem=localStorage.getItem(keys[i])!;\r\n break;\r\n }\r\n \r\n }\r\n let jsonObj: any = JSON.parse(localStorageItem); \r\n return jsonObj;\r\n }\r\n \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ConversionUtils } from 'turbocommons-ts';\r\nimport { ErrorReason } from '../Model/ErrorReasonModel';\r\nimport { JwtToken, ResponseMsgToClient } from '../Model/MFA/ResponseMsgToClient';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommonUtilService {\r\n [x: string]: any;\r\n checkTimer:any;\r\n constructor() { }\r\n \r\n setCookie (cname: string) {\r\n // start timer to wait for cookie\r\n this.checkTimer = window.setInterval(function () {\r\n\r\n if (document.cookie.indexOf(cname) !== -1) {\r\n // hide spinner\r\n \r\n $('#divDownloading').fadeOut(4000);\r\n //window.clearTimeout(checkTimer);\r\n document.cookie = encodeURIComponent(cname) + \"=deleted; expires=\" + new Date(0).toUTCString();\r\n \r\n }\r\n }, 100);\r\n};\r\n\r\n expireCookie(cName: string | number | boolean) {\r\n document.cookie =\r\n encodeURIComponent(cName) + \"=deleted; expires=\" + new Date(0).toUTCString();\r\n}\r\n\r\n ConvertObjToJsonString(obj:any)\r\n {\r\n let response;\r\n response= JSON.stringify(obj);\r\n return response;\r\n }\r\n\r\n ConvertStringToBase64(originalString:string)\r\n {\r\n return ConversionUtils.stringToBase64(originalString);\r\n }\r\n ConvertBase64ToString(base64String:string)\r\n {\r\n return ConversionUtils.base64ToString(base64String);\r\n }\r\n\r\n GetRandomNumber()\r\n {\r\n const randomInt = (min: number, max: number) =>\r\n Math.floor(Math.random() * (max - min + 1)) + min;\r\n return randomInt(0, 5); // 2\r\n }\r\n\r\n \r\n\r\n \r\n GetQueryStringValue(inputParamter:string)\r\n {\r\n let queryString=(inputParamter!=null)?inputParamter.split('?')[1]:'';\r\n\r\n let rpostClientIdQs=this.GetParameterByName(queryString);\r\n let callBackUrlQs=this.GetParameterByName(queryString);\r\n let loginUrlQs= this.GetParameterByName(queryString);\r\n let emailAddress= this.GetParameterByName(queryString);\r\n\r\n }\r\n\r\n GetParameterByName(name:string, url = window.location.href) {\r\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\r\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return '';\r\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n}\r\n\r\ngetBrowserName(): string {\r\n const agent = window.navigator.userAgent.toLowerCase();\r\n const browser =\r\n agent.indexOf('edge') > -1 ? 'Microsoft Edge'\r\n : agent.indexOf('edg') > -1 ? 'Chromium-based Edge'\r\n : agent.indexOf('opr') > -1 ? 'Opera'\r\n : agent.indexOf('chrome') > -1 ? 'Chrome'\r\n : agent.indexOf('trident') > -1 ? 'Internet Explorer'\r\n : agent.indexOf('firefox') > -1 ? 'Firefox'\r\n : agent.indexOf('safari') > -1 ? 'Safari'\r\n : 'other';\r\n\r\n return browser;\r\n}\r\n\r\ngenerateDataShareIframeHtmlElement(callbackUrl:string,rpostClientId:string)\r\n {\r\n\r\n const iframe = document.createElement('IFRAME');\r\n iframe.id = 'receiverWindow_'+rpostClientId;\r\n iframe.style.display = \"none\";\r\n iframe.style.width=\"1px\";\r\n (iframe).src = callbackUrl; \r\n document.body.appendChild(iframe);\r\n \r\n }\r\n showProgressBar()\r\n {\r\n \r\n $(\"#divProcessing\").css(\"display\",\"flex\");\r\n }\r\n \r\n hideProgressBar()\r\n {\r\n \r\n $(\"#divProcessing\").css(\"display\",\"none\");\r\n }\r\n\r\n hideCommonProgressBar()\r\n {\r\n $('#divProcessingCommon').css(\"display\",\"none\");\r\n }\r\npostMessageToClient(responseToPost:string, iframeId:string, callBackUrl:string, clientId:string\r\n ,clientAppLoginUrl:string, callingMethod:string='') {\r\n const date = new Date(); \r\n \r\n \r\n var iframe = document.getElementById(\"receiverWindow_\"+clientId); \r\n console.log(iframe);\r\n if (iframe == null) { \r\n this.generateDataShareIframeHtmlElement(callBackUrl,clientId);\r\n iframe = document.getElementById(\"receiverWindow_\"+clientId); \r\n }\r\n const iWindow = (iframe as HTMLIFrameElement).contentWindow!;\r\n let msgToPost= this.ConvertStringToBase64(responseToPost); \r\n if(msgToPost!=null && msgToPost!='')\r\n console.log('Message is not empty');\r\n else\r\n console.log('Message is empty');\r\n \r\n \r\n if(iframe!=null && msgToPost!=null && msgToPost!='' )\r\n {\r\n \r\n setTimeout( () => {\r\n this.clearLocalStorage();\r\n iWindow.postMessage(msgToPost, '*');\r\n \r\n console.log('callbackUr is ' + callBackUrl);\r\n window.location.href=callBackUrl; \r\n }, 2000);\r\n }\r\n else\r\n {\r\n console.log(\"message to post is empty\");\r\n let errorDesc='';\r\n if(iframe ==null)\r\n {\r\n errorDesc=ErrorReason.COULD_NOT_ABLE_TO_SEND_MESSAGE;\r\n \r\n this.redirectToClientAppLoginWhenErrorOccured(errorDesc,clientAppLoginUrl);\r\n console.log(errorDesc);\r\n }\r\n else if(msgToPost==null || msgToPost=='')\r\n {\r\n errorDesc=ErrorReason.MESSAGE_TO_POST_EMPTY_RESPONSE;\r\n console.log(errorDesc);\r\n }\r\n\r\n }\r\n \r\n \r\n\r\n}\r\n\r\nprepareMsgToPost_Json(mfaToken:string,trustDeviceInfo:string,jwtToken:JwtToken\r\n ,trustDeviceExpirationDate:string,redirectedFrom:string=\"MFA\")\r\n{\r\n let respMsgToClient=new ResponseMsgToClient();\r\n respMsgToClient.MFAToken=mfaToken;\r\n respMsgToClient.TrustDeviceInfo=trustDeviceInfo;\r\n respMsgToClient.RedirectedFrom=redirectedFrom;\r\n respMsgToClient.JwtToken=jwtToken;\r\n respMsgToClient.TrustDeviceExpirationDate=trustDeviceExpirationDate;\r\n return this.ConvertObjToJsonString(respMsgToClient);\r\n}\r\n\r\nclearLocalStorage()\r\n{\r\n localStorage.clear();\r\n}\r\n\r\nredirectToClientAppLoginWhenErrorOccured(errorDesc:string,clientAppLoginUrl:string)\r\n{\r\n console.log(\"error is \" + errorDesc);\r\n this.clearLocalStorage();\r\n window.location.href= clientAppLoginUrl +\"?errorReason=\"+errorDesc;\r\n}\r\n\r\ngetBrowserUserAgent()\r\n{\r\n return window.navigator.userAgent;\r\n}\r\n\r\ndisplaySpinner()\r\n {\r\n \r\n $('#pnlSpinner').css(\"display\",\"block\");\r\n }\r\n\r\n hideSpinner()\r\n {\r\n $('#pnlSpinner').css(\"display\",\"none\");\r\n }\r\n\r\n displayValidationErroMsg(errorMsgToDisplay:string)\r\n {\r\n $('#divErrorMsg').show();\r\n $('#parErrorMsg').text(errorMsgToDisplay);\r\n }\r\n hideValidationErroMsg()\r\n {\r\n $('#divErrorMsg').hide();\r\n $('#parErrorMsg').text('');\r\n }\r\n displaySuccessMsg(msg:string)\r\n {\r\n $('#divSuccessMsg').show();\r\n $('#parSuccessMsg').text(msg);\r\n }\r\n hideSuccessMsg()\r\n {\r\n $('#divSuccessMsg').hide();\r\n $('#parSuccessMsg').text('');\r\n }\r\n\r\ngetMaskedPhoneNumber(phoneNumber:string):string\r\n{\r\n var maskedPhoneNumber=phoneNumber;\r\n if(phoneNumber!=null && phoneNumber!='' && phoneNumber!=undefined)\r\n {\r\n var loopCounter=0;\r\n let lastPosition=phoneNumber.length-3;\r\n \r\n for(var i=0; i3 && loopCounter str.length-1) return str;\r\n return str.substring(0,index) + chr + str.substring(index+1);\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class DataSharingService {\r\n clientIdValue='';\r\n private userStorage;\r\n \r\n constructor() {\r\n this.clientIdValue=localStorage.getItem(\"clienIdLS\")!;\r\n this.userStorage = localStorage.getItem(\"extTokenAPIResponse_\"+this.clientIdValue)!;\r\n }\r\n\r\n postCrossDomainMessage(link: any, portal = 'trackingportal') {\r\n \r\n let postURL= localStorage.getItem(\"callbackUrl_\"+this.clientIdValue)!; //ex:tracking portal\r\n const iframe = document.getElementById(\"receiverSOS1\");\r\n console.log(iframe);\r\n if (iframe == null) { return; }\r\n const iWindow = (iframe as HTMLIFrameElement).contentWindow!;\r\n const storageData = \"senderSecureData\";\r\n console.log(storageData);\r\n setTimeout(function () {\r\n iWindow.postMessage(\"hello\", postURL);\r\n }, 1000);\r\n \r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SocialAuthService, SocialUser } from \"@abacritt/angularx-social-login\";\r\nimport { GoogleLoginProvider } from \"@abacritt/angularx-social-login\";\r\nimport { Observable } from 'rxjs';\r\n\r\ndeclare const gapi: any;//this line should be at the very top of your TS file\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GoogleAuthenticationService {\r\n user: SocialUser | undefined;\r\n loggedIn: boolean | undefined;\r\n accessToken: any='';\r\n public auth2: any;\r\n constructor(private authService: SocialAuthService) { }\r\n\r\n googleSignIn()\r\n {\r\n gapi.auth2.getAuthInstance().signIn().then(function(response: any){\r\n //If Google OAuth 2 works fine\r\n console.log(response);\r\n }, function(error: { error: string; }){\r\n //If Google OAuth 2 occured error\r\n console.log(error);\r\n if(error.error === 'popup_closed_by_user'){\r\n alert('Oh Dude, Why you close authentication user window...!');\r\n }\r\n });\r\n }\r\n refreshToken() {\r\n return this.authService.refreshAuthToken(GoogleLoginProvider.PROVIDER_ID);\r\n }\r\n\r\n getAccessToken(): void {\r\n this.authService.getAccessToken(GoogleLoginProvider.PROVIDER_ID)\r\n .then(accessToken => this.accessToken = accessToken);\r\n // alert(this.accessToken);\r\n }\r\n\r\n signOut(callbackUrl:string): void {\r\n this.authService.signOut(true);\r\n //this.googleLogout(callbackUrl);\r\n window.location.href=callbackUrl;\r\n \r\n }\r\n\r\n public googleLogout(callbackUrl:string) {\r\n /* gapi.load('auth2', () => {\r\n this.auth2 = gapi.auth2.getAuthInstance();\r\n this.auth2.signOut().then(function() {\r\n alert('signedout');\r\n console.log(\"User signed out\");\r\n window.location.href=callbackUrl;\r\n });\r\n this.auth2.disconnect();\r\n //this.attachSignout(document.getElementById('googleBtn2'));\r\n }); */\r\n var auth2 = gapi.auth2.getAuthInstance();\r\n auth2.signOut().then(function () {\r\n });\r\n auth2.disconnect();\r\n }\r\n\r\n \r\n}\r\n","import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { AppConfigService } from '../app-config.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { MFATokenRequestModel } from '../Model/MFA/MFATokenRequestModel';\r\nimport { IMFATokenResponseDetails } from '../Model/MFA/MFATokenResponse';\r\nimport { Observable, catchError, map, of, pipe, retry, throwError } from 'rxjs';\r\nimport { VerifyAccessCodeModel } from '../Model/MFA/VerifyAccessCodeModel';\r\nimport { IVerifyAccessCodeResponseDetails } from '../Model/MFA/VerifyAccessCodeResponse';\r\nimport { CommonService } from './common/common.service';\r\nimport { AppError } from '../common/class/app-error';\r\nimport { IValidateMFATokenResponseDetails } from '../Model/MFA/ValidateMFATokenResponse';\r\nimport { IResendOTPResponseDetails } from '../Model/MFA/ResendOTPResponseModel';\r\nimport { CommonUtilService } from './common-util.service';\r\nimport { VerifyOTPRequestModel } from '../Model/MFA/VerifyOTPRequestModel';\r\nimport { IVerifyOTPResponseDetails } from '../Model/MFA/VerifyOTPResponseModel';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ErrorReason } from '../Model/ErrorReasonModel';\r\nimport { ResultContent_PasswordPolicySetting } from '../Model/ResetPassword/PasswordPolicySettingResponse';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MFAAuthenticationService {\r\n baseAuthAPIUrl: any;\r\n qs: any;\r\n mfaTokenRequestModelObj: any;\r\n callBackUrl:any;\r\n qsBase64: any;\r\n mfaToken:any;\r\n sourceClientId:any;\r\n appLang: any;\r\n rcapClientId:any;\r\n loginUrl:any;\r\n constructor(private http: HttpClient,private config: AppConfigService\r\n ,private router:Router,private route: ActivatedRoute\r\n ,private commonUtilSvc:CommonUtilService\r\n ,private translate: TranslateService\r\n ) {\r\n this.baseAuthAPIUrl = this.config.baseAuthApiUrlCfg;\r\n this.rcapClientId=this.config.rcapClientId;\r\n \r\n \r\n }\r\n\r\n \r\n\r\n // ValidateMFAToken(reqObj:MFATokenRequestModel):Observable \r\n // {\r\n // let mfaTokenAPIUrl=this.baseAuthAPIUrl+'/api/v1/MFA/Token/Validate';\r\n // const data=JSON.stringify({emailAddress: reqObj.emailAddress\r\n // ,password: reqObj.password,client_id: reqObj.clientId,sourceClient_id:reqObj.sourceClientId\r\n // ,mfaToken:reqObj.mfaToken});\r\n // return this.http.post(mfaTokenAPIUrl, data , {\r\n // headers: new HttpHeaders({\r\n // 'Content-Type': 'application/json'\r\n // })\r\n // })\r\n // .pipe(\r\n // map((result: any) => {\r\n \r\n \r\n // return result;\r\n // })\r\n \r\n // ); \r\n \r\n\r\n // }\r\n SetLanguage(lang:string)\r\n {\r\n this.appLang=lang;\r\n if(this.appLang!=null)\r\n this.translate.setDefaultLang(this.appLang);\r\n else\r\n this.translate.setDefaultLang('en-us');\r\n }\r\n ValidateMFATokenFromServer()\r\n {\r\n this.qsBase64=this.commonUtilSvc.GetParameterByName(\"?qs\",window.location.href)!;\r\n \r\n let qsPlainText=this.commonUtilSvc.ConvertBase64ToString(this.qsBase64);\r\n console.log(qsPlainText);\r\n let emailAddress='';\r\n let password= ''; \r\n let clientId= this.rcapClientId; \r\n this.sourceClientId= this.commonUtilSvc.GetParameterByName(\"?SourceClientId\",qsPlainText)!;\r\n this.mfaToken=this.commonUtilSvc.GetParameterByName(\"MFAToken\",qsPlainText)!;\r\n localStorage.setItem(\"MFAToken\",this.mfaToken);\r\n this.callBackUrl=this.commonUtilSvc.GetParameterByName(\"CallBackUrl\",qsPlainText)!;\r\n\r\n let loginUrl=this.commonUtilSvc.GetParameterByName(\"LoginUrl\",qsPlainText)!;\r\n \r\n localStorage.setItem(\"LoginUrl_\"+this.mfaToken,loginUrl);\r\n localStorage.setItem(\"LoginUrl_Error\",loginUrl);\r\n let redirectUri=this.callBackUrl;//Todo: Get value based on OTPVerify/PWdChange flags\r\n localStorage.setItem(\"RedirectURI_\"+this.mfaToken,redirectUri);\r\n localStorage.setItem(\"SourceClientId_\"+this.mfaToken,this.sourceClientId);\r\n localStorage.setItem(\"ClientId_\"+ this.mfaToken,clientId);\r\n let fromUrl=this.commonUtilSvc.GetParameterByName(\"From\",qsPlainText);\r\n \r\n let mfaTokenAPIUrl=this.baseAuthAPIUrl+'/api/v1/MFA/Token/Validate';\r\n \r\n const data=JSON.stringify({mfA_Token:this.mfaToken,RedirectURI:redirectUri,sourceClient_Id:this.sourceClientId\r\n ,client_Id:clientId});\r\n return this.http.post(mfaTokenAPIUrl, data , {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n })\r\n .pipe(\r\n map((result: any) => {\r\n \r\n const response =result as unknown as IValidateMFATokenResponseDetails;\r\n if(response!=null && response.resultContent!=null)\r\n {\r\n \r\n let resultOutput=response.resultContent;\r\n //Begin \r\n let numOfDaysToExpire: number =resultOutput.passwordExpiresIn;\r\n let enforcePasswordPolicy:number= resultOutput.enforcePasswordPolicy;\r\n if(resultOutput.enforcePasswordPolicy!=null && resultOutput.enforcePasswordPolicy!=undefined \r\n && resultOutput.enforcePasswordPolicy==1)//Rportal setting next login\r\n {\r\n let enforcePasswordPolicy: number =resultOutput.enforcePasswordPolicy;\r\n localStorage.setItem(\"enforcePasswordPolicy_\"+this.mfaToken,enforcePasswordPolicy.toString());\r\n }\r\n //End\r\n //Begin S1-3356 -RCAP UI changes for MFA workflow via Mobile Authentication\r\n let phoneNumber='';\r\n if(resultOutput.phoneNumber!='' && resultOutput.phoneNumber!=null && resultOutput.phoneNumber!=undefined)\r\n {\r\n phoneNumber= resultOutput.phoneNumber;\r\n localStorage.setItem(\"phoneNumber_\"+this.mfaToken,phoneNumber);\r\n }\r\n //End S1-3356\r\n //Begin S1-3262\r\n /* console.log(\"MFAEnabled value is \" + resultOutput.mfaEnabled); \r\n console.log(\"PasswordChange value is \"+ resultOutput.passwordChange);\r\n console.log(\"Reset password string value index in the url is \"+ window.location.href.indexOf(\"resetpassword\")); */\r\n let pwdPolicySettingResultOutPut: ResultContent_PasswordPolicySetting =response.resultContent.passwordPolicySetting;\r\n localStorage.setItem('PwdPolicySettingsLs_'+this.mfaToken, JSON.stringify(pwdPolicySettingResultOutPut));\r\n //alert(localStorage.getItem(\"PwdPolicySettingsLs_\"+this.mfaToken));\r\n //End S1-3262\r\n localStorage.setItem(\"mfaToken\",this.mfaToken);\r\n \r\n if(fromUrl!=null && fromUrl!='' && fromUrl!=undefined && fromUrl=='RPL') //Request came from WebAPI Email link,navigate to Resetpassword screen\r\n {\r\n console.log(\"Request came from Reset Password Email Link\");\r\n localStorage.setItem(\"FromUrl_\"+this.mfaToken,'RPL'); //S1-3262\r\n this.router.navigate(['/reset-password']);\r\n } \r\n else if(resultOutput.mfaEnabled && resultOutput.accessCodeEmailed)\r\n {\r\n //redirect to MFA Login screen\r\n console.log(\"MFA is enabled and accessCodeEmailed is true\"); \r\n if((resultOutput.passwordChange==-1 || resultOutput.passwordChange==0 || resultOutput.passwordChange==1) \r\n && window.location.href.indexOf(\"resetpassword\")!=-1)\r\n {\r\n //redirect to MFA Login screen\r\n console.log(\"MFA is enabled and passwordchange is expired(-1) or passwordchange is 0, but url contains resetpassword\"); \r\n setTimeout(()=>{\r\n \r\n this.router.navigateByUrl('/multifactor-authentication?qs='+this.qsBase64, {replaceUrl:true});\r\n }); \r\n \r\n }\r\n \r\n \r\n }\r\n // else if(resultOutput.mfaEnabled && (resultOutput.passwordChange==-1 || resultOutput.passwordChange==0)\r\n // && window.location.href.indexOf(\"resetpassword\")!=-1\r\n // )\r\n // {\r\n // //redirect to MFA Login screen\r\n // console.log(\"MFA is enabled and passwordchange is expired(-1) or passwordchange is 0, but url contains resetpassword\"); \r\n // setTimeout(()=>{\r\n \r\n // this.router.navigateByUrl('/multifactor-authentication?qs='+this.qsBase64, {replaceUrl:true});\r\n // }); \r\n // //this.router.navigate(['/multifactor-authentication'],{queryParams: {qs: this.qsBase64 }});\r\n // }\r\n else if(!resultOutput.mfaEnabled && resultOutput.passwordChange==0)\r\n {\r\n //alert(resultOutput.passwordChange);\r\n console.log(resultOutput.enforcePasswordPolicy);\r\n if(resultOutput.enforcePasswordPolicy!=null && resultOutput.enforcePasswordPolicy!=undefined \r\n && resultOutput.enforcePasswordPolicy==1)//Rportal setting ->EncforcePasswordPolicyOn is next login(NextLoginAttempt)\r\n {\r\n console.log(\"MFA not enabled, passwordchange is 0 and enforcePasswordPolicy is 1\");\r\n this.router.navigate(['/reset-password']);\r\n }\r\n else\r\n {\r\n // redirect to callback back because MFA is not enabled and PAsswordChange is also 0\r\n let errorReason= ErrorReason.MFA_NOT_ENABLED_PWD_CHANGE_NOT_REQUIRED;//'MFA not enabled and PAssword change is not required';\r\n this.RedirectToCallBackUrl(errorReason,loginUrl);\r\n }\r\n \r\n }\r\n else if(!resultOutput.mfaEnabled && resultOutput.passwordChange==1 \r\n && window.location.href.indexOf(\"resetpassword\")==-1)\r\n {\r\n //redirect to Change password screen \r\n //request came from client app for backward compatiability\r\n console.log(\"mfa is not enabled and password change is enabled\");\r\n console.log(resultOutput.enforcePasswordPolicy);\r\n \r\n //Test case: RPortal Login security set to - YES\r\n //Enforce Password Policy on : Next Login attempt\r\n //User status: Password about to expire in few days\r\n //Password not matched: Yes \r\n this.RedirectToResetPasswordOrResetPwdReminderScreen(numOfDaysToExpire,enforcePasswordPolicy,resultOutput.passwordChange);\r\n \r\n \r\n }\r\n else if(!resultOutput.mfaEnabled && resultOutput.passwordChange==1 \r\n && window.location.href.indexOf(\"resetpassword\")!=-1)\r\n {\r\n if(fromUrl=='RPL') //Request came from Email Reset password click button \r\n {\r\n //redirect to reset password screen \r\n console.log(\"mfa is not enabled, password change is enabled and url contains resetpassword string and Request came from Email Reset password click button\");\r\n this.router.navigate(['/reset-password']);\r\n }\r\n else //request came from client app\r\n {\r\n console.log(\"mfa is not enabled, password change is enabled and url contains resetpassword string and request came from client app\");\r\n //this.RedirectToResetPasswordReminderScreen(resultOutput.passwordExpiresIn);\r\n \r\n //Test case: RPortal Login security set to - YES\r\n //Enforce Password Policy on : Next Login attempt\r\n //User status: Password about to expire in few days\r\n this.RedirectToResetPasswordOrResetPwdReminderScreen(numOfDaysToExpire,enforcePasswordPolicy,resultOutput.passwordChange);\r\n }\r\n }\r\n else if(!resultOutput.mfaEnabled && resultOutput.passwordChange==-1)\r\n {\r\n console.log(\"MFA is not enabled and passwordChange is -1(Expired)\");\r\n this.RedirectToResetPasswordOrResetPwdReminderScreen(numOfDaysToExpire,enforcePasswordPolicy,resultOutput.passwordChange);\r\n //redirect to password expiry screen\r\n \r\n //this.router.navigate(['/password-expired']);\r\n\r\n }\r\n\r\n }\r\n \r\n return result;\r\n })\r\n \r\n )\r\n .pipe(catchError(this.handleError));\r\n \r\n }\r\n RedirectToResetPasswordOrResetPwdReminderScreen(numOfDaysToExpire:number,enforcePasswordPolicy:number,passwordChangeType:number)\r\n {\r\n if(passwordChangeType==1 && numOfDaysToExpire >0 && enforcePasswordPolicy==1)\r\n {\r\n console.log(\"RPortal Login security set to - YES , Enforce Password Policy on : Next Login attempt, User status: Password about to expire in \"+numOfDaysToExpire+\" days, Password not matched: Yes\"); \r\n }\r\n else if(passwordChangeType==1 && numOfDaysToExpire ==0 && enforcePasswordPolicy==1)\r\n {\r\n console.log(\"RPortal Login security set to - YES , Enforce Password Policy on : Next Login attempt, User status: Password about to expire in today, Password not matched: Yes\") \r\n }\r\n else if(passwordChangeType==-1 && numOfDaysToExpire ==0 && enforcePasswordPolicy==1)\r\n {\r\n console.log(\"RPortal Login security set to - YES , Enforce Password Policy on : Next Login attempt, User status: Password has expired, Password not matched: Yes\") \r\n }\r\n else if(passwordChangeType==-1 && numOfDaysToExpire ==0 && enforcePasswordPolicy==0)\r\n {\r\n console.log(\"User status: Password has expired\") \r\n }\r\n else if(passwordChangeType==1 && numOfDaysToExpire ==0 && enforcePasswordPolicy==0)\r\n {\r\n console.log(\"User status: Password about to expire in today\") \r\n }\r\n else if(passwordChangeType==1 && numOfDaysToExpire >0 && enforcePasswordPolicy==0)\r\n {\r\n console.log(\"User status: Password about to expire in \"+numOfDaysToExpire+\" days\") \r\n }\r\n else{\r\n console.log(\"numOfDaysToExpire: \" + numOfDaysToExpire);\r\n console.log(\"enforcePasswordPolicy: \"+ enforcePasswordPolicy);\r\n console.log(\"passwordChangeType:\" + passwordChangeType);\r\n }\r\n\r\n \r\n if(enforcePasswordPolicy==1)\r\n {\r\n console.log(\"MFA not enabled, passwordchange is +\"+passwordChangeType + \" and enforcePasswordPolicy is 1(NextLoginAttempt)\"); //As per issue reported by sreelekha in the email with subject \"RE: Open issues we have seen for Password policy changes in Production\" on 17th jan 2025\r\n this.router.navigate(['/reset-password']);\r\n }\r\n else if(passwordChangeType==-1)\r\n {\r\n this.router.navigate(['/password-expired']);\r\n }\r\n else //redirect to resetpassword reminder screen\r\n {\r\n this.RedirectToResetPasswordReminderScreen(numOfDaysToExpire); \r\n }\r\n }\r\n RedirectToResetPasswordReminderScreen(passwordExpiresIn:number)\r\n {\r\n \r\n console.log(\"mfa is not enabled and password change is enabled\");\r\n var numOfDaysToExpire =passwordExpiresIn ; \r\n var numOfDaysToExpireBase64String=this.commonUtilSvc.ConvertStringToBase64(numOfDaysToExpire.toString());\r\n this.router.navigate(['/reset-password-reminder'],{queryParams: {qs: numOfDaysToExpireBase64String }});\r\n \r\n }\r\n ReloadCurrentRoute() {\r\n const currentUrl = this.router.url;\r\n this.router.navigateByUrl('/', {skipLocationChange: true}).then(() => {\r\n this.router.navigate([currentUrl]);\r\n });\r\n}\r\n ReSendOTP(mfaToken:string,sourceClientId:string,clientId:string,redirectUri:string) : Observable\r\n {\r\n let resendOTPAPIUrl=this.baseAuthAPIUrl+'/api/v1/MFA/ReSendOTP';\r\n const data=JSON.stringify({MFA_Token:mfaToken\r\n ,SourceClient_Id:sourceClientId\r\n ,Client_Id:clientId\r\n ,RedirectURI: redirectUri\r\n });\r\n return this.http.post(resendOTPAPIUrl, data,\r\n {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n })\r\n .pipe(catchError(this.handleError));\r\n \r\n }\r\n private extractData(res: any) {\r\n let body = res;\r\n return body;\r\n }\r\n private handleErrorObservable(error: any) {\r\n console.error(error.message || error);\r\n return throwError(error);\r\n } \r\n\r\n VerifyOTP(data: VerifyOTPRequestModel): Observable {\r\n let verifyOTPAPIUrl=this.baseAuthAPIUrl+'/api/v1/MFA/VerifyOTP'\r\n \r\n return this.http.post(verifyOTPAPIUrl, data,\r\n {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n })\r\n .pipe(catchError(this.handleError));\r\n \r\n \r\n }\r\n\r\n \r\n private handleError(err: HttpErrorResponse ): Observable {\r\n const appError = new AppError(err);\r\n const errorStatus = err.status;\r\n const errorStatusText = err.statusText;\r\n const error: any = err.error;\r\n let errorMsg :any;\r\n let msgId = '';\r\n \r\n if (error.Message !== undefined && Array.isArray(error.Message)&& err.error.Message[0]!=undefined) {\r\n errorMsg = err.error.Message[0].Message;\r\n msgId = err.error.Message[0].MessageId;\r\n } else {\r\n if (error.error_description) {\r\n errorMsg = error.error_description;\r\n } else {\r\n if (error.message) {\r\n errorMsg = error.message;\r\n if(error.resultContent!=null)\r\n {\r\n let errorResultContent=error.resultContent;\r\n errorMsg=(errorResultContent.errors[0]!=undefined)?errorResultContent.errors[0]:errorMsg;\r\n }\r\n if(error.statusCode==\"401\") //Unauthorized\r\n {\r\n \r\n }\r\n \r\n msgId = (error.MessageId) ? error.MessageId : '';\r\n } else {\r\n errorMsg = errorStatusText;\r\n }\r\n }\r\n }\r\n\r\n \r\n const retMsg = `${errorMsg.message}`;\r\n appError.Message = retMsg;\r\n appError.MessageId = msgId;\r\n\r\n return of(appError);\r\n }\r\n\r\n RedirectToCallBackUrl(errorMesg:any,callBackUrl:string)\r\n {\r\n \r\n callBackUrl= callBackUrl+\"?errorReason=\"+errorMesg;\r\n window.location.href= callBackUrl;\r\n }\r\n}\r\n\r\n","import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { AppConfigService } from '../app-config.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { CommonUtilService } from './common-util.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ResetPasswordRequestModel } from '../Model/ResetPassword/ResetPasswordRequestModel';\r\nimport { Observable, catchError, of, retry } from 'rxjs';\r\nimport { AppError } from '../common/class/app-error';\r\nimport { AccessTokenRequestModel } from '../Model/ResetPassword/AccessTokenRequestModel';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ResetpasswordService {\r\n baseAuthAPIUrl: string;\r\n\r\n constructor(private http: HttpClient,private config: AppConfigService\r\n ,private router:Router,private route: ActivatedRoute\r\n ,private commonUtilSvc:CommonUtilService\r\n ,private translate: TranslateService) {\r\n this.baseAuthAPIUrl = this.config.baseAuthApiUrlCfg;\r\n\r\n }\r\n\r\n\r\nResetPassword(reqObj:ResetPasswordRequestModel)\r\n {\r\n let resetPwdAPIUrl=this.baseAuthAPIUrl+'/api/v1/password/Reset';\r\n const data=JSON.stringify({mfA_Token: reqObj.mfA_Token\r\n ,password:reqObj.password\r\n ,confirmPassword:reqObj.confirmPassword\r\n ,client_Id: reqObj.client_Id\r\n ,sourceClient_Id:reqObj.sourceClient_Id\r\n ,redirectURI:reqObj.redirectURI\r\n });\r\n return this.http.post(resetPwdAPIUrl, data,\r\n {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n })\r\n .pipe(catchError(this.handleError));\r\n\r\n }\r\n\r\n GetAccessToken(reqObj:AccessTokenRequestModel)\r\n {\r\n let resetPwdAPIUrl=this.baseAuthAPIUrl+'/api/v1/MFA/AccessToken';\r\n const data=JSON.stringify({mfA_Token: reqObj.mfA_Token\r\n ,sourceClient_Id:reqObj.sourceClient_Id\r\n ,client_Id: reqObj.client_Id\r\n ,redirectURI:reqObj.redirectURI\r\n });\r\n return this.http.post(resetPwdAPIUrl, data,\r\n {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n })\r\n .pipe(catchError(this.handleError));\r\n\r\n }\r\n\r\n private handleError(err: HttpErrorResponse ): Observable {\r\n const appError = new AppError(err);\r\n const errorStatus = err.status;\r\n const errorStatusText = err.statusText;\r\n const error: any = err.error;\r\n let errorMsg :any;\r\n let msgId = '';\r\n \r\n if (error.Message !== undefined && Array.isArray(error.Message)&& err.error.Message[0]!=undefined) {\r\n errorMsg = err.error.Message[0].Message;\r\n msgId = err.error.Message[0].MessageId;\r\n } else {\r\n if (error.error_description) {\r\n errorMsg = error.error_description;\r\n } else {\r\n if (error.message) {\r\n errorMsg = error.message;\r\n if(error.resultContent!=null)\r\n {\r\n let errorResultContent=error.resultContent;\r\n errorMsg=(errorResultContent.errors[0]!=undefined)?errorResultContent.errors[0]:errorMsg;\r\n }\r\n if(error.statusCode==\"401\") //Unauthorized\r\n {\r\n //let callBackUrl= this.callBackUrl+\"?errorReason=\"+errorMsg.message;\r\n //window.location.href= \"http://localhost:63183/Login?errorReason=\"+errorMsg.message;\r\n //this.RedirectToCallBackUrl(errorMsg.message);\r\n }\r\n \r\n msgId = (error.MessageId) ? error.MessageId : '';\r\n } else {\r\n errorMsg = errorStatusText;\r\n }\r\n }\r\n }\r\n\r\n // const retMsg = `Error (${errorStatus}): ${errorMsg}`;\r\n const retMsg = `${errorMsg.message}`;\r\n appError.Message = retMsg;\r\n appError.MessageId = msgId;\r\n\r\n return of(appError);\r\n }\r\n}\r\n","import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { catchError, map, Observable, of } from 'rxjs';\r\nimport { AppConfigService } from '../app-config.service';\r\nimport { AppError } from '../common/class/app-error';\r\nimport { ExternalTokenModel } from '../Model/ExternalTokenModel';\r\nimport { IExternalTokenResponseDetails } from '../Model/ExternalTokenRespone';\r\nimport { TokenModel } from '../Model/TokenModel';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RpostAuthenticationService {\r\n baseAuthAPIUrl=''\r\n accessTokenEndPoint='/api/v1/auth/Token'\r\n externalTokenEndPoint= '/api/auth/ExtToken'\r\n constructor(private http: HttpClient,private config: AppConfigService,private router:Router) {\r\n this.baseAuthAPIUrl = this.config.baseAuthApiUrlCfg;\r\n \r\n }\r\n //Get JWT token from RCAP API external token endpoint\r\n getExternalTokenAPIResponseToken(externalTokenModelObj:ExternalTokenModel)\r\n {\r\n \r\n let externalTokenAPIUrl=this.baseAuthAPIUrl+this.externalTokenEndPoint;\r\n //return this.http.post(externalTokenAPIUrl,externalTokenModelObj);\r\n const data=JSON.stringify({Provider_Access_Token: externalTokenModelObj.provider_access_token\r\n ,Provider: externalTokenModelObj.provider,Client_id: externalTokenModelObj.Client_Id});\r\n return this.http.post(externalTokenAPIUrl, data , {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n })\r\n .pipe(\r\n //catchError(this.handleError)\r\n );\r\n\r\n }\r\n\r\n \r\n apiGetById(_url: string) {\r\n const url = `${this.baseAuthAPIUrl}/${_url}`;\r\n return this.http.get(url)\r\n .pipe(\r\n catchError(this.handleError) \r\n ); \r\n \r\n }\r\n\r\n private handleError(err: HttpErrorResponse ): Observable {\r\n const appError = new AppError(err);\r\n const errorStatus = err.status;\r\n const errorStatusText = err.statusText;\r\n const error: any = err.error;\r\n let errorMsg = '';\r\n let msgId = '';\r\n \r\n if (error.Message !== undefined && Array.isArray(error.Message)&& err.error.Message[0]!=undefined) {\r\n errorMsg = err.error.Message[0].Message;\r\n msgId = err.error.Message[0].MessageId;\r\n } else {\r\n if (error.error_description) {\r\n errorMsg = error.error_description;\r\n } else {\r\n if (error.Message) {\r\n errorMsg = error.Message;\r\n msgId = (error.MessageId) ? error.MessageId : '';\r\n } else {\r\n errorMsg = errorStatusText;\r\n }\r\n }\r\n }\r\n \r\n const retMsg = `Error (${errorStatus}): ${errorMsg}`;\r\n appError.Message = retMsg;\r\n appError.MessageId = msgId;\r\n \r\n return of(appError);\r\n }\r\n\r\n}\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TranslationLoaderService {\r\n use(lang: string) {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n constructor() { }\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false,\r\n baseAuthAPIUrl: 'https://auth.r1.rpost.net',\r\n azureSSOClientId: 'a58f8234-f671-4320-b595-68299fcab383',\r\n scopeId: '3a59807d-8410-405e-988e-adde4c2fe96f',\r\n googleSSOClientId: '27038867997-6073okjaag34jfgg5nu2uau867aa4rbf.apps.googleusercontent.com',\r\n googleProvider: 'Google',\r\n azureADProvider: 'AzureAD',\r\n rcapClientId: '89278687-d54e-4321-81af-9e0d5f2f8cda'\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n"],"names":["AzureTokenResponseModel","ErrorReason","MessageDetailsResponse","MessageResponse","ResultContent","GoogleTokenResponseModel","MFATokenRequestModel","MFATrustDeviceModel","QueryStringValuesModel","ResponseMsgToClient","JwtToken","VerifyOTPRequestModel","environment","AppConfigService","constructor","baseAuthAPIUrl","rcapClientId","factory","providedIn","RouterModule","MsalGuard","BrowserUtils","ProfileComponent","HomeComponent","FailedComponent","RPostAuthenticationComponent","RpostAuthenticationLogoutComponent","RpostAuthenticationResolverResolver","EmailAutenticationComponent","EmailAuthenticationResolver","ResetPasswordComponent","ResetPasswordReminderComponent","PasswordExpiredComponent","ErrorpageComponent","PasswordResetComponent","ResetPasswordSuccessComponent","ResetPasswordErrorComponent","routes","path","component","canActivate","resolve","authencationResolver","validateTokenDetails","AppRoutingModule","forRoot","initialNavigation","isInIframe","isInPopup","imports","exports","MSAL_GUARD_CONFIG","Subject","i0","AppComponent","msalGuardConfig","authService","msalBroadcastService","route","translate","queryParams","subscribe","params","callBackUrlFromQueryString","setDefaultLang","ngOnInit","window","opener","localStorage","setItem","close","isIframe","parent","setLoginDisplay","loginDisplay","instance","getAllAccounts","length","checkAndSetActiveAccount","activeAccount","getActiveAccount","accounts","setActiveAccount","loginRedirect","authRequest","loginPopup","response","account","logout","popup","returnUrl","location","href","clientId","getItem","callbackUrl","logoutPopup","mainWindowRedirectUri","logoutRedirect","ngOnDestroy","_destroying$","next","undefined","complete","selectors","decls","vars","consts","template","BrowserModule","BrowserAnimationsModule","MatButtonModule","MatToolbarModule","MatListModule","MatMenuModule","HTTP_INTERCEPTORS","HttpClientModule","PublicClientApplication","InteractionType","BrowserCacheLocation","LogLevel","MsalInterceptor","MsalBroadcastService","MsalModule","MsalService","MSAL_INSTANCE","MSAL_INTERCEPTOR_CONFIG","MsalRedirectComponent","HeaderComponent","FooterComponent","SocialLoginModule","GoogleLoginProvider","TranslateLoader","TranslateModule","TranslateHttpLoader","HttpClient","ReactiveFormsModule","isIE","navigator","userAgent","indexOf","clientIdPv","postLogoutRedirectUri","HttpLoaderFactory","http","loggerCallback","logLevel","message","console","log","MSALInstanceFactory","auth","azureSSOClientId","authority","redirectUri","cache","cacheLocation","LocalStorage","storeAuthStateInCookie","system","loggerOptions","Info","piiLoggingEnabled","tokenRenewalOffsetSeconds","MSALInterceptorConfigFactory","protectedResourceMap","Map","set","interactionType","Popup","MSALGuardConfigFactory","scopes","scopeId","loginFailedRoute","googleLoginOptions","oneTapEnabled","AppModule","bootstrap","provide","useClass","multi","useFactory","useValue","autoLogin","providers","id","PROVIDER_ID","provider","googleSSOClientId","onError","err","error","loader","deps","declarations","AppError","originalError","shareReplay","TranslationLoaderService","getTranslation","lang","cache$","cachedLang","get","prefix","suffix","pipe","use","UserSessionService","setLanguages","list","key","JSON","stringify","setAppLanguage","getLanguages","parse","getAppLanguage","val","takeWhile","tap","timer","FormControl","FormGroup","commonUtilSvc","mfaSvc","deviceService","langSvc","langLoaderSvc","user","router","config","qs","disableBrowserBackButtonAngular","history","pushState","onPopState","stepper","previous","showProgressBar","$","show","hideProgressBar","hide","toggleFieldTextType","fieldTextType","onPaste","event","clipboardData","pastedText","getData","enableButton","disableButton","tabOut","target","value","displayValidationErroMsg","errorMsgToDisplay","css","text","hideValidationErroMsg","displaySuccessMsg","msg","hideSuccessMsg","InitLang","browserLang","language","toLowerCase","appLang","buildForm","mfaForm","txtOTP","checkIsPageRefreshed","addEventListener","e","confirmationMessage","returnValue","disableBack","forward","hideCommonProgressBar","getTimer","qsResults","GetQueryStringValues","then","qsValues","MFAToken","phoneNumber","maskedPhoneNumber","getMaskedPhoneNumber","errorMsg","PAGE_REFRESH_IS_NOT_ALLOWED","snapshot","data","validateTokenSnapShot","resultContent","emailAddressFromResp","emailAddress","Language","Message","displayErrorMsgAndRedirectToLoginWhenMFATokenInvalid","LoginUrl","maskedEmailAddress","getMaskedEmailAddress_V1","mfaToken","toString","removeItem","resendOTP","mfaTokenRequestObj","result","resendOTPCounter","resendOTPAttemptCounter","ReSendOTP","SourceClientId","ClientId","CallBackUrl","resp","accessCodeEmailed","succMsg","instant","OTPRequestExceededErrorMsg1","OTPRequestExceededErrorMsg2","successMsg","queryStringValuesObj","ConvertBase64ToString","password","sourceClientId","GetParameterByName","callBackUrl","mfaEnabled","mfaEnabledBoolValue","passwordChangeType","parseInt","loginUrl","EmailAddress","Password","MFAEEnabled","PasswordChangeType","counter","btnId","removeClass","addClass","prop","getMaskedEmailAddress","loopCounter","i","lastPosition","posValueAfterAtTheRateSymbol","replaceAtPosition","difference","Math","abs","saveTrustDeviceInformation","values","currentTarget","checked","browserDeviceInfo","browser","device","trustDeviceInfoJson","getTrustDeviceDetails_Json","isTrustDeviceCheckboxChecked","deviceInfo","trustDeviceObj","TrustDevice","Device","ConvertObjToJsonString","verifyOTP","otpValue","OTPRequiredErrorMsg","randomNumber","GetRandomNumber","getBrowserUserAgent","clientAppLoginUrl","trustDevice","trustDeviceExpirationDate","verifyOTPRequestModelObj","AccessCode","Browser_Device","MFA_Token","SourceClient_Id","Client_Id","RedirectURI","VerifyOTP","accessCodeValid","enforcePasswordPolicy","passwordChange","navigate","generateDataShareIframeHtmlElement","mfaToken_After_Verify_OTP","msgToPost_Json","access_Token","prepareMsgToPost_Json","MESSAGE_TO_POST_IS_EMPTY","setTimeout","ACCESS_TOKEN_IS_EMPTY","postMessageToClient","numOfDaysToExpire","passwordExpiresInDays","RedirectToResetPasswordOrResetPwdReminderScreen","errorCode","errors","code","messageCode","errorMsgPart1","errorMsgPart2","redirectToLoginWithErrorReason","invalidMfaTokenErrorKey","INVALID_MFA_TOKEN_ERROR_MSG_KEY","invalidMfaTokenErrorMsg","INVALID_MFA_TOKEN_ERROR_MSG","sessionExpiryMsg","INVALID_MFA_TOKEN_ERROR_MESG1","ctx","originalString","index","setCharAt","str","chr","substring","Date","getTime","timeStamp","EventType","InteractionStatus","filter","msalSubject$","eventType","LOGIN_SUCCESS","payload","inProgress$","status","None","styles","errorResp","redirectUrl","RESET_PWD_SESSION_EXPIRED_MSG","erroMsgBase64Str","ConvertStringToBase64","GRAPH_ENDPOINT","getProfile","profile","restPwdSvc","formBuilder","numDaysToExpire","continueClickEvent","isOTPVerified","obj","mfA_Token","client_Id","sourceClient_Id","redirectURI","GetAccessToken","RESET_PWD_SCREEN_RESPONSE_IS_EMPTY","statusCode","onunload","wait","arg0","Error","Validators","sanitizer","toggleFieldTextType_ConfirmPwd","fieldTextType_ConfirmPwd","click","SubmitPassword","alert","btnClick","resetForm","group","txtPassword","required","minLength","pwdLengthNumberText","txtConfirmPassword","getPasswordRules","attr","invokeResetPasswordAPI","pwd","confirmPwd","confirmPassword","getQueryStringValues","ResetPassword","fromUrl","failedAttempts","RESET_PWD_INVALID_ATTEMPTS","msgToPostToClient","msgToPost","hasTwoUppercaseLetters","controls","hasUppercaseFlag","test","hasTwoLowercaseLetters","hasLowercaseFlag","hasTwoNumbers","hasNumberFlag","hasTwoSpecialChars","hasSpecialCharFlag","isLengthValid","isLengthValidFlag","isPasswordValid","hasUpperCaseLetters","hasLowerCaseLetters","hasNumbers","hasSpecialChars","isPasswordLengthValid","getPasswordPolicySettings","pwdPolicySetting","getPasswordPolicySettingsValues","pwdPolicySettingObj","atleastUpperCaseLetters","atleastLowerCaseLetters","atleastNumbers","atleastSpecialCharacters","minPWdLength","upperCaseCharCount","lowerCaseCharCount","numberCharCount","specialCharCount","minCharLength","atleastText","upperCasePwdRuleText","lowerCasePwdRuleText","numberPwdRuleText","specialCharPwdRuleText","pwdLengthPwdRuleText","upperCaseNumberText","lowerCaseNumberText","numberText","specialCharNumberText","getNumberText","numValue","togglePasswordVisibility","showPassword","toggleConfirmPasswordVisibility","showConfirmPassword","validateResetForm","validPassword","validConfirmPassword","onPasswordBlur","validMatchPassword","onConfirmPasswordBlur","resetPassword","form","invalid","validForm","sanitize","url","bypassSecurityTrustUrl","$event","inject","catchError","map","of","MFAAuthenticationService","state","ValidateMFATokenFromServer","googleAutheService","logoutCallBakcUrl","loginFailReason","ssotype","performLogoutAction","azureADProvider","azureLogout","googleProvider","googleLogout","logoutForFailure","errorDesc","CLIENT_APP_PRIVILEGES_ERROR","isPopupblocker","detectPopupBlocker","activeUserName","getActiveAccountUserName","loggedInActiveUserName","getActiveAccountByUserName","homeAccountId","currentAccount","getAccountByHomeId","showLogoutPopup","errorReason","INTERACTION_IN_PROGRESS","windowUrl","windowId","windowFeatures","windowRef","open","iframe","document","createElement","style","display","src","body","appendChild","isUserAlreadyLoggedin","isLoggedIn","username","userEmailAddress","userNameFromMSAL","getAccountByUsername","SignOutButtonClick","reload","routeReuseStrategy","shouldReuseRoute","navigateToUrl","queryParamsHandling","signOut","DataSharingService","rpostAuthService","dataShareService","auzureTokenRespService","socialAuthService","safeSrc","bypassSecurityTrustResourceUrl","clientIdFromQueryString","loginUrlFromQueryString","isUnAuthorized","showLoginPopup","langQS","disableGoogleButton","displaySpinner","hideSpinner","displaySSOButtons","hideSSOButtons","googleBtnOnMouseOver","getGoogleTokenResponseAndRedirectToClientApplication","generateIframeHtmlElement","hidePnlComingSoon","getRpostClientId","getCallBackUrl","clearLocalStorageTokenResponse","getGoogleAccountDetails","userDetails","authState","googleTokenResponseModelObj","prepareGoogleTokenResponseObject","googleTokenResponse","getGoogleTokenResponse","redirectToClientApplication","displayActualErrorInConsole","redirectToClientAppLoginWhenErrorOccured","GOOGLE_LOGIN_FAILED","googleTokenRespDetails","convertObjToJsonString","getGoogleRefreshToken","googleTokenRespObj","accesstoken","idToken","idtoken","refreshtoken","useremail","email","name","CancelCurrentRequest","AcquireTokenSilentAndRedirectClientAppIfAlreadyLogggedIn","request","prompt","acquireTokenSilent","azureTokenRespObj","getAzureTokenResponseObjectForAquireTokenSilent","azuretokenresp","getAzureTokenJsonResponse","AZURE_TOKEN_EMPTY_RESPONSE_ACQUIRE_TOKEN_SILENT","acquireTokenPopup","AZURE_TOKEN_EMPTY_RESPONSE_ACQUIRE_TOKEN_POPUP","ACQUIRE_TOKEN_POPUP_FAILURE","ACQUIRE_TOKEN_FAILURE","AzureSignIn","firstTimeLoginAndDisplayLoginPopup","chooseAccountToLoginForAlreadyLoggedIn","getAzureTokenResponseObject","AZURE_TOKEN_EMPTY_RESPONSE_FIRST_TIME_LOGIN","CONSENT_REQUIRED","UNKNOWN_ERROR_OCCURED","LOGIN_FAILURE","AZURE_LOGIN_FAILURE","IsUnAuthorized","USER_CANCELLED","USER_CANCELLED_FROM_UNAUTHORIZED_AT_LOGIN_POPUP","acquireTokenSilientImpl","refreshtokenObj","getRefreshTokenJsonFromLocalStorage","accessToken","secret","MSAL_GUARD_CONFIG_AUTH_REQUEST_LOGIN_POPUP_FAILURE","LOGIN_POPUP_FAILURE","displayPnlComingSoon","clearLocalStorage","rpostClientId","width","postLocalStorageData","linkURL","portal","postCrossDomainMessage","getAzureClientId","azureTokenResponse","onLoad","azuretokenResp","date","getElementById","iWindow","contentWindow","postMessage","COULD_NOT_ABLE_TO_SEND_MESSAGE","AZURE_TOKEN_EMPTY_RESPONSE_BEFORE_SENDING_MESSAGE","clear","setCookie","expireDays","d","setTime","expires","toUTCString","cpath","cookie","getCookie","ca","split","caLen","cookieName","c","replace","deleteCookie","features","getDomainUrl","delimiter","start","tokens","slice","join","tokens2","result2","removeIframeElement","remove","postMessageToClientAppIfUserAlreadyLoggedin","pageLoaded","handleGoogleToken","handleCredentialResponse","AzureTokenResponseService","keys","Object","localStorageItem","jsonObj","getIdTokenJsonFromLocalStorage","getAccessTokenJsonFromLocalStorage","getIdTokenCliamsJsonFromLocalStorage","ConversionUtils","CommonUtilService","cname","checkTimer","setInterval","fadeOut","encodeURIComponent","expireCookie","cName","stringToBase64","base64String","base64ToString","randomInt","min","max","floor","random","GetQueryStringValue","inputParamter","queryString","rpostClientIdQs","callBackUrlQs","loginUrlQs","regex","RegExp","results","exec","decodeURIComponent","getBrowserName","agent","responseToPost","iframeId","callingMethod","MESSAGE_TO_POST_EMPTY_RESPONSE","trustDeviceInfo","jwtToken","redirectedFrom","respMsgToClient","TrustDeviceInfo","RedirectedFrom","TrustDeviceExpirationDate","clientIdValue","userStorage","link","postURL","storageData","GoogleAuthenticationService","googleSignIn","gapi","auth2","getAuthInstance","signIn","refreshToken","refreshAuthToken","getAccessToken","disconnect","HttpHeaders","throwError","baseAuthApiUrlCfg","SetLanguage","qsBase64","qsPlainText","mfaTokenAPIUrl","post","headers","resultOutput","passwordExpiresIn","pwdPolicySettingResultOutPut","passwordPolicySetting","navigateByUrl","replaceUrl","MFA_NOT_ENABLED_PWD_CHANGE_NOT_REQUIRED","RedirectToCallBackUrl","handleError","RedirectToResetPasswordReminderScreen","numOfDaysToExpireBase64String","ReloadCurrentRoute","currentUrl","skipLocationChange","resendOTPAPIUrl","extractData","res","handleErrorObservable","verifyOTPAPIUrl","appError","errorStatus","errorStatusText","statusText","msgId","Array","isArray","MessageId","error_description","errorResultContent","retMsg","errorMesg","ResetpasswordService","reqObj","resetPwdAPIUrl","RpostAuthenticationService","getExternalTokenAPIResponseToken","externalTokenModelObj","externalTokenAPIUrl","externalTokenEndPoint","Provider_Access_Token","provider_access_token","Provider","Client_id","apiGetById","_url","production","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","catch"],"sourceRoot":"webpack:///","x_google_ignoreList":[]}