{"version":3,"sources":["webpack:///src/app/modules/home/master-layout/auth/auth.component.ts","webpack:///src/app/modules/home/master-layout/auth/auth.component.html","webpack:///src/app/modules/home/master-layout/login/user-login.ts","webpack:///src/app/modules/home/master-layout/login/login.component.html","webpack:///src/app/modules/home/master-layout/login/login.component.ts","webpack:///src/app/shared/enums/oauth.enum.ts","webpack:///src/app/shared/components/oauth2-login/oauth2.service.ts","webpack:///src/app/shared/components/oauth2-login/oauth2-login.component.html","webpack:///src/app/shared/components/oauth2-login/oauth2-login.component.ts","webpack:///src/app/modules/home/customer-layout/customer-login/customer-login.component.html","webpack:///src/app/modules/home/customer-layout/customer-login/customer-login.component.ts","webpack:///src/app/modules/home/customer-layout/customer-register/customer-register.component.html","webpack:///src/app/modules/home/customer-layout/customer-register/customer-register.component.ts","webpack:///src/app/modules/home/customer-layout/customer-reset-password/customer-reset-password.component.html","webpack:///src/app/modules/home/customer-layout/customer-reset-password/customer-reset-password.component.ts","webpack:///src/app/modules/home/customer-layout/customer-request-password/customer-request-password.component.html","webpack:///src/app/modules/home/customer-layout/customer-request-password/customer-request-password.component.ts","webpack:///src/app/modules/home/customer-layout/customer-confirm-account/customer-confirm-account.component.html","webpack:///src/app/modules/home/master-layout/master-layout-routing.module.ts","webpack:///src/app/modules/home/customer-layout/customer-confirm-account/customer-confirm-account.component.ts","webpack:///src/app/modules/home/customer-layout/customer-register/customer-register-success/customer-register-success.component.ts","webpack:///src/app/modules/home/customer-layout/customer-register/customer-register-success/customer-register-success.component.html","webpack:///src/app/modules/home/master-layout/master-layout.module.ts"],"names":["AuthComponent","titleService","settingService","settingPoolService","service","location","router","super","configCompany","isDisableBackground","this","getConfigCompany","url","includes","setTitle","subscribe","res","UserLogin","rememberMe","value","LoginComponent","activeRoute","toast","frmBuilder","options","authService","httpBackend","nbAclService","userService","userExperienceTrackingService","submitted","isIframe","loginDisplay","httpClient","window","parent","opener","frmLogin","formGroup","returnUrl","snapshot","queryParams","result","authenticate","getConfigValue","toPromise","isSuccess","localStorage","removeItem","accessToken","getAccessToken","setItem","token","ex","console","log","getAutomationDataState","getSubjectProfile","urlNavigate","getRedirect","Helper","profileUrl","document","cookie","navigateByUrl","then","getToken","data","user","getPayload","userLastUrl","getUserLastUrl","userName","allInnerRoute","_validateUrl","getDiagnostics","markAsUntouched","markAsPristine","key","loginPopup","next","setLoginDisplay","idToken","error","apiUrl","environment","headers","append","get","e","message","danger","nebularToken","createdAt","Date","now","name","ownerStrategyName","JSON","stringify","href","getSettingByKeyAndGroup","resp","targetUrl","allRoutes","standardURL","split","slice","filter","x","undefined","navigate","AuthenticationType","SIGNIN","SIGNUP","OAUTH_TYPE","GOOGLE","OFFICE365","Oauth2Service","http","baseUrl","_googleClientId","credential","type","oAuthType","post","OAuth2LoginComponent","oauth2Sevice","msalAuthService","_renderer2","autoGenerateButton","ElementRef","customGoogleButtonElement","title","oauthType","oauthTypeVariable","authEnum","hiddenClass","getGoogleClientId","response","getSettingByKeyAndGroupAllow","customGoogleButtonClick","$event","preventDefault","initAndRenderGoogleButon","reconfigMsalModule","setupData","instance","PublicClientApplication","auth","clientId","authority","redirectUri","onLoadGoogleButton","onGoogleLibraryLoad","clickable","looptime","clicked","google","accounts","id","initialize","client_id","callback","handleCredentialResponse","bind","ux_mode","context","auto_select","prompt_parent_id","cancel_on_tap_outside","use_fedcm_for_prompt","googleButonNativeElement","renderButton","nativeElement","theme","size","width","locale","logo_alignment","addClass","autoGenerateGoogleButton","querySelector","click","processSigninOrSignupWithOAuth","processLogin","CustomerLoginComponent","authType","isMobile","isSmallScreen","params","innerWidth","event","CustomerRegisterComponent","cd","termsAndConditions","userModel","UserRegister","frmUser","getTermsAndConditions","createCustomer","email","terms","fieldName","CustomerResetPasswordComponent","redirectDelay","showMessages","strategy","errors","messages","frmReset","UserResetPassword","valid","resetSecret","query","search","startsWith","resetPassword","newPassword","password","confirmNewPassword","confirmPassword","success","setTimeout","add","resetPass","CustomerRequestPasswordComponent","frmRequest","UserRequestPassword","forgotPassword","requestPass","routes","path","component","children","CustomerConfirmAccountComponent","route","isLoading","confirmValue","activateAccount","customerId","userId","confirmAccount","CustomerRegisterSuccessComponent","userEmail","redirectToLogin","MasterLayoutRoutingModule","MasterLayoutModule"],"mappings":"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","file":"x","sourcesContent":["import { Location } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { NbAuthComponent, NbAuthService } from '@nebular/auth';\nimport { NbThemeService } from '@nebular/theme';\nimport { SettingCompanyViewModel } from 'src/app/modules/admin/setting-management/setting-company/setting-company';\nimport { SettingPoolService } from 'src/app/shared/services/setting-pool.service';\nimport { SettingService } from 'src/app/shared/services/setting.service';\n\n@Component({\n selector: 'app-auth',\n templateUrl: './auth.component.html',\n styleUrls: ['./auth.component.scss']\n})\nexport class AuthComponent extends NbAuthComponent implements OnInit {\n\n configCompany: SettingCompanyViewModel = new SettingCompanyViewModel();\n isDisableBackground: boolean = false;\n\n constructor(\n private titleService: Title,\n private settingService: SettingService,\n private settingPoolService: SettingPoolService,\n protected service: NbAuthService,\n protected location: Location,\n private router: Router) {\n super(service, location);\n this.getConfigCompany();\n this.isDisableBackground = this.router.url.includes('customer');\n // this.settingService.getConfigCompany().subscribe(res => {\n // if (res) this.configCompany = res;\n // });\n }\n\n ngOnInit(): void {\n if(this.router.url.includes('/customer/')) this.titleService.setTitle('ALTUS - DASHBOARD')\n //this.configCompany.urlCompanyBackGround = 'assets/images/login.jpeg';\n //this.configCompany.urlCompanyBackground = this.configCompany.urlCompanyBackground\n }\n\n async getConfigCompany() {\n let configCompany = await this.settingPoolService.getConfigCompany();\n configCompany.subscribe(res => {\n if (res) this.configCompany = res;\n });\n }\n}\n","\n \n \n \n \n \n \n \n \n \n","\nimport { prop, elementClass, required, model, email, minLength } from '@rxweb/reactive-form-validators';\nexport class UserLogin {\n @required()\n userNameOrEmail: string;\n @required()\n @minLength({ value: 6 })\n password: string;\n @prop()\n rememberMe = false;\n}\n","\n\n\n \n \n
\n \"Company\n
\n \n
\n \n
 OR  
\n \n
\n
\n\n \n \n \n Username\n \n \n {{frmLogin.controls.userNameOrEmail['errorMessage']}}\n \n\n \n Password\n \n \n {{frmLogin.controls.password['errorMessage']}}\n \n \n
\n \n Remember me\n Forgot Password\n
\n \n
\n ","import { UserExperienceTrackingService } from 'src/app/shared/components/user-experience-tracking/user-experience-tracking.service';\nimport { SettingPoolService } from 'src/app/shared/services/setting-pool.service';\nimport { UserService } from 'src/app/modules/admin/user-management/user.service';\nimport { HttpBackend, HttpClient, HttpHeaders } from '@angular/common/http';\n/*\n * Created on Thu Dec 19 2019\n *\n * Copyright (c) 2019 Primas Group\n * Create by Gia Nguyen\n */\n\nimport { Component, OnInit, Inject, ViewChild } from '@angular/core';\nimport { NbLoginComponent, NbAuthService, getDeepFromObject, NB_AUTH_OPTIONS, NbAuthResult } from '@nebular/auth';\nimport { FormGroup, NgForm } from '@angular/forms';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { RxFormBuilder, FormGroupExtension } from '@rxweb/reactive-form-validators';\nimport { NbThemeService, NbToastrService } from '@nebular/theme';\nimport { environment } from 'src/environments/environment';\nimport { UserLogin } from 'src/app/modules/home/master-layout/login/user-login';\nimport { NbAccessControl, NbAclService } from '@nebular/security';\nimport { Helper } from 'src/app/shared/utility/Helper';\nimport { SettingService } from 'src/app/shared/services/setting.service';\nimport { SettingCompanyViewModel } from 'src/app/modules/admin/setting-management/setting-company/setting-company';\nimport { MsalService } from '@azure/msal-angular';\n// import { AdminTabModeService } from 'src/app/shared/components/stand-alone-component/admin-tab-mode/admin-tab-mode.service';\nimport { NAV_MENU_ITEMS } from 'src/app/modules/admin/menu-items';\nimport { routes } from 'src/app/modules/admin/admin-routing.module';\n\n@Component({\n selector: 'app-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss']\n})\n/**\n * Login component\n */\nexport class LoginComponent implements OnInit {\n\n\n frmLogin!: FormGroup;\n submitted = false;\n returnUrl!: string;\n // tslint:disable-next-line: max-line-length\n configCompany: SettingCompanyViewModel = new SettingCompanyViewModel();\n isIframe = false;\n loginDisplay = false;\n private httpClient: HttpClient;\n\n constructor(\n private activeRoute: ActivatedRoute,\n private toast: NbToastrService,\n private router: Router,\n private frmBuilder: RxFormBuilder,\n protected service: NbAuthService,\n @Inject(NB_AUTH_OPTIONS) protected options = {},\n private settingService: SettingService,\n private settingPoolService: SettingPoolService,\n private authService: MsalService,\n httpBackend: HttpBackend,\n private nbAclService: NbAclService,\n private userService: UserService,\n private userExperienceTrackingService: UserExperienceTrackingService,\n // private tabModeService: AdminTabModeService,\n ) {\n // 2023-02-02 ducqm start add\n // this.settingService.getConfigCompany().subscribe(res => {\n // if (res) this.configCompany = res;\n // });\n this.getConfigCompany();\n // 2023-02-02 ducqm end add\n this.httpClient = new HttpClient(httpBackend);\n\n }\n\n ngOnInit(): void {\n this.isIframe = window !== window.parent && !window.opener;\n\n this.frmLogin = this.frmBuilder.formGroup(UserLogin);\n this.submitted = false;\n this.returnUrl = this.activeRoute.snapshot.queryParams.returnUrl;\n }\n async login() {\n this.submitted = !this.submitted;\n try {\n const result: NbAuthResult = await this.service.authenticate(this.getConfigValue('forms.login.strategy'), this.frmLogin.value).toPromise();\n if (result.isSuccess()) {\n // let accessAPI = (await this.tabModeService.getActiveTabFromBacked().toPromise()).result;\n // let tabUrl = accessAPI ? accessAPI.tabUrl : null;\n \n localStorage.removeItem(\"OpenedAutoLogin\");\n try {\n const accessToken = await this.userService.getAccessToken().toPromise();\n if (accessToken) {\n localStorage.setItem(\"accessToken\", accessToken.token);\n }\n }\n catch (ex) {\n console.log(ex);\n }\n\n this.getAutomationDataState();\n this.getSubjectProfile();\n\n let urlNavigate = result.getRedirect();\n window.localStorage.setItem(\"first_look_state_phone\", \"1\");\n if (this.returnUrl) {\n urlNavigate = this.returnUrl;\n }\n if (Helper.getCookie('profileUrl') !== '') {\n const profileUrl = Helper.getCookie('profileUrl');\n urlNavigate = `${profileUrl}`;\n document.cookie = 'profileUrl=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';\n }\n if (!urlNavigate || urlNavigate == \"/\") {\n this.service.getToken().subscribe(data => {\n var user = data.getPayload();\n var userLastUrl = this.userExperienceTrackingService.getUserLastUrl(user?.userName || \"\");\n // Default screen will be got from local storage first\n if(userLastUrl) {\n urlNavigate = userLastUrl || data.getPayload()?.[\"defaultScreen\"];\n } else urlNavigate = data.getPayload()[\"defaultScreen\"];\n window.localStorage.setItem(\"defaultLogin\", \"true\");\n // get all route: \n let allInnerRoute: string[] = Helper.validateRouteInApplication(routes);\n if (this._validateUrl(urlNavigate, allInnerRoute)) {\n this.router.navigateByUrl(urlNavigate).then(() => {\n });\n } else {\n if(userLastUrl) {\n this.router.navigateByUrl(urlNavigate).then(() => {});\n } else this.router.navigateByUrl(data.getPayload()?.[\"defaultScreen\"]).then(() => {});\n }\n })\n } else {\n this.router.navigateByUrl(urlNavigate).then(() => {\n });\n }\n\n //Login success call setting.\n // this.settingService.getDefaultDomainList();\n this.settingService.getDiagnostics();\n }\n }\n catch (ex) {\n console.log(ex);\n }\n (this.frmLogin as FormGroupExtension).markAsUntouched();\n (this.frmLogin as FormGroupExtension).markAsPristine();\n this.submitted = !this.submitted;\n }\n getConfigValue(key: string): any {\n return getDeepFromObject(this.options, key, null);\n }\n\n loginOffice365() {\n this.authService.loginPopup()\n .subscribe({\n next: async (result) => {\n console.log(result);\n await this.setLoginDisplay(result.idToken);\n },\n error: (error) => console.log(error)\n });\n }\n\n\n setLoginDisplay(accessToken: String) {\n const apiUrl = `${environment.apiAuth}/ExternalLogin`;\n let headers = new HttpHeaders();\n headers = headers.append('Authorization', `Bearer ${accessToken}`);\n headers = headers.append('Content-Type', 'application/json');\n this.getAutomationDataState();\n\n this.httpClient.get(apiUrl, { headers }).subscribe(e => {\n if (!e.message) {\n let nebularToken = {\n createdAt: Date.now(),\n name: \"nb:auth:jwt:token\",\n ownerStrategyName: \"email\",\n value: e.token\n }\n\n localStorage.setItem(\"auth_app_token\", JSON.stringify(nebularToken));\n localStorage.setItem(\"accessToken\", e.accessToken)\n localStorage.removeItem(\"OpenedAutoLogin\");\n\n let urlNavigate = \"/\";\n if (this.returnUrl) {\n urlNavigate = this.returnUrl;\n }\n\n if (Helper.getCookie('profileUrl') !== '') {\n const profileUrl = Helper.getCookie('profileUrl');\n urlNavigate = `${profileUrl}`;\n document.cookie = 'profileUrl=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';\n }\n\n\n if (!urlNavigate || urlNavigate == \"/\") {\n this.service.getToken().subscribe(data => {\n urlNavigate = data.getPayload()[\"defaultScreen\"];\n window.localStorage.setItem(\"defaultLogin\", \"true\");\n location.href = urlNavigate;\n })\n } else {\n location.href = urlNavigate;\n }\n //Login success call setting.\n // this.settingService.getDefaultDomainList();\n this.settingService.getDiagnostics();\n }\n else {\n this.toast.danger(e.message, \"Unauthorized\");\n }\n })\n }\n getAutomationDataState() {\n // this.settingService.getSettingByKeyAndGroup(\"IS_AUTOMATE_DATASTATE\", \"SYSTEM\").subscribe(e => {\n // if (e.result) {\n // localStorage.setItem(\"IS_AUTOMATE_DATASTATE\", e.result.value);\n // }\n // })\n this.settingPoolService.getSettingByKeyAndGroup(\"IS_AUTOMATE_DATASTATE\", \"SYSTEM\").subscribe(e => {\n if (e.result) {\n localStorage.setItem(\"IS_AUTOMATE_DATASTATE\", e.result.value);\n }\n })\n }\n\n //get subject profile if default screen is profile management\n getSubjectProfile() {\n // this.settingService.getSettingByKeyAndGroup(\"SUBJECT\", \"PROFILE\").subscribe(resp => {\n // if (resp.result) window.localStorage.setItem(\"subject_profile\", resp.result.value);\n // })\n this.settingPoolService.getSettingByKeyAndGroup(\"SUBJECT\", \"PROFILE\").subscribe(resp => {\n if (resp.result) window.localStorage.setItem(\"subject_profile\", resp.result.value);\n })\n }\n\n async getConfigCompany() {\n const configCompany = await this.settingPoolService.getConfigCompany();\n configCompany.subscribe(res => {\n if (res) this.configCompany = res;\n });\n }\n\n private _validateUrl(targetUrl: string, allRoutes: string[]) {\n if (!Helper.isNullOrEmpty(targetUrl) && targetUrl != '/') {\n let standardURL = targetUrl;\n standardURL = standardURL.split('/')[1];\n // filter out query parameters:\n standardURL = standardURL.split('?')[0];\n standardURL = standardURL.split('#')[0];\n if (allRoutes.slice().filter(x => x != undefined && !Helper.isNullOrEmpty(x)).includes(standardURL)) {\n return true;\n }\n return false;\n }\n return false;\n }\n\n redirectToForgotPassword() {\n this.router.navigate(['forgot-password']);\n }\n}\n","export enum AuthenticationType {\n SIGNIN = 0,\n SIGNUP = 1,\n}\n\nexport enum OAUTH_TYPE {\n GOOGLE = \"GOOGLE\",\n OFFICE365 = \"OFFICE365\",\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from 'src/environments/environment';\nimport { Observable } from 'rxjs';\nimport { AuthenticationType, OAUTH_TYPE } from '../../enums/oauth.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Oauth2Service {\n baseUrl = environment.apiAuth;\n\n constructor(\n private http: HttpClient,\n ) { }\n\n processSigninOrSignupWithOAuth(_googleClientId: string, credential: string, type: AuthenticationType, oAuthType: OAUTH_TYPE): Observable<{ token: string, accessToken: string }> {\n let headers = new HttpHeaders({});\n\n if (oAuthType == OAUTH_TYPE.GOOGLE) {\n headers = new HttpHeaders({\n \"GoogleClientId\": _googleClientId,\n });\n }\n let data = {\n \"credential\": credential,\n \"type\": type,\n \"oAuthType\": oAuthType,\n };\n return this.http.post(`${this.baseUrl}/ProcessSigninOrSignupWithOAuth`, data, { headers: headers })\n }\n\n}\n","\n \n \n\n\n\n\n \n
\n \n
\n \n \n {{title != null ? title : (type == authEnum.SIGNIN ? \"Sign in with Google\" : \"Sign up with Google\")}}\n \n
\n
\n\n\n \n\n","import { Component, ElementRef, Input, OnInit, Renderer2, ViewChild } from '@angular/core';\nimport { NbAuthService } from '@nebular/auth';\nimport { CredentialResponse } from 'google-one-tap';\nimport { ActivatedRoute } from '@angular/router';\nimport { Oauth2Service } from './oauth2.service';\nimport { Helper } from '../../utility/Helper';\nimport { SettingService } from '../../services/setting.service';\nimport { AuthenticationType, OAUTH_TYPE } from '../../enums/oauth.enum';\nimport { MsalService } from '@azure/msal-angular';\nimport { environment } from 'src/environments/environment';\nimport { PublicClientApplication } from '@azure/msal-browser';\n\n@Component({\n selector: 'app-oauth2-login',\n templateUrl: './oauth2-login.component.html',\n styleUrls: ['./oauth2-login.component.scss']\n})\nexport class OAuth2LoginComponent implements OnInit {\n\n @ViewChild(\"autoGenerateButton\") autoGenerateButton: ElementRef = new ElementRef({});\n @ViewChild(\"customGoogleButton\") customGoogleButtonElement: ElementRef = new ElementRef({});\n\n @Input() type: AuthenticationType = AuthenticationType.SIGNIN;\n @Input() title: string = null;\n\n @Input() oauthType: OAUTH_TYPE = OAUTH_TYPE.GOOGLE;\n oauthTypeVariable: any = OAUTH_TYPE;\n\n authEnum = AuthenticationType;\n returnUrl!: string;\n hiddenClass: string = \"hidden-out-of-dom\";\n private _googleClientId: string;\n private googleButonNativeElement: any;\n\n constructor(\n private activeRoute: ActivatedRoute,\n private oauth2Sevice: Oauth2Service,\n private settingService: SettingService,\n private msalAuthService: MsalService,\n protected service: NbAuthService,\n private _renderer2: Renderer2,\n ) { }\n\n ngOnInit(): void {\n this.reconfigMsalModule();\n this.returnUrl = this.activeRoute.snapshot.queryParams.returnUrl;\n this.setupData()\n }\n\n reconfigMsalModule() {\n //Change the default config into multipletenant setting.\n this.msalAuthService.instance = new PublicClientApplication({\n auth: {\n clientId: environment.multipleTenantClientId,\n authority: environment.multipleTenantAuthority,\n redirectUri: environment.redirectUri\n }\n })\n }\n\n async setupData() {\n if (this.oauthType == OAUTH_TYPE.GOOGLE) {\n await this.getGoogleClientId();\n this.onLoadGoogleButton();\n }\n }\n\n /* -------------------- GOOGLE AUTHENTICATION -------------------- */\n getGoogleClientId = async () => {\n let response = await this.settingService.getSettingByKeyAndGroupAllow(\"GOOGLE_CLIENT_ID\", \"GOOGLE_AUTHENTICATION\").toPromise();\n this._googleClientId = response.result?.value;\n }\n\n onLoadGoogleButton() {\n if (this._googleClientId) {\n // @ts-ignore\n window.onGoogleLibraryLoad = () => {\n this.initAndRenderGoogleButon();\n }\n } else {\n console.error(\"Google Client ID doesn't exist\");\n }\n }\n\n initAndRenderGoogleButon(clickable: boolean = false) {\n let looptime: number = 0;\n let endloop: number = 20;\n let clicked: boolean = false;\n let result: boolean = false;\n\n window.google.accounts.id.initialize({\n client_id: this._googleClientId,\n callback: this.handleCredentialResponse.bind(this),\n ux_mode: \"popup\",\n context: \"signin\",\n auto_select: false,\n prompt_parent_id: \"google_parent_id\",\n cancel_on_tap_outside: true,\n // FedCM migration from Google\n use_fedcm_for_prompt: true,\n })\n\n /* Onloop to render and get auto-generate google button element */\n while (this.googleButonNativeElement == null && looptime < endloop) {\n // this.autoGenerateButton.nativeElement.innerHTML = \"\";\n\n window.google.accounts.id.renderButton(\n this.autoGenerateButton.nativeElement,\n {\n theme: \"outline\",\n size: \"large\",\n width: 480,\n locale: \"en-US\",\n logo_alignment: \"center\",\n }\n );\n\n //Fake the google button auto generate from script - hidden it with CSS\n this._renderer2.addClass(this.autoGenerateButton.nativeElement, this.hiddenClass)\n\n let autoGenerateGoogleButton = this.autoGenerateButton.nativeElement.querySelector('div[role=button]');\n //The google button is still on html dom - state: Sign In/Up with Google\n if (autoGenerateGoogleButton) {\n this.googleButonNativeElement = autoGenerateGoogleButton;\n if (clickable) {\n this.googleButonNativeElement.click();\n clicked = true;\n }\n result = true;\n } else {\n looptime++;\n }\n }\n\n if (this.googleButonNativeElement != null && clickable && !clicked) {\n this.googleButonNativeElement.click();\n }\n\n if (this.googleButonNativeElement == null && !result) {\n console.error(\"Google auto generate ins't exist\");\n }\n\n //optional - use with the redirect_uri option\n // window.google.accounts.id.prompt((notification: PromptMomentNotification) => {\n // // console.log(notification);\n // })\n }\n\n customGoogleButtonClick = ($event) => {\n $event.preventDefault();\n this.initAndRenderGoogleButon(true);\n }\n\n handleCredentialResponse(response: CredentialResponse) {\n this.oauth2Sevice.processSigninOrSignupWithOAuth(this._googleClientId, response.credential, this.type, this.oauthType).subscribe((x) => {\n this.processLogin(x?.token, x?.accessToken);\n })\n }\n /* --------------------------------------------------------------- */\n\n /* ------------- MICROSOFT OFFICE 365 AUTHENTICATION ------------- */\n loginOffice365() {\n this.msalAuthService.loginPopup().subscribe({\n next: async (result) => {\n this.oauth2Sevice.processSigninOrSignupWithOAuth(this._googleClientId, result?.idToken, this.type, this.oauthType).subscribe((x) => {\n this.processLogin(x?.token, x?.accessToken);\n })\n },\n error: (error) => {\n console.log(error)\n }\n });\n }\n /* --------------------------------------------------------------- */\n\n /* ------------- LOGIN/REGISTER PROCESSING FUNCTION -------------- */\n async processLogin(token: string, accessToken: string) {\n let nebularToken = {\n createdAt: Date.now(),\n name: \"nb:auth:jwt:token\",\n ownerStrategyName: \"email\",\n value: token\n }\n\n localStorage.removeItem(\"OpenedAutoLogin\");\n localStorage.setItem(\"auth_app_token\", JSON.stringify(nebularToken));\n localStorage.setItem(\"accessToken\", accessToken);\n\n let urlNavigate = \"/\";\n if (this.returnUrl) {\n urlNavigate = this.returnUrl;\n }\n\n if (Helper.getCookie('profileUrl') !== '') {\n const profileUrl = Helper.getCookie('profileUrl');\n urlNavigate = `${profileUrl}`;\n document.cookie = 'profileUrl=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';\n }\n\n if (!urlNavigate || urlNavigate == \"/\") {\n this.service.getToken().subscribe(data => {\n if (data.getPayload()) {\n urlNavigate = data.getPayload()[\"defaultScreen\"];\n window.localStorage.setItem(\"defaultLogin\", \"true\");\n location.href = urlNavigate;\n }\n })\n } else {\n location.href = urlNavigate;\n }\n this.settingService.getDiagnostics();\n }\n /* --------------------------------------------------------------- */\n\n /* ------------ Duplicate from the Login.component.ts ------------ */\n validateUrl(targetUrl: string, allRoutes: string[]) {\n if (!Helper.isNullOrEmpty(targetUrl) && targetUrl != '/') {\n let standardURL = targetUrl;\n standardURL = standardURL.split('/')[1];\n // filter out query parameters:\n standardURL = standardURL.split('?')[0];\n standardURL = standardURL.split('#')[0];\n if (allRoutes.slice().filter(x => x != undefined && !Helper.isNullOrEmpty(x)).includes(standardURL)) {\n return true;\n }\n return false;\n }\n return false;\n }\n /* --------------------------------------------------------------- */\n}","\n\n\n \n\n\n\n

Login

\n

Hello! Log in with your email.

\n\n \n\n
\n\n
\n \n \n \n

\n Email is required!\n

\n

\n Email should be the real one!\n

\n
\n
\n
\n \n \n \n \n \n \n

\n Password is required!\n

\n

\n Password should contain\n from {{ getConfigValue('forms.validation.password.minLength') }}\n to {{ getConfigValue('forms.validation.password.maxLength') }}\n characters\n

\n
\n Forgot Password?\n
\n
\n
\n Remember me\n
\n\n \n
\n\n
\n or enter with:\n
\n
\n \n
\n
\n \n
\n
\n
\n\n
\n Don't have an account?\n \n
\n
\n","import { HttpBackend, HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Component, HostListener, Inject, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { NB_AUTH_OPTIONS, NbAuthResult, NbAuthService, getDeepFromObject } from '@nebular/auth';\nimport { NbToastrService } from '@nebular/theme';\nimport { FormGroupExtension, RxFormBuilder } from '@rxweb/reactive-form-validators';\nimport { SettingService } from 'src/app/shared/services/setting.service';\nimport { Helper } from 'src/app/shared/utility/Helper';\nimport { environment } from 'src/environments/environment';\nimport { UserLogin } from '../../master-layout/login/user-login';\nimport { UserService } from 'src/app/modules/admin/user-management/user.service';\nimport { routes } from 'src/app/modules/admin/admin-routing.module';\nimport { AuthenticationType, OAUTH_TYPE } from 'src/app/shared/enums/oauth.enum';\n\n\n@Component({\n selector: 'app-customer-login',\n templateUrl: './customer-login.component.html',\n styleUrls: ['./customer-login.component.scss']\n})\nexport class CustomerLoginComponent implements OnInit {\n\n params;\n frmLogin!: FormGroup;\n submitted = false;\n returnUrl!: string;\n isIframe = false;\n loginDisplay = false;\n private httpClient: HttpClient;\n authType = AuthenticationType;\n oauthType = OAUTH_TYPE;\n isMobile: boolean = false;\n isSmallScreen: boolean = false;\n\n constructor(\n private activeRoute: ActivatedRoute,\n private toast: NbToastrService,\n private router: Router,\n private frmBuilder: RxFormBuilder,\n protected service: NbAuthService,\n @Inject(NB_AUTH_OPTIONS) protected options = {},\n private settingService: SettingService,\n httpBackend: HttpBackend,\n private userService: UserService\n ) {\n this.params = this.activeRoute?.snapshot?.queryParams;\n if (this.params != null && this.params['plan'] != null && this.params['plan'] != undefined) {\n window.localStorage.setItem('open_plan_popup', '1');\n }\n let width = window.innerWidth;\n this.isMobile = width > 1200 ? false : true;\n this.isSmallScreen = width > 1200 && width <= 1400 ? true : false;\n this.httpClient = new HttpClient(httpBackend);\n }\n\n ngOnInit(): void {\n this.isIframe = window !== window.parent && !window.opener;\n\n this.frmLogin = this.frmBuilder.formGroup(UserLogin);\n this.submitted = false;\n this.returnUrl = this.activeRoute.snapshot.queryParams.returnUrl;\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: Event): void {\n this.isMobile = window.innerWidth <= 1199;\n this.isSmallScreen = window.innerWidth > 1200 && window.innerWidth <= 1400;\n }\n\n async login() {\n this.submitted = !this.submitted;\n try {\n const result: NbAuthResult = await this.service.authenticate(this.getConfigValue('forms.login.strategy'), this.frmLogin.value).toPromise();\n if (result.isSuccess()) {\n localStorage.removeItem(\"OpenedAutoLogin\");\n\n try {\n const accessToken = await this.userService.getAccessToken().toPromise();\n if (accessToken) {\n localStorage.setItem(\"accessToken\", accessToken.token);\n }\n \n if (this.params != null && this.params['plan'] != null && this.params['plan'] != undefined) {\n window.localStorage.setItem('open_plan_popup', '1');\n }\n }\n catch (ex) {\n console.log(ex);\n }\n\n let urlNavigate = result.getRedirect();\n window.localStorage.setItem(\"first_look_state_phone\", \"1\");\n if (this.returnUrl) {\n urlNavigate = this.returnUrl;\n }\n if (Helper.getCookie('profileUrl') !== '') {\n const profileUrl = Helper.getCookie('profileUrl');\n urlNavigate = `${profileUrl}`;\n document.cookie = 'profileUrl=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';\n }\n if (!urlNavigate || urlNavigate == \"/\") {\n this.service.getToken().subscribe(data => {\n window.localStorage.setItem(\"defaultLogin\", \"true\");\n // get all route:\n let allInnerRoute: string[] = Helper.validateRouteInApplication(routes);\n if (this._validateUrl(urlNavigate, allInnerRoute)) {\n this.router.navigate([urlNavigate]).then(() => {\n });\n } else {\n this.router.navigate([data.getPayload()[\"defaultScreen\"]]).then(() => {\n });\n }\n })\n } else {\n this.router.navigate([urlNavigate]).then(() => {\n });\n }\n } else {\n // Handle redirect when wrong password\n this.router.navigate([\"auth/customer/login\"]);\n }\n }\n catch (ex) {\n console.log(ex);\n }\n\n (this.frmLogin as FormGroupExtension).markAsUntouched();\n (this.frmLogin as FormGroupExtension).markAsPristine();\n this.submitted = !this.submitted;\n }\n\n getConfigValue(key: string): any {\n return getDeepFromObject(this.options, key, null);\n }\n\n setLoginDisplay(accessToken: String) {\n const apiUrl = `${environment.apiAuth}/ExternalLogin`;\n let headers = new HttpHeaders();\n headers = headers.append('Authorization', `Bearer ${accessToken}`);\n headers = headers.append('Content-Type', 'application/json');\n\n this.httpClient.get(apiUrl, { headers }).subscribe(e => {\n if (!e.message) {\n let nebularToken = {\n createdAt: Date.now(),\n name: \"nb:auth:jwt:token\",\n ownerStrategyName: \"email\",\n value: e.token\n }\n\n localStorage.removeItem(\"OpenedAutoLogin\");\n localStorage.setItem(\"auth_app_token\", JSON.stringify(nebularToken));\n localStorage.setItem(\"accessToken\", e.accessToken)\n let urlNavigate = \"/\";\n if (this.returnUrl) {\n urlNavigate = this.returnUrl;\n }\n\n if (Helper.getCookie('profileUrl') !== '') {\n const profileUrl = Helper.getCookie('profileUrl');\n urlNavigate = `${profileUrl}`;\n document.cookie = 'profileUrl=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';\n }\n\n if (!urlNavigate || urlNavigate == \"/\") {\n this.service.getToken().subscribe(data => {\n urlNavigate = data.getPayload()[\"defaultScreen\"];\n window.localStorage.setItem(\"defaultLogin\", \"true\");\n location.href = urlNavigate;\n })\n } else {\n location.href = urlNavigate;\n }\n\n this.settingService.getDiagnostics();\n }\n else {\n this.toast.danger(e.message, \"Unauthorized\");\n }\n })\n }\n\n private _validateUrl(targetUrl: string, allRoutes: string[]) {\n if (!Helper.isNullOrEmpty(targetUrl) && targetUrl != '/') {\n let standardURL = targetUrl;\n standardURL = standardURL.split('/')[1];\n // filter out query parameters:\n standardURL = standardURL.split('?')[0];\n standardURL = standardURL.split('#')[0];\n if (allRoutes.slice().filter(x => x != undefined && !Helper.isNullOrEmpty(x)).includes(standardURL)) {\n return true;\n }\n return false;\n }\n return false;\n }\n\n redirectToForgotPassword() {\n this.router.navigate(['forgot-password']);\n }\n\n redirectToRegister() {\n this.router.navigate(['/auth/customer/register']);\n }\n}\n","
\n \n
\n \n
\n
\n\n\n \n\n\n\n

Register

\n\n \n\n
\n\n
\n \n \n \n

\n Full name is required!\n

\n

\n Full name should contains\n from {{getConfigValue('forms.validation.fullName.minLength')}}\n to {{getConfigValue('forms.validation.fullName.maxLength')}}\n characters\n

\n
\n
\n\n
\n \n \n \n

\n Email is required!\n

\n

\n Email should be the real one!\n

\n
\n
\n\n
\n \n \n \n

\n Password is required!\n

\n
\n
\n\n
\n \n \n \n

\n Confirm Password is required!\n

\n

\n Password does not match the confirm password!\n

\n
\n
\n\n
\n \n Agree to Terms & Conditions\n \n
\n\n \n
\n\n
\n or enter with:\n
\n
\n \n
\n
\n \n
\n
\n
\n\n
\n Already have an account? Log in\n
\n
","import { ChangeDetectorRef, Component, HostListener, Inject, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { NB_AUTH_OPTIONS, NbAuthService, getDeepFromObject } from '@nebular/auth';\nimport { NbToastrService } from '@nebular/theme';\nimport { RxFormBuilder, compare, email, maxLength, minLength, prop, required, requiredTrue } from '@rxweb/reactive-form-validators';\nimport { UserModel } from 'src/app/modules/admin/user-management/user-model';\nimport { AuthenticationType, OAUTH_TYPE } from 'src/app/shared/enums/oauth.enum';\nimport { UserService } from 'src/app/modules/admin/user-management/user.service';\nimport { SettingService } from 'src/app/shared/services/setting.service';\n@Component({\n selector: 'app-customer-register',\n templateUrl: './customer-register.component.html',\n styleUrls: ['./customer-register.component.scss']\n})\nexport class CustomerRegisterComponent implements OnInit {\n frmUser: FormGroup;\n userModel: UserRegister;\n submitted: boolean = false;\n authType = AuthenticationType;\n oauthType = OAUTH_TYPE;\n isMobile: boolean = false;\n isSmallScreen: boolean = false;\n termsAndConditions: string = '#';\n\n constructor(\n protected service: UserService,\n @Inject(NB_AUTH_OPTIONS) protected options = {},\n protected cd: ChangeDetectorRef,\n protected router: Router,\n private frmBuilder: RxFormBuilder,\n private toast: NbToastrService,\n private settingService: SettingService\n ) { \n let width = window.innerWidth;\n this.isMobile = width > 1200 ? false : true;\n this.isSmallScreen = width > 1200 && width < 1400 ? true : false;\n }\n\n ngOnInit(): void {\n this.userModel = new UserRegister();\n this.frmUser = this.frmBuilder.formGroup(UserRegister, this.userModel);\n this.getTermsAndConditions();\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: Event): void {\n this.isMobile = window.innerWidth <= 1279;\n this.isSmallScreen = window.innerWidth > 1279 && window.innerWidth < 1400;\n }\n\n async register() {\n this.submitted = true;\n try {\n const result = await this.service.createCustomer(this.userModel).toPromise();\n if (result != null && result.result) {\n this.router.navigate(['/auth/customer/register-success'], { queryParams: {email: this.userModel?.email}});\n }\n else if (result != null) {\n this.toast.danger(result.message, \"Error\");\n }\n }\n catch (error) {\n this.submitted = false;\n }\n this.submitted = false;\n }\n\n getConfigValue(key: string): any {\n return getDeepFromObject(this.options, key, null);\n }\n async getTermsAndConditions() {\n const response = await this.settingService.getSettingByKeyAndGroupAllow(\"TERMS_AND_CONDITIONS_URL\", \"CUSTOMER\").toPromise();\n this.termsAndConditions = response.result?.value ?? '#';\n }\n}\n\nexport class UserRegister {\n @required()\n userName: string;\n\n @required()\n @minLength({ value: 6, message: 'Password should contain from 6 to 50 characters' })\n @maxLength({ value: 50, message: 'Password should contain from 6 to 50 characters' })\n password: string;\n\n @required({ message: 'Password confirmation is required!' })\n @compare({ fieldName: 'password', message: 'Password does not match the confirm password.' })\n @minLength({ value: 6 })\n confirmPassword!: string;\n\n @required()\n @email()\n email: string;\n\n @requiredTrue()\n terms: boolean = false;\n}\n","

Change password

\n

Please set a new password

\n\n\n

Oh snap!

\n
    \n
  • {{ error }}
  • \n
\n
\n\n\n

Hooray!

\n
    \n
  • {{ message }}
  • \n
\n
\n\n
\n\n
\n \n \n \n

\n {{password?.['errorMessage']}}\n

\n
\n
\n\n
\n \n \n \n

\n {{rePass?.['errorMessage']}}\n

\n

\n {{rePass?.['errorMessage']}}\n

\n
\n
\n\n \n
\n\n
\n

Back to Log In

\n

Register

\n
","import { ChangeDetectorRef, Component, Inject, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { NB_AUTH_OPTIONS, NbAuthResult, NbAuthService, getDeepFromObject } from '@nebular/auth';\nimport { RxFormBuilder, compare, maxLength, minLength, required } from '@rxweb/reactive-form-validators';\nimport { UserService } from 'src/app/modules/admin/user-management/user.service';\nimport { ResetPassword } from '../../master-layout/reset-password/reset-password.model';\nimport { NbToastrService } from '@nebular/theme';\n\n@Component({\n selector: 'app-customer-reset-password',\n templateUrl: './customer-reset-password.component.html',\n styleUrls: ['./customer-reset-password.component.scss']\n})\nexport class CustomerResetPasswordComponent implements OnInit {\n frmReset: FormGroup;\n\n redirectDelay: number = 0;\n showMessages: any = {};\n strategy: string = '';\n\n submitted = false;\n errors: string[] = [];\n messages: string[] = [];\n user: any = {};\n\n constructor(\n protected service: UserService,\n @Inject(NB_AUTH_OPTIONS) protected options = {},\n protected cd: ChangeDetectorRef,\n protected router: Router,\n private frmBuilder: RxFormBuilder,\n private toast: NbToastrService\n ) {\n this.frmReset = this.frmBuilder.formGroup(UserResetPassword, new UserResetPassword());\n\n this.redirectDelay = this.getConfigValue('forms.resetPassword.redirectDelay');\n this.showMessages = this.getConfigValue('forms.resetPassword.showMessages');\n this.strategy = this.getConfigValue('forms.resetPassword.strategy');\n }\n\n ngOnInit(): void {\n\n }\n\n resetPass(): void {\n if (this.frmReset.valid) {\n this.submitted = !this.submitted; //loading state\n\n let query = window.location.search; //get query params\n let resetSecret;\n\n //make sure the split function not crash app\n if (query.startsWith(\"?token=\")) {\n resetSecret = query.split(\"?token=\")[1];\n }\n\n if (resetSecret) {\n var model: ResetPassword = {\n newPassword: this.frmReset.value.password,\n confirmNewPassword: this.frmReset.value.confirmPassword\n }\n\n this.service.resetPassword(resetSecret, model).subscribe(resp => {\n if (resp.result) {\n this.toast.success(\"Change Password Success\", \"Success\");\n setTimeout(() => {\n this.router.navigate(['auth/customer/login']);\n }, 2000);\n }\n }).add(() => {\n this.submitted = !this.submitted;\n });\n }\n else {\n this.toast.danger(\"Change Password Failed\", \"Error\");\n this.submitted = !this.submitted;\n }\n }\n }\n\n getConfigValue(key: string): any {\n return getDeepFromObject(this.options, key, null);\n }\n}\n\nexport class UserResetPassword {\n @required()\n @minLength({ value: 6, message: 'Password should contain from 6 to 50 characters' })\n @maxLength({ value: 50, message: 'Password should contain from 6 to 50 characters' })\n password: string;\n\n @required({ message: 'Password confirmation is required!' })\n @compare({ fieldName: 'password', message: 'Password does not match the confirm password.' })\n @minLength({ value: 6 })\n confirmPassword!: string;\n}","

Forgot Password

\n

Enter your email address and we’ll send a link to reset your password

\n\n\n\n
\n\n
\n \n \n \n

\n Email is required!\n

\n

\n Email should be the real one!\n

\n
\n
\n\n \n
\n\n
\n

Back to Log In

\n

Register

\n
","import { ChangeDetectorRef, Component, Inject, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { NB_AUTH_OPTIONS, NbAuthService, getDeepFromObject } from '@nebular/auth';\nimport { NbToastrService } from '@nebular/theme';\nimport { RxFormBuilder, email, required } from '@rxweb/reactive-form-validators';\nimport { UserService } from 'src/app/modules/admin/user-management/user.service';\n\n@Component({\n selector: 'app-customer-request-password',\n templateUrl: './customer-request-password.component.html',\n styleUrls: ['./customer-request-password.component.scss']\n})\nexport class CustomerRequestPasswordComponent implements OnInit {\n submitted: boolean = false;\n frmRequest: FormGroup;\n\n constructor(\n protected service: UserService,\n @Inject(NB_AUTH_OPTIONS) protected options = {},\n protected cd: ChangeDetectorRef,\n protected router: Router,\n private frmBuilder: RxFormBuilder,\n private toast: NbToastrService\n ) { }\n\n ngOnInit(): void {\n this.frmRequest = this.frmBuilder.formGroup(UserRequestPassword, new UserRequestPassword());\n }\n\n async requestPass() {\n this.submitted = true;\n try {\n const result = await this.service.forgotPassword(this.frmRequest.value, true).toPromise();\n if (result != null && result.result) {\n this.toast.success(\"Please check your email to reset the new password\", \"Success\");\n setTimeout(() => {\n this.router.navigate(['/auth/customer/login']);\n }, 2000)\n }\n else if (result != null) {\n this.toast.danger(result.message, \"Error\");\n this.submitted = false;\n }\n }\n catch (error) {\n this.submitted = false;\n }\n }\n\n getConfigValue(key: string): any {\n return getDeepFromObject(this.options, key, null);\n }\n}\n\nexport class UserRequestPassword {\n @required()\n @email()\n email: string;\n}\n","
\n \n \n \n
\n\n\n\n

THANK YOU!

\n \n

Congratulations! Your account has been successfully confirmed. Thank you for choosing us - Your journey with Altus Entertainment begins now

\n \n
\n\n\n \n

Account confirmation unsuccessful. Please double-check your information or contact support for assistance. Thank you for your understanding

\n \n
\n\n\n \n \n\n","import { NgModule } from \"@angular/core\";\nimport { Routes, RouterModule } from \"@angular/router\";\nimport { NbAuthComponent } from \"@nebular/auth\";\nimport { AuthComponent } from \"./auth/auth.component\";\nimport { LoginComponent } from \"./login/login.component\";\nimport { CustomerLoginComponent } from \"../customer-layout/customer-login/customer-login.component\";\nimport { CustomerRegisterComponent } from \"../customer-layout/customer-register/customer-register.component\";\nimport { CustomerResetPasswordComponent } from \"../customer-layout/customer-reset-password/customer-reset-password.component\";\nimport { CustomerRequestPasswordComponent } from \"../customer-layout/customer-request-password/customer-request-password.component\";\nimport { CustomerConfirmAccountComponent } from \"../customer-layout/customer-confirm-account/customer-confirm-account.component\";\nimport { CustomerRegisterSuccessComponent } from \"../customer-layout/customer-register/customer-register-success/customer-register-success.component\";\n\nconst routes: Routes = [\n {\n path: '',\n component: AuthComponent,\n children: [\n {\n path: '',\n component: LoginComponent,\n },\n {\n path: 'customer',\n component: CustomerLoginComponent\n },\n {\n path: 'customer/login',\n component: CustomerLoginComponent\n },\n {\n path: 'customer/register',\n component: CustomerRegisterComponent\n },\n {\n path: 'customer/request-password',\n component: CustomerRequestPasswordComponent\n },\n {\n path: 'customer/reset-password',\n component: CustomerResetPasswordComponent\n },\n {\n path: 'customer/confirm-account',\n component: CustomerConfirmAccountComponent\n },\n {\n path: 'customer/register-success',\n component: CustomerRegisterSuccessComponent\n }\n ]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class MasterLayoutRoutingModule {\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { UserService } from 'src/app/modules/admin/user-management/user.service';\n\n@Component({\n selector: 'app-customer-confirm-account',\n templateUrl: './customer-confirm-account.component.html',\n styleUrls: ['./customer-confirm-account.component.scss']\n})\nexport class CustomerConfirmAccountComponent implements OnInit {\n\n isLoading: boolean = true;\n confirmValue: boolean = false;\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n protected service: UserService\n ) { }\n\n ngOnInit(): void {\n this.activateAccount();\n }\n\n activateAccount(): void {\n let customerId = \"\";\n this.isLoading = true;\n\n this.route.queryParams.subscribe(params => {\n if (params.userId) customerId = params.userId;\n \n if (customerId) {\n this.service.confirmAccount(customerId).subscribe(resp => {\n if (resp.result) this.confirmValue = true;\n else this.confirmValue = false;\n }).add(() => {\n this.isLoading = false;\n })\n }\n else {\n this.isLoading = false;\n this.confirmValue = false;\n }\n });\n }\n\n redirectLogin() {\n this.router.navigate(['auth/customer/login']);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n selector: 'app-customer-register-success',\n templateUrl: './customer-register-success.component.html',\n styleUrls: ['./customer-register-success.component.scss']\n})\nexport class CustomerRegisterSuccessComponent implements OnInit {\n userEmail: string = \"\";\n constructor(\n private router: Router,\n private route: ActivatedRoute\n ) { \n \n }\n\n ngOnInit(): void {\n this.route.queryParams.subscribe((params) => {this.userEmail = params['email']; console.log(params)});\n }\n\n redirectToLogin() {\n this.router.navigate([`/auth/customer/login`]);\n }\n\n}\n","\n \n
\n \n
\n

Verify your email address.

\n \n We have sent a verification link to {{userEmail || \"your email\"}}.\n \n \n Click on the link to complete the verification process.\n \n \n You might need to check your spam folder.\n \n \n \n You can reach us at venues@altusentertainment.com if you have any questions.\n \n
\n
","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NbThemeModule } from '@nebular/theme';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { AuthComponent } from './auth/auth.component';\nimport { LoginComponent } from './login/login.component';\nimport { MasterLayoutRoutingModule } from './master-layout-routing.module';\nimport { MasterLayoutComponent } from './master-layout.component';\nimport { ResetPasswordComponent } from './reset-password/reset-password.component';\nimport { ResetPasswordSuccessComponent } from './reset-password/reset-password-success/reset-password-success.component';\nimport { ResetPasswordFailComponent } from './reset-password/reset-password-fail/reset-password-fail.component';\nimport { ForgotPasswordComponent } from './forgot-password/forgot-password.component';\nimport { FotgotPasswordSuccessComponent } from './forgot-password/fotgot-password-success/fotgot-password-success.component';\nimport { CustomerLoginComponent } from '../customer-layout/customer-login/customer-login.component';\nimport { CustomerRegisterComponent } from '../customer-layout/customer-register/customer-register.component';\nimport { CustomerRequestPasswordComponent } from '../customer-layout/customer-request-password/customer-request-password.component';\nimport { CustomerResetPasswordComponent } from '../customer-layout/customer-reset-password/customer-reset-password.component';\nimport { CustomerConfirmAccountComponent } from '../customer-layout/customer-confirm-account/customer-confirm-account.component';\n\n@NgModule({\n imports: [\n MasterLayoutRoutingModule,\n SharedModule,\n ],\n declarations: [\n AuthComponent,\n MasterLayoutComponent,\n LoginComponent,\n ResetPasswordComponent,\n ResetPasswordSuccessComponent,\n ResetPasswordFailComponent,\n ForgotPasswordComponent,\n FotgotPasswordSuccessComponent,\n CustomerLoginComponent,\n CustomerRegisterComponent,\n CustomerRequestPasswordComponent,\n CustomerResetPasswordComponent,\n CustomerConfirmAccountComponent\n ]\n})\nexport class MasterLayoutModule { }\n"]}