{"version":3,"sources":["webpack:///./src/pages/request-reset/request-reset.scss?b187","webpack:///./src/services/password-reset.ts","webpack:///./src/pages/request-reset/request-reset.scss","webpack:///./src/pages/request-reset/request-reset.ts","webpack:///./src/pages/request-reset/request-reset.html"],"names":["module","exports","__webpack_require__","push","i","version","sources","names","mappings","file","sourcesContent","sourceRoot","PaswordResetService","client","_classCallCheck","this","_client","key","value","command","gRecaptchaResponse","build","useMethod","useBody","useRecaptchaValidation","fetchNoContent","response","__WEBPACK_IMPORTED_MODULE_0_tslib__","Object","__WEBPACK_IMPORTED_MODULE_1_aurelia_framework__","__WEBPACK_IMPORTED_MODULE_2__infrastructure_identity_client__","content","options","sourceMap","hmr","transform","insertInto","undefined","locals","ResetRequestStage","RequestReset","controllerFactory","router","resetService","stage","begin","_controller","createForCurrentScope","validateTrigger","__WEBPACK_IMPORTED_MODULE_4_aurelia_validation__","changeOrBlur","_router","_resetService","params","email","_this","__WEBPACK_IMPORTED_MODULE_6__infrastructure_infrastructure__","grecaptcha","enterprise","ready","execute","_recaptchaSiteKey","action","then","token","submit","validate","valid","hasError","isLoading","requestReset","requestSent","__WEBPACK_IMPORTED_MODULE_2_aurelia_framework__","__WEBPACK_IMPORTED_MODULE_3_aurelia_router__","__WEBPACK_IMPORTED_MODULE_5__services_password_reset__","ensure","x","required","on"],"mappings":"wCAAAA,EAAAC,QAAAC,EAAA,OAAAA,EAAA,IAKAC,MAAAH,EAAAI,EAAA,qDAAwE,IAAYC,QAAA,EAAAC,SAAA,2cAAAC,SAAAC,SAAA,uBAAygBC,KAAA,qBAAAC,gBAAA,6EAA+H,sDAAiDC,WAAA,oSCD7wB,IAAaC,EAAb,WAGE,SAAAA,EAAmBC,gGAAsBC,CAAAC,KAAAH,GACvCG,KAAKC,QAAUH,YAJnB,SAAAD,OAAAK,IAAA,eAAAC,MAAA,SAQIC,EACAC,2JAEe,gBAAML,KAAKC,QACvBK,MAAM,6BACNC,UAAU,QACVC,QAAQJ,GACRK,uBAAuBJ,GACvBK,+BALCC,2BAMGA,oDAjBXT,IAAA,gBAAAC,MAAA,SAoB6BC,2JACV,gBAAMJ,KAAKC,QACvBK,MAAM,4BACNC,UAAU,QACVC,QAAQJ,GACRM,gBAAe,iBAJdC,2BAKGA,iFA1BXd,EAAA,GAAaA,EAAmBe,EAAA,GAD/BC,OAAAC,EAAA,EAAAD,4BAI4BE,EAAA,KAHhBlB,2BCHb,IAAAmB,EAAA7B,EAAA,QAEA,iBAAA6B,QAAA/B,EAAAI,EAAA2B,EAAA,MAOA,IAAAC,GAAeC,WAAA,EAAAC,KAAA,EAEfC,eAPAA,EAQAC,gBAAAC,GAEAnC,EAAA,OAAAA,CAAA6B,EAAAC,GAEAD,EAAAO,SAAAtC,EAAAC,QAAA8B,EAAAO,wcCCA,IAoEKC,EApEQC,EAAb,WAUE,SAAAA,EACEC,EACAC,EACAC,gGAAiC7B,CAAAC,KAAAyB,GAL5BzB,KAAA6B,MAA2BL,EAAkBM,MAOlD9B,KAAK+B,YAAcL,EAAkBM,wBACrChC,KAAK+B,YAAYE,gBAAkBC,EAAA,gBAAgBC,aACnDnC,KAAKoC,QAAUT,EACf3B,KAAKqC,cAAgBT,YAlBzB,SAAAH,OAAAvB,IAAA,WAAAC,MAAA,SAqBkBmC,GACdA,EAASA,MACTtC,KAAKuC,MAAQD,EAAOC,SAvBxBrC,IAAA,mBAAAC,MAAA,WA0ByB,IAAAqC,EAAAxC,KACrByC,EAAA,EAAYC,WAAWC,WAAWC,MAAM,WACtCH,EAAA,EAAYC,WAAWC,WAAWE,QAAQJ,EAAA,EAAYK,mBAAqBC,OAAQ,mBAClFC,KAAK,SAACC,GACLT,EAAKU,OAAOD,UA9BpB/C,IAAA,SAAAC,MAAA,SAmCsBE,2JAEH,yBAAML,KAAK+B,YAAYoB,4BACxBC,6BACVpD,KAAKqD,UAAW,4BAOH,OAJfrD,KAAKsD,WAAY,EACblD,GACFmC,MAAOvC,KAAKuC,iBAEOvC,KAAKqC,cAAckB,aACtCnD,EACAC,kBAGAL,KAAK6B,MAAQL,EAAkBgC,YAE/BxD,KAAKqD,UAAW,EAElBrD,KAAKsD,WAAY,oDAEjBtD,KAAKqD,UAAW,EAChBrD,KAAKsD,WAAY,0FA1DvB7B,EAAA,GAAaA,EAAYb,EAAA,GADxB6C,EAAA,2BAYsBvB,EAAA,4BACXwB,EAAA,EACMC,EAAA,KAbLlC,GA+DbS,EAAA,gBAAgB0B,OAAO,SAACC,GAAD,OAAqBA,EAAEtB,QAC3CuB,WACAvB,QACAwB,GAAGtC,GAEN,SAAKD,GACHA,IAAA,MAAQ,SAAc,QACtBA,IAAA,YAAc,gBAAqB,cAFrC,CAAKA,qECtFLvC,EAAAC,QAAA","file":"chunk.request-reset.e19eeec7f7e217f04a45.js","sourcesContent":["exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(true);\n// imports\n\n\n// module\nexports.push([module.id, \".request-reset .card {\\n  max-width: 460px;\\n}\\n\\n\", \"\", {\"version\":3,\"sources\":[\"C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/src/pages/request-reset/C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/src/pages/request-reset/C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/src/pages/request-reset/request-reset.scss\",\"C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/src/pages/request-reset/C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/request-reset.scss\"],\"names\":[],\"mappings\":\"AAAA;EAEQ,iBAAA;CCAP\",\"file\":\"request-reset.scss\",\"sourcesContent\":[\".request-reset {\\r\\n    .card {\\r\\n        max-width: 460px;\\r\\n    }\\r\\n}\",\".request-reset .card {\\n  max-width: 460px;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?{\"importLoaders\":1,\"sourceMap\":true}!./node_modules/postcss-loader/lib?{\"sourceMap\":true}!./node_modules/resolve-url-loader!./node_modules/sass-loader/lib/loader.js?{\"sourceMap\":true,\"includePaths\":[\"C://BuildAgent//work//6539509c47328133//src//Axxess.Identity.Website//node_modules\"]}!./src/pages/request-reset/request-reset.scss\n// module id = LO8X\n// module chunks = 5","import { autoinject } from \"aurelia-framework\";\r\nimport { IdentityClient } from \"../infrastructure/identity-client\";\r\n\r\n@autoinject()\r\nexport class PaswordResetService {\r\n  private readonly _client: IdentityClient;\r\n\r\n  public constructor(client: IdentityClient) {\r\n    this._client = client;\r\n  }\r\n\r\n  public async requestReset(\r\n    command: IRequestResetCommand,\r\n    gRecaptchaResponse: string\r\n  ) {\r\n    let response = await this._client\r\n      .build(\"v1/password-reset/request\")\r\n      .useMethod(\"POST\")\r\n      .useBody(command)\r\n      .useRecaptchaValidation(gRecaptchaResponse)\r\n      .fetchNoContent();\r\n    return response;\r\n  }\r\n\r\n  public async resetPassword(command: IResetPasswordCommand) {\r\n    let response = await this._client\r\n      .build(\"v1/password-reset/accept\")\r\n      .useMethod(\"POST\")\r\n      .useBody(command)\r\n      .fetchNoContent(false);\r\n    return response;\r\n  }\r\n}\r\n\r\nexport interface IRequestResetCommand {\r\n  email: string;\r\n}\r\n\r\nexport interface IResetPasswordCommand {\r\n  passwordResetId: string;\r\n  secret: string;\r\n  password: string;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/password-reset.ts","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??ref--1-2!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/lib/loader.js??ref--1-4!./request-reset.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"sourceMap\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??ref--1-2!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/lib/loader.js??ref--1-4!./request-reset.scss\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??ref--1-2!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/lib/loader.js??ref--1-4!./request-reset.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/request-reset/request-reset.scss\n// module id = o8/o\n// module chunks = 5","import \"./request-reset.scss\";\r\n\r\nimport { autoinject } from \"aurelia-framework\";\r\nimport { Router } from \"aurelia-router\";\r\nimport {\r\n  validateTrigger,\r\n  ValidationController,\r\n  ValidationControllerFactory,\r\n  ValidationRules\r\n} from \"aurelia-validation\";\r\n\r\nimport {\r\n  IRequestResetCommand,\r\n  PaswordResetService\r\n} from \"./../../services/password-reset\";\r\nimport { localGlobal } from \"../../infrastructure/infrastructure\";\r\n\r\n@autoinject\r\nexport class RequestReset {\r\n  private readonly _resetService: PaswordResetService;\r\n  private _router: Router;\r\n  private _controller: ValidationController;\r\n\r\n  public email: string;\r\n  public isLoading: boolean;\r\n  public hasError: boolean;\r\n  public stage: ResetRequestStage = ResetRequestStage.begin;\r\n\r\n  public constructor(\r\n    controllerFactory: ValidationControllerFactory,\r\n    router: Router,\r\n    resetService: PaswordResetService\r\n  ) {\r\n    this._controller = controllerFactory.createForCurrentScope();\r\n    this._controller.validateTrigger = validateTrigger.changeOrBlur;\r\n    this._router = router;\r\n    this._resetService = resetService;\r\n  }\r\n\r\n  public activate(params: any) {\r\n    params = params || {};\r\n    this.email = params.email;\r\n  }\r\n\r\n  public executeRecaptcha() {\r\n    localGlobal.grecaptcha.enterprise.ready(() => {\r\n      localGlobal.grecaptcha.enterprise.execute(localGlobal._recaptchaSiteKey, { action: 'PASSWORD_RESET' })\r\n      .then((token: string) => {\r\n        this.submit(token);\r\n      });\r\n    });\r\n  }\r\n\r\n  public async submit(gRecaptchaResponse: string) {\r\n    try {\r\n      let result = await this._controller.validate();\r\n      if (!result.valid) {\r\n        this.hasError = true;\r\n        return;\r\n      }\r\n      this.isLoading = true;\r\n      let command: IRequestResetCommand = {\r\n        email: this.email\r\n      };\r\n      let response = await this._resetService.requestReset(\r\n        command,\r\n        gRecaptchaResponse\r\n      );\r\n      if (response) {\r\n        this.stage = ResetRequestStage.requestSent;\r\n      } else {\r\n        this.hasError = true;\r\n      }\r\n      this.isLoading = false;\r\n    } catch (e) {\r\n      this.hasError = true;\r\n      this.isLoading = false;\r\n    }\r\n  }\r\n}\r\n\r\nValidationRules.ensure((x: RequestReset) => x.email)\r\n  .required()\r\n  .email()\r\n  .on(RequestReset);\r\n\r\nenum ResetRequestStage {\r\n  begin = \"begin\" as any,\r\n  requestSent = \"request-sent\" as any\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/request-reset/request-reset.ts","module.exports = \"<template>\\r\\n  <require from=\\\"../../components/card-layout\\\"></require>\\r\\n\\r\\n  <card-layout class=\\\"request-reset\\\">\\r\\n    <h4 class=\\\"logo mt-3 mb-4\\\"></h4>\\r\\n    <h3 class=\\\"text-center\\\">Request Password Reset</h3>\\r\\n\\r\\n    <div class=\\\"slide-animate\\\" if.bind=\\\"stage == 'begin'\\\">\\r\\n      <div if.bind=\\\"!hasError\\\" class=\\\"alert alert-info\\\" role=\\\"alert\\\">\\r\\n        Forgot your password? That's okay, get started by entering your email\\r\\n        below.\\r\\n      </div>\\r\\n      <div if.bind=\\\"hasError\\\" class=\\\"alert alert-danger\\\" role=\\\"alert\\\">\\r\\n        Some of your info isn't valid. Please try again.\\r\\n      </div>\\r\\n\\r\\n      <form\\r\\n        class=\\\"w-100\\\"\\r\\n        submit.delegate=\\\"executeRecaptcha()\\\"\\r\\n        validation-renderer=\\\"bootstrap-form\\\"\\r\\n      >\\r\\n        <div class=\\\"form-group\\\">\\r\\n          <input\\r\\n            type=\\\"text\\\"\\r\\n            class=\\\"form-control\\\"\\r\\n            value.bind=\\\"email & validate\\\"\\r\\n            placeholder=\\\"Email Address\\\"\\r\\n            disabled.bind=\\\"isLoading\\\"\\r\\n          />\\r\\n        </div>\\r\\n        <input\\r\\n          type=\\\"submit\\\"\\r\\n          class=\\\"btn btn-axxess btn-block btn-lg\\\"\\r\\n          disabled.bind=\\\"isLoading\\\"\\r\\n          value=\\\"Send Request\\\"\\r\\n        />\\r\\n      </form>\\r\\n      <hr />\\r\\n      <div class=\\\"text-center text-muted\\\">\\r\\n        <a class=\\\"link-light\\\" href=\\\"/login\\\">Cancel</a>\\r\\n      </div>\\r\\n    </div>\\r\\n\\r\\n    <div class=\\\"slide-animate\\\" if.bind=\\\"stage == 'request-sent'\\\">\\r\\n      <div class=\\\"alert alert-success\\\" role=\\\"alert\\\">\\r\\n        Great news! Password reset instructions have been sent to\\r\\n        <b>${email}</b>.\\r\\n      </div>\\r\\n      <hr />\\r\\n      <div class=\\\"text-center text-muted\\\">\\r\\n        <a class=\\\"link-light\\\" href=\\\"/login\\\">Cancel</a> |\\r\\n        <a class=\\\"link-light\\\" href=\\\"https://www.axxess.com/support\\\"\\r\\n          >Email didn't arrive?</a\\r\\n        >\\r\\n      </div>\\r\\n    </div>\\r\\n  </card-layout>\\r\\n  <footer class=\\\"d-flex flex-column p-1 mt-4 text-center\\\">\\r\\n    <!-- https://developers.google.com/recaptcha/docs/faq#id-like-to-hide-the-recaptcha-badge.-what-is-allowed -->\\r\\n    <div class=\\\"text-muted\\\">\\r\\n      This site is protected by reCAPTCHA and the Google\\r\\n      <a href=\\\"https://policies.google.com/privacy\\\">Privacy Policy</a> and\\r\\n      <a href=\\\"https://policies.google.com/terms\\\">Terms of Service</a>\\r\\n      apply.\\r\\n    </div>\\r\\n  </footer>\\r\\n</template>\\r\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/request-reset/request-reset.html\n// module id = pages/request-reset/request-reset.html\n// module chunks = 5"],"sourceRoot":""}