{"version":3,"file":"src_app_views_public_public_module_ts.0587154d1df1c279.js","mappings":"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","names":["i0","ForgotPasswordComponent","constructor","fb","router","authService","this","ngOnInit","initializeForms","forgotPwForm","group","email","Validators","forgotPass","getRawValue","forgotPassword","subscribe","res","reset","RouteLogIn","navigateByUrl","selectors","ctx","LogInComponent","toastService","encryptionService","recaptchaV3Service","environment","emailName","loginForm","get","password","downloadPrivacyPolicy","fileUrl","storageUrl","link","document","createElement","style","display","fetch","then","response","ok","error","blob","url","window","URL","createObjectURL","href","download","click","revokeObjectURL","catch","finally","body","removeChild","appendChild","login","value","encryptPassword","login$","execute","pipe","concatMap","token","forkJoin","recaptchaResult","recaptchaVerify","loginResult","take","results","loginRes","captureUserInfo","permissions","includes","Permission","isStateDashboardEnabled","ResetPasswordComponent","toast","newPw","resetPwForm","confirmPw","guid","getGuidFromUrl","isValidIdentifier","patternValidator","hasNumber","hasCapitalCase","hasSmallCase","hasSpecialCharacters","validator","matchPassword","resetPw","payload","newPassword","changePassword","tap","resetFailed","setTimeout","getCurrentUser","logout","confirmedPassword","controls","setErrors","passwordMismatch","regex","control","valid","test","routerUrl","indexOfSlash","lastIndexOf","slice","LogInGuard","auth","canActivate","checkLogin","parseUrl","factory","CreatePasswordComponent","createPwForm","createPw","routes","path","component","HeaderLayoutComponent","route","BehaviorSubject","showFooterSubject","asObservable","updateFooter","events","filter","event","NavigationEnd","next","snapshot","firstChild","routeConfig","children","PublicRoutingModule","RouterModule","PublicModule","imports","CommonModule","SharedModule","FormsModule","CoreModule"],"sourceRoot":"webpack:///","sources":["./src/app/views/public/forgot-password/forgot-password.component.html","./src/app/views/public/forgot-password/forgot-password.component.ts","./src/app/views/public/log-in/log-in.component.html","./src/app/views/public/log-in/log-in.component.ts","./src/app/views/public/reset-password/reset-password.component.html","./src/app/views/public/reset-password/reset-password.component.ts","./src/app/core/guards/log-in.guard.ts","./src/app/views/public/create-password/create-password.component.html","./src/app/views/public/create-password/create-password.component.ts","./src/app/views/public/header-layout/header-layout.component.html","./src/app/views/public/public-routing.module.ts","./src/app/views/public/header-layout/header-layout.component.ts","./src/app/views/public/public.module.ts"],"sourcesContent":["<form class=\"global-font-normal flex flex-row justify-center my-20\" [formGroup]=\"forgotPwForm\"\r\n  (ngSubmit)=\"forgotPass()\">\r\n  <div\r\n    class=\"basis-11/12 sm:basis-1/2 md:basis-1/3 xl:basis-1/4 2xl:basis-1/5 bg-white shadow-lg shadow-drdpblue-100 rounded-[20px] py-8 px-8\">\r\n    <h1 class=\"global-font-bold text-xl mb-6\">Forgot password?</h1>\r\n\r\n    <div class=\"flex border rounded-lg border-drdpblue-300 shadow-drdpblue-100\">\r\n      <div class=\"rounded-l basis-1/12 flex items-center justify-center bg-drdpblue-300 text-white\">\r\n        <i class=\"uil uil-user\"></i>\r\n      </div>\r\n      <input\r\n        class=\"form-control basis-11/12 appearance-none rounded-lg w-5/6 py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline\"\r\n        email required type=\"email\" placeholder=\"Email\" formControlName=\"email\" maxlength=\"250\">\r\n    </div>\r\n    <div\r\n      *ngIf=\"forgotPwForm.controls['email'].invalid && (forgotPwForm.controls['email'].dirty || forgotPwForm.controls['email'].touched)\"\r\n      class=\"text-sm text-red-700\">Please enter your email.</div>\r\n    <button\r\n      class=\"mb-2 mt-5 bg-drdpblue-300 hover:bg-blue-500 disabled:bg-blue-500 w-full text-white py-2 px-4 rounded-lg focus:outline-none focus:shadow-outline\"\r\n      [disabled]=\"!forgotPwForm.valid\">Submit</button>\r\n    <div class=\"flex\">\r\n      <a class=\"basis-full text-center text-sm text-drdpblue-300 hover:text-blue-500 cursor-pointer\"\r\n        (click)=\"RouteLogIn()\">\r\n        Return to login\r\n      </a>\r\n    </div>\r\n  </div>\r\n</form>","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '@core/services/auth.service';\r\n@Component({\r\n  selector: 'drdp-forgot-password',\r\n  templateUrl: './forgot-password.component.html',\r\n  styleUrls: ['./forgot-password.component.scss']\r\n})\r\n\r\nexport class ForgotPasswordComponent implements OnInit {\r\n  forgotPwForm: FormGroup | any;\r\n\r\n  constructor(private fb: FormBuilder, private router: Router, private authService: AuthService) { }\r\n\r\n  ngOnInit(): void {\r\n    this.initializeForms();\r\n  }\r\n\r\n  initializeForms(): void {\r\n    this.forgotPwForm = this.fb.group({\r\n      email: ['', Validators.required],\r\n    });\r\n  }\r\n\r\n  forgotPass():void{\r\n    const {email} = this.forgotPwForm.getRawValue();\r\n\r\n    this.authService.forgotPassword(email, 'Reset email has been sent!').subscribe((res: any) => {\r\n      if (res) {\r\n        this.forgotPwForm.reset();\r\n      }\r\n    })\r\n  }\r\n\r\n  RouteLogIn() {\r\n    this.router.navigateByUrl('/login');\r\n  }\r\n}\r\n","<div class=\"flex flex-col lg:flex-row justify-center gap-4 lg:gap-10 my-10 py-8 px-8\">\r\n  <div\r\n    class=\"w-full lg:w-1/2 xl:w-1/3 2xl:w-1/4 bg-white shadow-lg shadow-drdpblue-100 rounded-lg py-8 px-8 mt-4 lg:mt-0\">\r\n    <form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\r\n      <h1 class=\"global-font-bold text-xl mb-6\">Log in to your account</h1>\r\n      <div class=\"flex border rounded-lg border-drdpblue-300 shadow-drdpblue-100\">\r\n        <div class=\"rounded-l basis-1/12 flex items-center justify-center bg-drdpblue-300 text-white\">\r\n          <i class=\"uil uil-user\"></i>\r\n        </div>\r\n        <input\r\n          class=\"form-control basis-11/12 appearance-none rounded-lg w-5/6 py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline\"\r\n          email required type=\"email\" placeholder=\"Email\" formControlName=\"emailName\" maxlength=\"250\">\r\n      </div>\r\n      <div *ngIf=\"emailName.invalid && (emailName.dirty || emailName.touched)\" class=\"text-sm text-red-700\">Please enter\r\n        your email.</div>\r\n      <div class=\"flex mt-6 border rounded-lg border-drdpblue-300 shadow-drdpblue-100\">\r\n        <div class=\"rounded-l basis-1/12 flex items-center justify-center bg-drdpblue-300 text-white\">\r\n          <i class=\"uil uil-lock\"></i>\r\n        </div>\r\n        <input\r\n          class=\"form-control basis-11/12 appearance-none w-5/6 py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline\"\r\n          maxlength=\"50\" placeholder=\"Password\" required pInputText [type]=\"hidden ? 'password' : 'text'\"\r\n          formControlName=\"password\">\r\n        <div class=\"items-center flex\">\r\n          <i class=\"mx-1 uil\" (click)=\"hidden = !hidden\" [ngClass]=\"{'uil-eye-slash': hidden, 'uil-eye': !hidden }\"></i>\r\n        </div>\r\n      </div>\r\n      <div *ngIf=\"password.invalid && (password.dirty || password.touched)\" class=\"text-sm text-red-700\">Please enter\r\n        your password.</div>\r\n\r\n      <button type=\"submit\"\r\n        class=\"mb-2 mt-5 bg-drdpblue-300 hover:bg-blue-500 disabled:bg-blue-500 w-full text-white py-2 px-4 rounded-lg focus:outline-none focus:shadow-outline\"\r\n        [disabled]=\"!loginForm.valid\">Log In\r\n      </button>\r\n\r\n      <div *ngIf=\"loginFailed\" class=\" bg-[#F3DEDE] py-1 text-center\">\r\n        <p>Failed to login.</p>\r\n      </div>\r\n      <div class=\"flex\">\r\n        <a class=\"basis-full text-center text-sm text-drdpblue-300 hover:text-blue-500 cursor-pointer my-2\"\r\n          routerLink=\"reset\">\r\n          Forgot Password?\r\n        </a>\r\n      </div>\r\n    </form>\r\n  </div>\r\n</div>\r\n  \r\n<div class=\"global-font-normal flex flex-col items-center mb-5\">\r\n  <drdp-btn type=\"button\" (click)=\"downloadPrivacyPolicy()\">\r\n    Download Privacy Policy\r\n    <i class=\"uil uil-file-download\"></i>\r\n  </drdp-btn>\r\n\r\n  <div class=\"flex justify-center mt-2\">\r\n    <a class='drdp-button' href=\"https://www.desiredresults.us/drdp-online-resources\" target=\"_blank\">DRDP Online\r\n      Resources</a>\r\n    <a class='drdp-button' href=\"https://www.desiredresults.us/resources/observation-resources/drdp-observation-resources\"\r\n      target=\"_blank\">DRDP Observation\r\n      Resources</a>\r\n  </div>\r\n</div>\r\n\r\n<div class=\"global-font-normal flex flex-row justify-center text-center\">\r\n  <div class=\"w-full sm:w-11/12 md:w-10/12 lg:w-9/12 xl:w-8/12 2xl:w-7/12 mx-auto\">\r\n    <p class=\"text-sm mt-2\">State of California Department of Social Services, Copyright 2024. Joint funding\r\n      provided by the California Department of Social Services, and the California Department of Education.</p>\r\n    <p class=\"text-sm mb-20\">For assistance, please contact\r\n      <a class=\"text-drdpblue-300 hover:underline\" href=\"tel:1-800-770-6339\">1-800-770-6339</a> or email\r\n      <a class=\"text-drdpblue-300 hover:underline\" href=\"mailto:DRDPOnline@wested.org\">DRDPOnline@wested.org</a></p>\r\n  </div>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '@core/services/auth.service';\r\nimport { EncryptionService } from '@core/services/encryption.service';\r\nimport { ToastService } from '@core/services/toast.service';\r\nimport { Observable, concatMap, forkJoin, take, tap } from 'rxjs';\r\nimport { ReCaptchaV3Service } from 'ng-recaptcha';\r\nimport { environment } from '@env/environment';\r\nimport { Permission } from '@core/enums/permissions';\r\n\r\n@Component({\r\n  selector: 'drdp-log-in',\r\n  templateUrl: './log-in.component.html',\r\n  styleUrls: ['./log-in.component.scss']\r\n})\r\nexport class LogInComponent implements OnInit {\r\n  loginForm: FormGroup | any;\r\n  hidden = true;\r\n  loginFailed = false;\r\n  verifyAndSubmit$: Observable<any> | undefined;\r\n  private storageUrl = environment.storageUrl;\r\n\r\n  get emailName() { return this.loginForm.get('emailName') };\r\n  get password() { return this.loginForm.get('password') };\r\n\r\n  constructor(private fb: FormBuilder, private authService: AuthService, private toastService: ToastService, private encryptionService: EncryptionService,\r\n              private recaptchaV3Service: ReCaptchaV3Service, private router: Router) { }\r\n\r\n  ngOnInit(): void {\r\n    this.initializeForms();\r\n  }\r\n\r\n  initializeForms(): void {\r\n    this.loginForm = this.fb.group({\r\n      emailName: ['', Validators.required],\r\n      password: ['', [Validators.required, Validators.minLength(6), Validators.maxLength(50), Validators.pattern(/^\\S*$/)]]\r\n    });\r\n  }\r\n\r\n  downloadPrivacyPolicy(): void {\r\n    const fileUrl = this.storageUrl + 'drdp-rebuild-public-resource/DRDP_Privacy_Policy.pdf';\r\n    const link = document.createElement('a');\r\n    link.style.display = 'none';\r\n\r\n    fetch(fileUrl)\r\n      .then(response => {\r\n        if (!response.ok) {\r\n          this.toastService.error('Failed to download file.');\r\n        }\r\n        return response.blob();\r\n      })\r\n      .then(blob => {\r\n        const url = window.URL.createObjectURL(blob);\r\n        link.href = url;\r\n        link.download = 'Privacy Policy';\r\n        link.click();\r\n        window.URL.revokeObjectURL(url);\r\n      })\r\n      .catch(error => {\r\n        this.toastService.error('Failed to download file.');\r\n      })\r\n      .finally(() => {\r\n        document.body.removeChild(link);\r\n      });\r\n\r\n    document.body.appendChild(link);\r\n  }\r\n\r\n  login(): void {\r\n    let loginPayload: any = this.loginForm.value;\r\n    loginPayload.password = this.encryptionService.encryptPassword(this.password.value);\r\n  \r\n    const recaptcha$ = this.recaptchaV3Service.execute('handleSubmit');\r\n    const login$ = recaptcha$.pipe(\r\n      concatMap((token: string) =>\r\n        forkJoin({\r\n          recaptchaResult: this.authService.recaptchaVerify(token),\r\n          loginResult: this.authService.login(this.loginForm.value, 'Login Successful')\r\n        })\r\n      )\r\n    );\r\n  \r\n    login$.pipe(\r\n      take(1),\r\n    ).subscribe((results: any) => {\r\n      const recaptchaRes = results.recaptchaResult;\r\n      const loginRes = results.loginResult;\r\n  \r\n      // Check recaptcha and login responses\r\n      if (!recaptchaRes || !loginRes.token) {\r\n        this.toastService.error('User name or password is incorrect.');\r\n        return;\r\n      }\r\n  \r\n      // Both recaptcha and login were successful\r\n      this.authService.captureUserInfo(loginRes);\r\n      loginRes?.permissions?.includes(Permission.AccessStateDashboard) && loginRes?.isStateDashboardEnabled\r\n        ? this.router.navigateByUrl('state-dashboard') \r\n        : this.router.navigateByUrl('dashboard');\r\n    });\r\n  }\r\n}\r\n","<form [formGroup]=\"resetPwForm\" (ngSubmit)=\"resetPw()\">\r\n  <div\r\n      class=\"flex flex-row my-20 justify-center\">\r\n    <div class=\"basis-11/12 sm:basis-1/2 md:basis-1/3 xl:basis-1/4 2xl:basis-1/5 bg-white shadow-lg shadow-drdpblue-100 rounded-[20px] p-8 my-auto\">\r\n      <h1 class=\"global-font-bold text-xl text-center mb-6\">Reset your password</h1>\r\n        <div\r\n          class=\"flex mb-6 border rounded-lg border-drdpblue-300 shadow-drdpblue-100\">\r\n          <div\r\n            class=\"rounded-l basis-1/12 flex items-center justify-center bg-drdpblue-300 text-white\">\r\n              <i class=\"uil uil-lock\"></i>\r\n          </div>\r\n          <input\r\n            class=\"form-control basis-11/12 appearance-none w-5/6 py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline\"\r\n            maxlength=\"50\"\r\n            placeholder=\"Enter new password\"\r\n            [type]=\"hidden ? 'password' : 'text'\"\r\n            formControlName=\"newPw\"\r\n            matTooltip=\"{{ passwordRequirements.join('\\n') }}\"\r\n            [matTooltipDisabled]=\"resetPwForm.controls['newPw'].valid\"\r\n            matTooltipPosition = \"left\"\r\n            (input)=\"tooltip.show()\"\r\n            #tooltip=\"matTooltip\"\r\n            >\r\n          <div class=\"items-center flex\">\r\n            <i class=\"mx-1 uil\"\r\n              (click)=\"hidden = !hidden\"\r\n              [ngClass]=\"{'uil-eye-slash': hidden, 'uil-eye': !hidden }\">\r\n            </i>\r\n          </div>\r\n        </div>\r\n        <div\r\n          class=\"flex border rounded-lg border-drdpblue-300 shadow-drdpblue-100\">\r\n          <div class=\"rounded-l basis-1/12 flex items-center justify-center bg-drdpblue-300 text-white\">\r\n            <i class=\"uil uil-lock\"></i>\r\n          </div>\r\n          <input\r\n            class=\"form-control basis-11/12 appearance-none w-5/6 py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline\"\r\n            maxlength=\"50\"\r\n            placeholder=\"Confirm new password\"\r\n            [type]=\"confirmHidden ? 'password' : 'text'\"\r\n            formControlName=\"confirmPw\">\r\n          <div class=\"items-center flex\">\r\n            <i\r\n              class=\"mx-1 uil\"\r\n              (click)=\"confirmHidden = !confirmHidden\"\r\n              [ngClass]=\"{'uil-eye-slash': confirmHidden, 'uil-eye': !confirmHidden }\">\r\n            </i>\r\n          </div>\r\n        </div>\r\n        <span *ngIf=\"resetPwForm.controls['newPw'].touched && resetPwForm.controls['confirmPw'].errors?.passwordMismatch\"\r\n          class=\"text-center text-sm text-red-700\">\r\n          Passwords do not match.\r\n        </span>\r\n        <span *ngIf=\"newPw.touched && newPw.invalid\" class=\"text-sm text-red-700\">\r\n          <p>Please refer to the email password requirements found by hovering over the ENTER NEW PASSWORD field.</p>\r\n        </span>\r\n        <button\r\n          type=\"submit\"\r\n          class=\"mb-2 mt-5 bg-drdpblue-300 hover:bg-blue-500 disabled:bg-blue-500 w-full text-white py-2 px-4 rounded-lg focus:outline-none focus:shadow-outline\"\r\n          [disabled]=\"resetPwForm.invalid\"\r\n          >Submit\r\n        </button>\r\n        <div *ngIf=\"resetFailed\" class=\" bg-[#F3DEDE] py-1 text-center\">\r\n          <p>Failed to reset.</p>\r\n        </div>\r\n    </div>\r\n  </div>\r\n</form>\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AbstractControl, FormBuilder, FormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '@core/services/auth.service';\r\nimport { EncryptionService } from '@core/services/encryption.service';\r\nimport { ToastService } from '@core/services/toast.service';\r\nimport { take, tap } from 'rxjs';\r\n@Component({\r\n  selector: 'drdp-reset-password',\r\n  templateUrl: './reset-password.component.html',\r\n  styleUrls: ['./reset-password.component.scss']\r\n})\r\nexport class ResetPasswordComponent implements OnInit {\r\n  resetPwForm: FormGroup | any;\r\n  hidden: boolean = true;\r\n  resetFailed = false;\r\n  confirmHidden: boolean = true;\r\n  passwordRequirements: string[] = [\r\n    \"- 8 characters in length\", \r\n    \"- Contain at least one capital letter\", \r\n    \"- Contain at least one lowercase letter\",\r\n     \"- Contain at least one number\",\r\n      \"- Contain at least 1 special character (@,$,%,*,!)\"\r\n  ];\r\n  guid: string = '';\r\n  validGuid: boolean = false;\r\n\r\n  get newPw() { return this.resetPwForm.get('newPw'); }\r\n  get confirmPw() { return this.resetPwForm.get('confirmPw'); }\r\n  constructor(\r\n    private fb: FormBuilder, \r\n    private router: Router, \r\n    private authService: AuthService,\r\n    private toast: ToastService, \r\n    private encryptionService: EncryptionService) { }\r\n\r\n  ngOnInit(): void {\r\n    this.guid = this.getGuidFromUrl();\r\n    this.authService.isValidIdentifier(this.guid).pipe(take(1)).subscribe((res) => {\r\n      if (!res) {\r\n        this.toast.error(\"Link is invalid\");\r\n        this.router.navigateByUrl('login');\r\n      }\r\n    });\r\n    \r\n    this.resetPwForm = this.fb.group({\r\n      newPw: ['', [\r\n          Validators.required,\r\n          Validators.minLength(8),\r\n          Validators.maxLength(50),\r\n          this.patternValidator(/\\d/, { hasNumber: false }),\r\n          this.patternValidator(/[A-Z]/, { hasCapitalCase: false }),\r\n          this.patternValidator(/[a-z]/, { hasSmallCase: false}),\r\n          this.patternValidator(/[!@#\\$%\\^&\\*`~]/, { hasSpecialCharacters: false }),\r\n        ]],\r\n      confirmPw: ['', [Validators.required]],\r\n    }, { validator: this.matchPassword('newPw', 'confirmPw') });\r\n  };\r\n\r\n  resetPw(): void {\r\n    const payload = {\r\n      newPassword: this.encryptionService.encryptPassword(this.confirmPw.value),\r\n      guid: this.guid\r\n    };\r\n    this.authService.changePassword(payload, \"Password has been updated\").pipe(\r\n      tap((res) => {\r\n        this.resetFailed = false;\r\n        if (typeof(res) === 'string') {\r\n          this.resetFailed = true;\r\n        }\r\n\r\n        if(res) {\r\n          setTimeout (() => {\r\n            const userLoggedIn = this.authService.getCurrentUser();\r\n            if (userLoggedIn) {\r\n              this.authService.logout().pipe(take(1)).subscribe();\r\n            } else {\r\n              this.router.navigateByUrl('login');\r\n            }\r\n         }, 3000);\r\n        }\r\n      }))\r\n    .subscribe();\r\n    this.resetPwForm.reset();\r\n\r\n  }\r\n\r\n\r\n  matchPassword(newPw: string, confirmPw: string) {\r\n    return (resetPwForm: FormGroup) => {\r\n      const password = resetPwForm.controls[newPw];\r\n      const confirmedPassword = resetPwForm.controls[confirmPw];\r\n      if (password.value !== confirmedPassword.value) {\r\n      return confirmedPassword.setErrors({ passwordMismatch: true });\r\n      } else {\r\n        return confirmedPassword.setErrors(null);\r\n      }\r\n    }\r\n  }\r\n\r\n  patternValidator(regex: RegExp, error: ValidationErrors): ValidatorFn {\r\n    return (control: AbstractControl): { [key: string]: any } | null => {\r\n      if (!control.value) {\r\n        // if control is empty return no error\r\n        return null;\r\n      }\r\n      // test the value of the control against the regexp supplied\r\n      const valid = regex.test(control.value);\r\n      // if true, return no error (no error), else return error passed in the second parameter\r\n      return valid ? null : error;\r\n    };\r\n  }\r\n\r\n  getGuidFromUrl(): string {\r\n    const routerUrl = this.router.url;\r\n    const indexOfSlash = routerUrl.lastIndexOf(\"/\");\r\n    return routerUrl.slice(indexOfSlash+1);\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { AuthService } from '@core/services/auth.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class LogInGuard implements CanActivate {\r\n  constructor(private auth: AuthService, private router: Router) {}\r\n\r\n  canActivate(): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n    let isValid = false;\r\n    const isUserLoggedIn = this.auth.checkLogin();\r\n\r\n    if (!isUserLoggedIn) {\r\n      return isValid = true;\r\n    } \r\n    \r\n    return this.router.parseUrl('dashboard');\r\n  }\r\n}\r\n","<form [formGroup]=\"createPwForm\" (ngSubmit)=\"createPw()\">\r\n  <div class=\"flex flex-row h-screen items-center my-auto justify-center\">\r\n    <div\r\n      class=\"basis-11/12 sm:basis-1/2 md:basis-1/3 xl:basis-1/4 2xl:basis-1/5 bg-white shadow-lg shadow-drdpblue-100 rounded-[20px] p-8 my-auto\">\r\n      <h1 class=\"global-font-bold text-xl text-center mb-6\">Confirm and Create Password</h1>\r\n      <div class=\"flex mb-6 border rounded-lg border-drdpblue-300 shadow-drdpblue-100\">\r\n        <div class=\"rounded-l basis-1/12 flex items-center justify-center bg-drdpblue-300 text-white\">\r\n          <i class=\"uil uil-lock\"></i>\r\n        </div>\r\n        <input\r\n          class=\"form-control basis-11/12 appearance-none w-5/6 py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline\"\r\n          maxlength=\"250\" placeholder=\"New password\" [type]=\"hidden ? 'password' : 'text'\" formControlName=\"newPw\"\r\n          matTooltip=\"{{ passwordRequirements.join('\\n') }}\" [matTooltipDisabled]=\"createPwForm.controls['newPw'].valid\"\r\n          matTooltipPosition=\"left\" (input)=\"tooltip.show()\" #tooltip=\"matTooltip\">\r\n        <div class=\"items-center flex\">\r\n          <i class=\"mx-1 uil\" (click)=\"hidden = !hidden\" [ngClass]=\"{'uil-eye-slash': hidden, 'uil-eye': !hidden }\">\r\n          </i>\r\n        </div>\r\n      </div>\r\n      <div class=\"flex mb-6 border rounded-lg border-drdpblue-300 shadow-drdpblue-100\">\r\n        <div class=\"rounded-l basis-1/12 flex items-center justify-center bg-drdpblue-300 text-white\">\r\n          <i class=\"uil uil-lock\"></i>\r\n        </div>\r\n        <input\r\n          class=\"form-control basis-11/12 appearance-none w-5/6 py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline\"\r\n          maxlength=\"250\" placeholder=\"Confirm new password\" [type]=\"confirmHidden ? 'password' : 'text'\"\r\n          formControlName=\"confirmPw\">\r\n        <div class=\"items-center flex\">\r\n          <i class=\"mx-1 uil\" (click)=\"confirmHidden = !confirmHidden\"\r\n            [ngClass]=\"{'uil-eye-slash': confirmHidden, 'uil-eye': !confirmHidden }\">\r\n          </i>\r\n        </div>\r\n      </div>\r\n      <span\r\n        *ngIf=\"createPwForm.controls['newPw'].touched && createPwForm.controls['confirmPw'].errors?.passwordMismatch\"\r\n        class=\"text-center text-sm text-red-700\">\r\n        Passwords do not match\r\n      </span>\r\n      <button type=\"submit\"\r\n        class=\"mb-2 bg-drdpblue-300 hover:bg-blue-500 disabled:bg-blue-500 w-full text-white py-2 px-4 rounded-lg focus:outline-none focus:shadow-outline\"\r\n        [disabled]=\"createPwForm.invalid\">Confirm and Create\r\n      </button>\r\n      <div *ngIf=\"resetFailed\" class=\" bg-[#F3DEDE] py-1 text-center\">\r\n        <p>Failed to reset.</p>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</form>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AbstractControl, FormBuilder, FormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '@core/services/auth.service';\r\nimport { tap, take} from 'rxjs';\r\nimport { matchPassword } from '@core/validators/auth.validator'\r\nimport { ToastService } from '@core/services/toast.service';\r\nimport { EncryptionService } from '@core/services/encryption.service';\r\n\r\n@Component({\r\n  selector: 'drdp-create-password',\r\n  templateUrl: './create-password.component.html',\r\n  styleUrls: ['./create-password.component.scss']\r\n})\r\nexport class CreatePasswordComponent implements OnInit {\r\n    createPwForm: FormGroup | any;\r\n  hidden: boolean = true;\r\n  resetFailed = false;\r\n  confirmHidden: boolean = true;\r\n  passwordRequirements: string[] = [\"- 8 characters in length\",\r\n                                    \"- Contain at least one capital letter\",\r\n                                    \"- Contain at least one lowercase letter\",\r\n                                    \"- Contain at least one number\",\r\n                                    \"- Contain at least 1 special character (@,$,%,*,!)\"];\r\n  guid: string = '';\r\n\r\n  get newPw() { return this.createPwForm.get('newPw'); }\r\n  get confirmPw() { return this.createPwForm.get('confirmPw'); }\r\n  constructor(private fb: FormBuilder,  private router: Router, private authService: AuthService, private toast: ToastService, private encryptionService: EncryptionService) { }\r\n\r\n  ngOnInit(): void {\r\n    this.guid = this.getGuidFromUrl();\r\n    this.authService.isValidIdentifier(this.guid).pipe(take(1)).subscribe((res) => {\r\n      if (!res) {\r\n        this.toast.error(\"Link is invalid\");\r\n        this.router.navigateByUrl('login');\r\n      }\r\n    });\r\n    this.createPwForm = this.fb.group({\r\n      newPw: ['', [\r\n          Validators.required,\r\n          Validators.minLength(8),\r\n          this.patternValidator(/\\d/, { hasNumber: false }),\r\n          this.patternValidator(/[A-Z]/, { hasCapitalCase: false }),\r\n          this.patternValidator(/[a-z]/, { hasSmallCase: false}),\r\n          this.patternValidator(/[!@#\\$%\\^&\\*`~]/, { hasSpecialCharacters: false }),\r\n        ]],\r\n      confirmPw: ['', [Validators.required]],\r\n    }, { validator: matchPassword('newPw', 'confirmPw') });\r\n\r\n  };\r\n\r\n  createPw(): void {\r\n    const payload = {\r\n      newPassword: this.encryptionService.encryptPassword(this.confirmPw.value),\r\n      guid: this.guid\r\n    };\r\n    this.authService.changePassword(payload, \"Password has been updated\").pipe(\r\n      tap((res) => {\r\n        this.resetFailed = false;\r\n        if (typeof(res) === 'string') {\r\n          this.resetFailed = true;\r\n        }\r\n      }))\r\n    .subscribe();\r\n    this.createPwForm.reset();\r\n    setTimeout (() => {\r\n      this.router.navigateByUrl('');\r\n   }, 2000);\r\n  }\r\n\r\n  patternValidator(regex: RegExp, error: ValidationErrors): ValidatorFn {\r\n    return (control: AbstractControl): { [key: string]: any } | null => {\r\n      if (!control.value) {\r\n        // if control is empty return no error\r\n        return null;\r\n      }\r\n      // test the value of the control against the regexp supplied\r\n      const valid = regex.test(control.value);\r\n      // if true, return no error (no error), else return error passed in the second parameter\r\n      return valid ? null : error;\r\n    };\r\n  }\r\n\r\n  getGuidFromUrl(): string {\r\n    const routerUrl = this.router.url;\r\n    const indexOfSlash = routerUrl.lastIndexOf(\"/\");\r\n    return routerUrl.slice(indexOfSlash+1);\r\n  }\r\n}\r\n","<ng-container>\r\n    <drdp-header-logo-and-image logoSrc=\"../../../assets/images/logo/drdpLogo.svg\"\r\n        logoAlt=\"DRDP (Desired Results Developmental Profile) Logo\" imgSrc=\"../../../assets/images/loginpage/Header.png\"\r\n        imgAlt=\"DRDP Image of children.\" img2Src=\"../../../assets/images/logo/CDSS_white.jpg\" img2Alt=\"CDSS Logo\">\r\n    </drdp-header-logo-and-image>\r\n</ng-container>\r\n\r\n<router-outlet></router-outlet>\r\n\r\n<div *ngIf=\"showFooter$ | async\" class=\"relative flex flex-row justify-center -z-10\">\r\n    <drdp-footer class=\"basis-full fixed bottom-0\"></drdp-footer>\r\n</div>\r\n\r\n<drdp-spinner></drdp-spinner>\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { ForgotPasswordComponent } from './forgot-password/forgot-password.component';\r\nimport { LogInComponent } from './log-in/log-in.component';\r\nimport { ResetPasswordComponent } from './reset-password/reset-password.component';\r\nimport { LogInGuard } from '@core/guards/log-in.guard';\r\nimport { CreatePasswordComponent } from './create-password/create-password.component';\r\nimport { HeaderLayoutComponent } from './header-layout/header-layout.component';\r\n\r\nconst routes: Routes = [\r\n  {\r\n    path: '',\r\n    component: HeaderLayoutComponent,\r\n    children: [\r\n      { path: 'login', canActivate: [LogInGuard], component: LogInComponent },\r\n      { path: 'login/reset', component: ForgotPasswordComponent },\r\n      { path: 'reset-password/:guid', component: ResetPasswordComponent },\r\n      { path: 'create-password/:guid', component: CreatePasswordComponent}\r\n    ]\r\n  }\r\n];\r\n\r\n@NgModule({\r\n  imports: [RouterModule.forChild(routes)],\r\n  exports: [RouterModule]\r\n})\r\nexport class PublicRoutingModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\r\nimport { BehaviorSubject, filter } from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'drdp-header-layout',\r\n  templateUrl: './header-layout.component.html',\r\n  styleUrls: ['./header-layout.component.scss']\r\n})\r\nexport class HeaderLayoutComponent implements OnInit {\r\n  private showFooterSubject = new BehaviorSubject<boolean>(false);\r\n  showFooter$ = this.showFooterSubject.asObservable();\r\n\r\n  constructor(private route: ActivatedRoute, private router: Router) {}\r\n\r\n  ngOnInit(): void {\r\n    this.updateFooter();\r\n    this.router.events.pipe(\r\n      filter(event => event instanceof NavigationEnd),\r\n    ).subscribe(() => {\r\n      this.updateFooter();\r\n    });\r\n  }\r\n\r\n  private updateFooter(): void {\r\n    const showFooter = this.route.snapshot.firstChild?.routeConfig?.path != 'login';\r\n    this.showFooterSubject.next(showFooter);\r\n  }\r\n\r\n}\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { PublicRoutingModule } from './public-routing.module';\r\nimport { LogInComponent } from './log-in/log-in.component';\r\nimport { SharedModule } from '@shared/shared.module';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CoreModule } from '@core/core.module';\r\nimport { ForgotPasswordComponent } from './forgot-password/forgot-password.component';\r\nimport { HomeComponent } from './home/home.component';\r\nimport { ResetPasswordComponent } from './reset-password/reset-password.component';\r\nimport { CreatePasswordComponent } from './create-password/create-password.component';\r\nimport { HeaderLayoutComponent } from './header-layout/header-layout.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    ForgotPasswordComponent,\r\n    LogInComponent,\r\n    HomeComponent,\r\n    ResetPasswordComponent,\r\n    CreatePasswordComponent,\r\n    HeaderLayoutComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    PublicRoutingModule,\r\n    SharedModule,\r\n    FormsModule,\r\n    CoreModule\r\n  ],\r\n  providers: [],\r\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n})\r\n\r\nexport class PublicModule { }\r\n"]}