@annalib/anna-cognito-lib 0.2.6 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -69,4 +69,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
69
69
  type: Component,
70
70
  args: [{ selector: 'anna-cognito-lib-forgot-password', template: "<div class=\"main\">\r\n <section>\r\n <header>\r\n <img [src]=\"libraryConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"verifyRegisteredEmail\">\r\n <div id=\"heading\">\r\n {{ constants.forgotPasswordHeading }}\r\n </div>\r\n <p>\r\n {{ constants.forgotPasswordMessage }}\r\n </p>\r\n <div id=\"alert-div\" *ngIf=\"errorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p id=\"alert-msg\">{{ errorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"email\"\r\n [placeholder]=\"constants.enterEmail\"\r\n [ngClass]=\"{\r\n 'input-invalid': verifyRegisteredEmail.get('email')?.dirty && verifyRegisteredEmail.get('email')?.errors\r\n }\"\r\n />\r\n\r\n <button\r\n tabindex=\"2\"\r\n type=\"submit\"\r\n class=\"login-btn\"\r\n [disabled]=\"!isFormValid()\"\r\n (click)=\"onVerifyRegisteredEmail()\"\r\n >\r\n {{ constants.forgotPasswordButton }}\r\n </button>\r\n </form>\r\n </article>\r\n <footer>\r\n Powered by <span> <strong> SureWaves</strong></span>\r\n </footer>\r\n </section>\r\n</div>\r\n", styles: ["@keyframes show{0%{opacity:0}50%{opacity:.5}to{opacity:1}}html{overflow-y:scroll}.main{background-color:#fff;background-size:cover;font-family:Roboto;height:100vh}section{top:45%;left:50%;position:absolute;transform:translate(-50%,-50%);width:20.875rem;animation:show .5s 1;-moz-animation:show .5s 1}.container{width:100%;height:100%;overflow:auto}header{height:auto;width:100%;text-align:center}article{margin-top:.9375rem;margin-bottom:.9375rem;border:1px solid #979797;background-color:#f4f4f4;padding:2rem 1.375rem;border-radius:.375rem;box-shadow:0 .125rem .4375rem #0000001a}article #heading{color:#212121;text-align:center;margin-bottom:1.5rem;font-family:Roboto;font-size:1.125rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}#alert-div{padding:.25rem 0 0;margin-bottom:.75rem;border-radius:.25rem;border:solid 1px #f9b3ae;background-color:#fde4e3}#alert-div .material-icons{color:#f44336;font-size:1rem;margin-left:.5rem}#alert-div p{margin:-1.5625rem 0 0 1.8rem;padding:.3125rem 0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}footer{align-items:baseline;color:#6e6e6e;opacity:.9;display:flex;font-family:Ubuntu;font-size:1rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;justify-content:center}footer span{font-size:1.3125rem;font-weight:700;margin-left:.25rem}input[type=password],input[type=text],input[type=number]{width:100%;height:30px;padding:.75rem 1rem;border:1px solid #979797;margin-bottom:.625rem;border-radius:.375rem}.login-btn{width:100%;height:2.5rem;border:0;color:#fff;background-color:#268bff;border-radius:.375rem;font-size:1rem;margin-top:.9375rem}.login-btn:hover{background-color:#4099ff;cursor:pointer}.login-btn:disabled{background-color:#ccc;color:#fff;cursor:not-allowed}.input-invalid{border:1px solid #fe3824!important}input[type=password].ng-dirty.ng-invalid,input[type=text].ng-dirty.ng-invalid{border:1px solid #fe3824}input[type=submit]:focus,input[type=password]:focus,input[type=text]:focus,input[type=checkbox]:focus,button:focus{outline:none}input::placeholder{color:#a4a4a4}p{color:#4a4a4a;font-family:Roboto;font-size:1rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}input[type=text]{margin-bottom:16px}input[type=text]:focus{box-shadow:none}.back-btn{font-size:27px;position:relative;color:#268bff;float:left;top:-30px;left:-15px;font-weight:400!important}\n"] }]
71
71
  }], ctorParameters: function () { return [{ type: i1.AnnaLibAuthService }, { type: i2.FormBuilder }, { type: i3.ToastrService }, { type: i4.LibraryConfig }]; } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29nbml0by1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ZvcmdvdC1wYXNzd29yZC9mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZm9yZ290LXBhc3N3b3JkL2ZvcmdvdC1wYXNzd29yZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLGdDQUFnQztBQUNoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTNDLGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7OztBQU81RCxNQUFNLE9BQU8sdUJBQXVCO0lBUWhDLFlBQ1UsV0FBK0IsRUFDL0IsRUFBZSxFQUNmLE1BQXFCLEVBQ3RCLGFBQTRCO1FBSDNCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVRyQyx3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFFNUIsYUFBUSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDekMsb0JBQWUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO0lBTzdDLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDdkMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3ZDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQztZQUNsQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRO1NBQ25DLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDO0lBQzVDLENBQUM7SUFFRCx1QkFBdUI7UUFDbkIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDbEUsSUFBSSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7YUFDekUsU0FBUyxDQUNOO1lBQ0UsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxHQUFHLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFO29CQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUMxRDtxQkFBTTtvQkFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO2lCQUNuRDtZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDekQsQ0FBQztTQUNGLENBQ0osQ0FBQztJQUNOLENBQUM7O29IQXpEUSx1QkFBdUI7d0dBQXZCLHVCQUF1Qix3RUNsQnBDLHFsREE0Q0E7MkZEMUJhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8gVGhpcmQgcGFydHkgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gXCJuZ3gtdG9hc3RyXCI7XHJcblxyXG4vLyBVc2VyIGRlZmluZWQgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgVXNlcm5hbWVJbmZvIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hdXRoLm1vZGVsXCI7XHJcbmltcG9ydCB7IEFubmFMaWJBdXRoU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTG9naW5Db25zdGFudCB9IGZyb20gXCIuLi8uLi9jb25zdGFudHMvbG9naW5Db25zdGFudFwiO1xyXG5pbXBvcnQgeyBMaWJyYXJ5Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnL2xpYnJhcnkuY29uZmlnJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYW5uYS1jb2duaXRvLWxpYi1mb3Jnb3QtcGFzc3dvcmQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZvcmdvdC1wYXNzd29yZC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3Jnb3RQYXNzd29yZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICB2ZXJpZnlSZWdpc3RlcmVkRW1haWw6IEZvcm1Hcm91cDtcclxuICAgIHBhc3N3b3JkTm90TWF0Y2hpbmcgPSBmYWxzZTtcclxuICAgIGNvbnN0YW50czogdHlwZW9mIExvZ2luQ29uc3RhbnQ7XHJcbiAgICBwYXNzd29yZCA9IHsgdmFsdWU6IG51bGwsIHN0YXR1czogbnVsbCB9O1xyXG4gICAgY29uZmlybVBhc3N3b3JkID0geyB2YWx1ZTogbnVsbCwgc3RhdHVzOiBudWxsIH07XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEFubmFMaWJBdXRoU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgICBwdWJsaWMgbGlicmFyeUNvbmZpZzogTGlicmFyeUNvbmZpZ1xyXG4gICAgKSB7fVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuY29uc3RhbnRzID0gTG9naW5Db25zdGFudDtcclxuICAgICAgICB0aGlzLm9uSW50aWFsaXNlRm9ybSgpO1xyXG4gICAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLnVzZXJOYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25VcGRhdGVGb3JtKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uSW50aWFsaXNlRm9ybSgpIHtcclxuICAgICAgICB0aGlzLnZlcmlmeVJlZ2lzdGVyZWRFbWFpbCA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBlbWFpbDogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25VcGRhdGVGb3JtKCkge1xyXG4gICAgICAgIHRoaXMudmVyaWZ5UmVnaXN0ZXJlZEVtYWlsLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgICAgICBlbWFpbDogdGhpcy5hdXRoU2VydmljZS51c2VyTmFtZSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpc0Zvcm1WYWxpZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy52ZXJpZnlSZWdpc3RlcmVkRW1haWwudmFsaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgb25WZXJpZnlSZWdpc3RlcmVkRW1haWwoKSB7XHJcbiAgICAgICAgbGV0IHVzZXJuYW1lID0gdGhpcy52ZXJpZnlSZWdpc3RlcmVkRW1haWwuY29udHJvbHNbJ2VtYWlsJ10udmFsdWU7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuaXNVc2VybmFtZUF2YWlsYWJsZSh1c2VybmFtZSlcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmVzID0gbmV3IFVzZXJuYW1lSW5mbyhyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlcy5pc1VzZXJuYW1lQXZhaWxhYmxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5vbkZvcmdvdFBhc3N3b3JkR2VuZXJhdGVPVFAodXNlcm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuY29uc3RhbnRzLnVzZXJOb3RGb3VuZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGVycm9yOiBhbnkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihMb2dpbkNvbnN0YW50LmFwaUZhaWxFcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1haW5cIj5cclxuICA8c2VjdGlvbj5cclxuICAgICAgPGhlYWRlcj5cclxuICAgICAgICAgIDxpbWcgW3NyY109XCJsaWJyYXJ5Q29uZmlnLmxvZ2luUGFnZUxvZ29JbWdVcmxcIiBhbHQ9XCJBbm5hIExvZ29cIiAvPlxyXG4gICAgICA8L2hlYWRlcj5cclxuICAgICAgPGFydGljbGU+XHJcbiAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInZlcmlmeVJlZ2lzdGVyZWRFbWFpbFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGNvbnN0YW50cy5mb3Jnb3RQYXNzd29yZEhlYWRpbmcgfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAge3sgY29uc3RhbnRzLmZvcmdvdFBhc3N3b3JkTWVzc2FnZSB9fVxyXG4gICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWxlcnQtZGl2XCIgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnJlcG9ydDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHAgaWQ9XCJhbGVydC1tc2dcIj57eyBlcnJvck1lc3NhZ2UgfX08L3A+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCJcclxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbnN0YW50cy5lbnRlckVtYWlsXCJcclxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgJ2lucHV0LWludmFsaWQnOiB2ZXJpZnlSZWdpc3RlcmVkRW1haWwuZ2V0KCdlbWFpbCcpPy5kaXJ0eSAmJiB2ZXJpZnlSZWdpc3RlcmVkRW1haWwuZ2V0KCdlbWFpbCcpPy5lcnJvcnNcclxuICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsb2dpbi1idG5cIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzRm9ybVZhbGlkKClcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25WZXJpZnlSZWdpc3RlcmVkRW1haWwoKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7eyBjb25zdGFudHMuZm9yZ290UGFzc3dvcmRCdXR0b24gfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgPC9hcnRpY2xlPlxyXG4gICAgICA8Zm9vdGVyPlxyXG4gICAgICAgICAgUG93ZXJlZCBieSA8c3Bhbj4gPHN0cm9uZz4gU3VyZVdhdmVzPC9zdHJvbmc+PC9zcGFuPlxyXG4gICAgICA8L2Zvb3Rlcj5cclxuICA8L3NlY3Rpb24+XHJcbjwvZGl2PlxyXG4iXX0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29nbml0by1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ZvcmdvdC1wYXNzd29yZC9mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZm9yZ290LXBhc3N3b3JkL2ZvcmdvdC1wYXNzd29yZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLGdDQUFnQztBQUNoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTNDLGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7OztBQU81RCxNQUFNLE9BQU8sdUJBQXVCO0lBUWhDLFlBQ1UsV0FBK0IsRUFDL0IsRUFBZSxFQUNmLE1BQXFCLEVBQ3RCLGFBQTRCO1FBSDNCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVRyQyx3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFFNUIsYUFBUSxHQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDN0Msb0JBQWUsR0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO0lBT2pELENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDdkMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3ZDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQztZQUNsQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRO1NBQ25DLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDO0lBQzVDLENBQUM7SUFFRCx1QkFBdUI7UUFDbkIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDbEUsSUFBSSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7YUFDekUsU0FBUyxDQUNOO1lBQ0UsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxHQUFHLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFO29CQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUMxRDtxQkFBTTtvQkFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO2lCQUNuRDtZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDekQsQ0FBQztTQUNGLENBQ0osQ0FBQztJQUNOLENBQUM7O29IQXpEUSx1QkFBdUI7d0dBQXZCLHVCQUF1Qix3RUNsQnBDLHFsREE0Q0E7MkZEMUJhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8gVGhpcmQgcGFydHkgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gXCJuZ3gtdG9hc3RyXCI7XHJcblxyXG4vLyBVc2VyIGRlZmluZWQgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgVXNlcm5hbWVJbmZvIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hdXRoLm1vZGVsXCI7XHJcbmltcG9ydCB7IEFubmFMaWJBdXRoU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTG9naW5Db25zdGFudCB9IGZyb20gXCIuLi8uLi9jb25zdGFudHMvbG9naW5Db25zdGFudFwiO1xyXG5pbXBvcnQgeyBMaWJyYXJ5Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnL2xpYnJhcnkuY29uZmlnJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYW5uYS1jb2duaXRvLWxpYi1mb3Jnb3QtcGFzc3dvcmQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZvcmdvdC1wYXNzd29yZC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3Jnb3RQYXNzd29yZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICB2ZXJpZnlSZWdpc3RlcmVkRW1haWw6IEZvcm1Hcm91cDtcclxuICAgIHBhc3N3b3JkTm90TWF0Y2hpbmcgPSBmYWxzZTtcclxuICAgIGNvbnN0YW50czogdHlwZW9mIExvZ2luQ29uc3RhbnQ7XHJcbiAgICBwYXNzd29yZDphbnkgPSB7IHZhbHVlOiBudWxsLCBzdGF0dXM6IG51bGwgfTtcclxuICAgIGNvbmZpcm1QYXNzd29yZDphbnkgPSB7IHZhbHVlOiBudWxsLCBzdGF0dXM6IG51bGwgfTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQW5uYUxpYkF1dGhTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXHJcbiAgICAgIHB1YmxpYyBsaWJyYXJ5Q29uZmlnOiBMaWJyYXJ5Q29uZmlnXHJcbiAgICApIHt9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5jb25zdGFudHMgPSBMb2dpbkNvbnN0YW50O1xyXG4gICAgICAgIHRoaXMub25JbnRpYWxpc2VGb3JtKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UudXNlck5hbWUpIHtcclxuICAgICAgICAgICAgdGhpcy5vblVwZGF0ZUZvcm0oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25JbnRpYWxpc2VGb3JtKCkge1xyXG4gICAgICAgIHRoaXMudmVyaWZ5UmVnaXN0ZXJlZEVtYWlsID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgIGVtYWlsOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvblVwZGF0ZUZvcm0oKSB7XHJcbiAgICAgICAgdGhpcy52ZXJpZnlSZWdpc3RlcmVkRW1haWwucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICAgIGVtYWlsOiB0aGlzLmF1dGhTZXJ2aWNlLnVzZXJOYW1lLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlzRm9ybVZhbGlkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZlcmlmeVJlZ2lzdGVyZWRFbWFpbC52YWxpZDtcclxuICAgIH1cclxuXHJcbiAgICBvblZlcmlmeVJlZ2lzdGVyZWRFbWFpbCgpIHtcclxuICAgICAgICBsZXQgdXNlcm5hbWUgPSB0aGlzLnZlcmlmeVJlZ2lzdGVyZWRFbWFpbC5jb250cm9sc1snZW1haWwnXS52YWx1ZTtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5pc1VzZXJuYW1lQXZhaWxhYmxlKHVzZXJuYW1lKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCByZXMgPSBuZXcgVXNlcm5hbWVJbmZvKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIGlmICghcmVzLmlzVXNlcm5hbWVBdmFpbGFibGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLm9uRm9yZ290UGFzc3dvcmRHZW5lcmF0ZU9UUCh1c2VybmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jb25zdGFudHMudXNlck5vdEZvdW5kO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3I6IGFueSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKExvZ2luQ29uc3RhbnQuYXBpRmFpbEVycm9yTWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibWFpblwiPlxyXG4gIDxzZWN0aW9uPlxyXG4gICAgICA8aGVhZGVyPlxyXG4gICAgICAgICAgPGltZyBbc3JjXT1cImxpYnJhcnlDb25maWcubG9naW5QYWdlTG9nb0ltZ1VybFwiIGFsdD1cIkFubmEgTG9nb1wiIC8+XHJcbiAgICAgIDwvaGVhZGVyPlxyXG4gICAgICA8YXJ0aWNsZT5cclxuICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwidmVyaWZ5UmVnaXN0ZXJlZEVtYWlsXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBpZD1cImhlYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAge3sgY29uc3RhbnRzLmZvcmdvdFBhc3N3b3JkSGVhZGluZyB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICB7eyBjb25zdGFudHMuZm9yZ290UGFzc3dvcmRNZXNzYWdlIH19XHJcbiAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgIDxkaXYgaWQ9XCJhbGVydC1kaXZcIiAqbmdJZj1cImVycm9yTWVzc2FnZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+cmVwb3J0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8cCBpZD1cImFsZXJ0LW1zZ1wiPnt7IGVycm9yTWVzc2FnZSB9fTwvcD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIlxyXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29uc3RhbnRzLmVudGVyRW1haWxcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAnaW5wdXQtaW52YWxpZCc6IHZlcmlmeVJlZ2lzdGVyZWRFbWFpbC5nZXQoJ2VtYWlsJyk/LmRpcnR5ICYmIHZlcmlmeVJlZ2lzdGVyZWRFbWFpbC5nZXQoJ2VtYWlsJyk/LmVycm9yc1xyXG4gICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImxvZ2luLWJ0blwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNGb3JtVmFsaWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblZlcmlmeVJlZ2lzdGVyZWRFbWFpbCgpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGNvbnN0YW50cy5mb3Jnb3RQYXNzd29yZEJ1dHRvbiB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9mb3JtPlxyXG4gICAgICA8L2FydGljbGU+XHJcbiAgICAgIDxmb290ZXI+XHJcbiAgICAgICAgICBQb3dlcmVkIGJ5IDxzcGFuPiA8c3Ryb25nPiBTdXJlV2F2ZXM8L3N0cm9uZz48L3NwYW4+XHJcbiAgICAgIDwvZm9vdGVyPlxyXG4gIDwvc2VjdGlvbj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,4 +1,4 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  /** Token to inject the auth service */
3
3
  export const AUTH_SERVICE_TOKEN = new InjectionToken('Auth service token');
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1zZXJ2aWNlLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbmZpZy9hdXRoLXNlcnZpY2UudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyx1Q0FBdUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBRXZCLElBQUksY0FBYyxDQUFlLG9CQUFvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG4vKiogVG9rZW4gdG8gaW5qZWN0IHRoZSBhdXRoIHNlcnZpY2UgKi9cclxuZXhwb3J0IGNvbnN0IEFVVEhfU0VSVklDRV9UT0tFTjpcclxuICAgIEluamVjdGlvblRva2VuPElBdXRoU2VydmljZT4gPVxyXG4gICAgICAgIG5ldyBJbmplY3Rpb25Ub2tlbjxJQXV0aFNlcnZpY2U+KCdBdXRoIHNlcnZpY2UgdG9rZW4nKTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUF1dGhTZXJ2aWNlIHtcclxuICAgaXNMb2dnaW5nSW46IGJvb2xlYW47IFxyXG4gICBvblN1Y2Nlc3NmdWxBdXRoZW50aWNhdGluZ1VzZXIocmVzdWx0OiBhbnkpOiB2b2lkO1xyXG4gICBpc1VzZXJuYW1lQXZhaWxhYmxlKHVzZXJuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgIG5hdmlnYXRlQmFzZWRPblVzZXJSb2xlKGxvZ2luVXNlckRhdGE6IGFueSk6IHZvaWQ7XHJcbiAgIGdldFB1YmxpY0lwKCk6IHN0cmluZztcclxufSJdfQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1zZXJ2aWNlLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbmZpZy9hdXRoLXNlcnZpY2UudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyx1Q0FBdUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBRXZCLElBQUksY0FBYyxDQUFlLG9CQUFvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG4vKiogVG9rZW4gdG8gaW5qZWN0IHRoZSBhdXRoIHNlcnZpY2UgKi9cclxuZXhwb3J0IGNvbnN0IEFVVEhfU0VSVklDRV9UT0tFTjpcclxuICAgIEluamVjdGlvblRva2VuPElBdXRoU2VydmljZT4gPVxyXG4gICAgICAgIG5ldyBJbmplY3Rpb25Ub2tlbjxJQXV0aFNlcnZpY2U+KCdBdXRoIHNlcnZpY2UgdG9rZW4nKTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUF1dGhTZXJ2aWNlIHtcclxuICAgaXNMb2dnaW5nSW46IGJvb2xlYW47IFxyXG4gICBvblN1Y2Nlc3NmdWxBdXRoZW50aWNhdGluZ1VzZXIocmVzdWx0OiBhbnkpOiB2b2lkO1xyXG4gICBpc1VzZXJuYW1lQXZhaWxhYmxlKHVzZXJuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgIG5hdmlnYXRlQmFzZWRPblVzZXJSb2xlKGxvZ2luVXNlckRhdGE6IGFueSk6IHZvaWQ7XHJcbiAgIGdldFB1YmxpY0lwKCk6IHN0cmluZztcclxuICAgc2VuZFJlZ2VuZXJhdGlvbkVtYWlsKHVzZXJDb2RlOnN0cmluZyk6dm9pZDtcclxufSJdfQ==
@@ -1,6 +1,7 @@
1
1
  // Angular import statements
2
2
  import { Inject, Injectable } from "@angular/core";
3
3
  import { Router } from "@angular/router";
4
+ import { HttpClient } from "@angular/common/http";
4
5
  // Third party import statements
5
6
  import { CognitoUserPool, CognitoUser, AuthenticationDetails } from "amazon-cognito-identity-js";
6
7
  // User defined import statements
@@ -13,11 +14,13 @@ import * as i0 from "@angular/core";
13
14
  import * as i1 from "@angular/router";
14
15
  import * as i2 from "./acl.service";
15
16
  import * as i3 from "../config/library.config";
17
+ import * as i4 from "@angular/common/http";
16
18
  export class AnnaLibAuthService {
17
- constructor(router, aclService, libraryConfig, consumingProjectAuthService) {
19
+ constructor(router, aclService, libraryConfig, httpClient, consumingProjectAuthService) {
18
20
  this.router = router;
19
21
  this.aclService = aclService;
20
22
  this.libraryConfig = libraryConfig;
23
+ this.httpClient = httpClient;
21
24
  this.consumingProjectAuthService = consumingProjectAuthService;
22
25
  this.noOfAttempts = 0;
23
26
  this.sessionLocked = false;
@@ -125,7 +128,11 @@ export class AnnaLibAuthService {
125
128
  },
126
129
  onFailure: (err) => {
127
130
  this.consumingProjectAuthService.isLoggingIn = false;
128
- if (err.message === "Password attempts exceeded") {
131
+ if (err.message === "Temporary password has expired and must be reset by an administrator.") {
132
+ this.loginErrorMessage = "Password has expired. A new password has been sent to your registered email. Kindly login again with new link and credentials.";
133
+ this.consumingProjectAuthService.sendRegenerationEmail(this.authenticationDetails.getUsername());
134
+ }
135
+ else if (err.message === "Password attempts exceeded") {
129
136
  this.loginErrorMessage = LoginConstant.attemptLimitExceeded;
130
137
  }
131
138
  else {
@@ -205,15 +212,15 @@ export class AnnaLibAuthService {
205
212
  }
206
213
  }
207
214
  }
208
- AnnaLibAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaLibAuthService, deps: [{ token: i1.Router }, { token: i2.AnnaLibAclService }, { token: i3.LibraryConfig }, { token: AUTH_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
215
+ AnnaLibAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaLibAuthService, deps: [{ token: i1.Router }, { token: i2.AnnaLibAclService }, { token: i3.LibraryConfig }, { token: i4.HttpClient }, { token: AUTH_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
209
216
  AnnaLibAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaLibAuthService, providedIn: "root" });
210
217
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaLibAuthService, decorators: [{
211
218
  type: Injectable,
212
219
  args: [{
213
220
  providedIn: "root",
214
221
  }]
215
- }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.AnnaLibAclService }, { type: i3.LibraryConfig }, { type: undefined, decorators: [{
222
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.AnnaLibAclService }, { type: i3.LibraryConfig }, { type: i4.HttpClient }, { type: undefined, decorators: [{
216
223
  type: Inject,
217
224
  args: [AUTH_SERVICE_TOKEN]
218
225
  }] }]; } });
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL3NlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLGdDQUFnQztBQUNoQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBc0IsTUFBTSw0QkFBNEIsQ0FBQztBQUVySCxpQ0FBaUM7QUFDakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQUtoRixNQUFNLE9BQU8sa0JBQWtCO0lBb0IzQixZQUNZLE1BQWMsRUFDZixVQUE2QixFQUM3QixhQUE0QixFQUNBLDJCQUF5QztRQUhwRSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2YsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDQSxnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQWM7UUFWaEYsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFVaEIsSUFBRyxDQUFDLDJCQUEyQixFQUFFO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENB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QUFhLENBQUMsYUFBYSxDQUFDO2dCQUNqRSxNQUFNO1lBQ1Y7Z0JBQ0ksWUFBWSxHQUFHLGFBQWEsQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHLFlBQVksR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDO1NBQ2hHO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUVELDJCQUEyQixDQUFDLEtBQXlCO1FBQ25ELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xDLElBQUksZ0JBQWdCLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLE9BQU8sRUFBRTtZQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUM3RjthQUFNO1lBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7U0FDL0M7SUFDSCxDQUFDOzsrR0E1TlEsa0JBQWtCLHNHQXdCZixrQkFBa0I7bUhBeEJyQixrQkFBa0IsY0FGZixNQUFNOzJGQUVULGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQXlCUSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXIgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuLy8gVGhpcmQgcGFydHkgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgQ29nbml0b1VzZXJQb29sLCBDb2duaXRvVXNlciwgQXV0aGVudGljYXRpb25EZXRhaWxzLCBDb2duaXRvVXNlclNlc3Npb24gfSBmcm9tIFwiYW1hem9uLWNvZ25pdG8taWRlbnRpdHktanNcIjtcclxuXHJcbi8vIFVzZXIgZGVmaW5lZCBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBMb2dpbkNvbnN0YW50IH0gZnJvbSBcIi4uL2NvbnN0YW50cy9sb2dpbkNvbnN0YW50XCI7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uRGF0YSwgVXNlclBvb2xJbmZvcm1hdGlvbiB9IGZyb20gXCIuLi9tb2RlbHMvYXV0aC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBBbm5hTGliQWNsU2VydmljZSB9IGZyb20gJy4vYWNsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaWJyYXJ5Q29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL2xpYnJhcnkuY29uZmlnJztcclxuaW1wb3J0IHsgSUF1dGhTZXJ2aWNlLCBBVVRIX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuLi9jb25maWcvYXV0aC1zZXJ2aWNlLnRva2VuJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5uYUxpYkF1dGhTZXJ2aWNlICB7XHJcbiAgICBwb29sRGF0YTogVXNlclBvb2xJbmZvcm1hdGlvbjtcclxuICAgIHVzZXJQb29sOiBDb2duaXRvVXNlclBvb2w7XHJcbiAgICBjb2duaXRvVXNlcjogQ29nbml0b1VzZXI7XHJcbiAgICBhdXRoZW50aWNhdGlvbkRldGFpbHM6IEF1dGhlbnRpY2F0aW9uRGV0YWlscztcclxuICAgIHRva2VuVmFsaWQ6IGJvb2xlYW47XHJcbiAgICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xyXG4gICAgdXNlckF0dHJpYnV0ZTogYW55O1xyXG4gICAgbG9naW5FcnJvck1lc3NhZ2U6IHN0cmluZyB8IG51bGw7XHJcbiAgICBzZXROZXdQYXNzd29yZEVycm9yTWVzc2FnZTogc3RyaW5nO1xyXG4gICAgc2V0TmV3UGFzc3dvcmRCdXR0b25NZXNzYWdlOiBzdHJpbmc7XHJcbiAgICB2ZXJpZnlBbmRTZXROZXdQYXNzd29yZEVycm9yTWVzc2FnZTogc3RyaW5nO1xyXG4gICAgdmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICB2ZXJpZnlBbmRTZXROZXdQYXNzd29yZEJ1dHRvbjogc3RyaW5nO1xyXG4gICAgbm9PZkF0dGVtcHRzID0gMDtcclxuICAgIHNlc3Npb25Mb2NrZWQgPSBmYWxzZTtcclxuICAgIHVzZXJOYW1lOiBhbnk7XHJcbiAgICBhY2Nlc3NUb2tlblRpbWVySWQ6IGFueTtcclxuICAgIElkVG9rZW46IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHB1YmxpYyBhY2xTZXJ2aWNlOiBBbm5hTGliQWNsU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgbGlicmFyeUNvbmZpZzogTGlicmFyeUNvbmZpZyxcclxuICAgICAgICBASW5qZWN0KEFVVEhfU0VSVklDRV9UT0tFTikgcHVibGljIGNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZTogSUF1dGhTZXJ2aWNlKSB7XHJcbiAgICAgICAgICBpZighY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgcHJvdmlkZSBhIGF1dGhTZXJ2aWNlJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge31cclxuXHJcbiAgICAvKioqXHJcbiAgIDEuIHRha2VzIHVzZXIgcG9vbCBkYXRhICh1c2VyUG9vbCBJRCBhbmQgY2xpZW50IElEKVxyXG4gICAyLiBpZiBjdXJyZW50IHVzZXIgaXMgbnVsbCB0aGVuIGl0IG1lYW5zIHVzZXIgYWxyZWFkeSBsb2dnZWQgb3V0IHRoZW4gc2ltcGx5IHJldHVybiBQcm9taXNlPGZhbHNlPlxyXG4gICAzLiBpZiBjdXJyZW50IHVzZXIgcHJlc2VudCBjaGVjayBpZiB0b2tlbiBpcyB2YWxpZCBmb3IgaXQuXHJcbiAqL1xyXG4gICAgaXNVc2VyTG9nZ2VkSW4oKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRVc2VyID0gdGhpcy5nZXRDdXJyZW50VXNlckRldGFpbHMoKTtcclxuICAgICAgICBpZiAoY3VycmVudFVzZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICBjdXJyZW50VXNlciAmJiBjdXJyZW50VXNlci5nZXRTZXNzaW9uKChlcnJvcjogRXJyb3IsIHRva2VuOiBDb2duaXRvVXNlclNlc3Npb24gfCBudWxsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWxsQ29nbml0b1Rva2VuQW5kR3JvdXBzKHRva2VuKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25UaW1lb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5hY2Nlc3NUb2tlblRpbWVySWQpO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXNzaW9uVGltZW91dCgpIHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcclxuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuYWNjZXNzVG9rZW5UaW1lcklkKTtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbTG9naW5Db25zdGFudC5sb2dpblBhZ2VVcmxdKTtcclxuICAgIH1cclxuXHJcbiAgICByZWZyZXNoQWNjZXNzVG9rZW4oKSB7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRVc2VyID0gdGhpcy5nZXRDdXJyZW50VXNlckRldGFpbHMoKTtcclxuICAgICAgICBsZXQgYWNjZXNzVG9rZW5FeHBpcmF0aW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJhY2Nlc3NUb2tlbkV4cGlyYXRpb25cIik7XHJcbiAgICAgICAgbGV0IGV4cFRpbWUgPSBhY2Nlc3NUb2tlbkV4cGlyYXRpb24gPyBwYXJzZUludChhY2Nlc3NUb2tlbkV4cGlyYXRpb24pIDogMDtcclxuICAgICAgICB0aGlzLmFjY2Vzc1Rva2VuVGltZXJJZCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgbGV0IGNvdW50ZXIgPSAxMDAwO1xyXG4gICAgICAgICAgICBsZXQgZGVsYXlGdW5jdGlvbiA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRVc2VyICYmIGN1cnJlbnRVc2VyLmdldFNlc3Npb24oKGVycm9yOiBhbnksIHRva2VuOiBDb2duaXRvVXNlclNlc3Npb24gfCBudWxsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWxsQ29nbml0b1Rva2VuQW5kR3JvdXBzKHRva2VuKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld0V4cFRpbWUgPSB0aGlzLmNvbXB1dGVUb2tlbkV4cGlyYXRpb24odGhpcy5JZFRva2VuKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdFeHBUaW1lIDw9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0V4cFRpbWUgPSAxMDAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlciA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVsYXlGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoZGVsYXlGdW5jdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwVGltZSA9IG5ld0V4cFRpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiYWNjZXNzVG9rZW5FeHBpcmF0aW9uXCIsIG5ld0V4cFRpbWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5hY2Nlc3NUb2tlblRpbWVySWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hBY2Nlc3NUb2tlbigpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3IuY29kZSA9PT0gXCJOb3RBdXRob3JpemVkRXhjZXB0aW9uXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uVGltZW91dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LCBjb3VudGVyKTtcclxuICAgICAgICB9LCBleHBUaW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wdXRlVG9rZW5FeHBpcmF0aW9uKHRva2VuOiBhbnkpIHtcclxuICAgICAgICBsZXQgY3VycmVudFRpbWUgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcclxuICAgICAgICBsZXQgdG9rZW5UaW1lID0gdG9rZW4ucGF5bG9hZC5leHA7XHJcbiAgICAgICAgbGV0IGV4cFRpbWUgPSAodG9rZW5UaW1lIC0gY3VycmVudFRpbWUpICogMTAwMDtcclxuICAgICAgICByZXR1cm4gZXhwVGltZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgZ2V0Q3VycmVudFVzZXJEZXRhaWxzKCkge1xyXG4gICAgICAgIGxldCBwb29sRGF0YSA9IG5ldyBVc2VyUG9vbEluZm9ybWF0aW9uKHRoaXMubGlicmFyeUNvbmZpZy5jb2duaXRvLnVzZXJQb29sSWQsIHRoaXMubGlicmFyeUNvbmZpZy5jb2duaXRvLmNsaWVudElkKTtcclxuICAgICAgICBsZXQgdXNlclBvb2wgPSBuZXcgQ29nbml0b1VzZXJQb29sKHBvb2xEYXRhKTtcclxuICAgICAgICByZXR1cm4gdXNlclBvb2wuZ2V0Q3VycmVudFVzZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDb2duaXRvVXNlckRldGFpbHMoZW1haWw6IHN0cmluZyk6IENvZ25pdG9Vc2VyIHtcclxuICAgICAgICB0aGlzLnBvb2xEYXRhID0gbmV3IFVzZXJQb29sSW5mb3JtYXRpb24odGhpcy5saWJyYXJ5Q29uZmlnLmNvZ25pdG8udXNlclBvb2xJZCwgdGhpcy5saWJyYXJ5Q29uZmlnLmNvZ25pdG8uY2xpZW50SWQpO1xyXG4gICAgICAgIHRoaXMudXNlclBvb2wgPSBuZXcgQ29nbml0b1VzZXJQb29sKHRoaXMucG9vbERhdGEpO1xyXG5cclxuICAgICAgICBsZXQgdXNlckRhdGEgPSB7XHJcbiAgICAgICAgICAgIFVzZXJuYW1lOiBlbWFpbCxcclxuICAgICAgICAgICAgUG9vbDogdGhpcy51c2VyUG9vbCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCBjb2duaXRvVXNlciA9IG5ldyBDb2duaXRvVXNlcih1c2VyRGF0YSk7XHJcbiAgICAgICAgcmV0dXJuIGNvZ25pdG9Vc2VyO1xyXG4gICAgfVxyXG5cclxuICAgIGF1dGhlbnRpY2F0ZShlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5sb2dpbkVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgbGV0IGF1dGhEYXRhID0gbmV3IEF1dGhlbnRpY2F0aW9uRGF0YShlbWFpbCwgcGFzc3dvcmQpO1xyXG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRpb25EZXRhaWxzID0gbmV3IEF1dGhlbnRpY2F0aW9uRGV0YWlscyhhdXRoRGF0YSk7XHJcblxyXG4gICAgICAgIHRoaXMuY29nbml0b1VzZXIgPSB0aGlzLmdldENvZ25pdG9Vc2VyRGV0YWlscyhlbWFpbCk7XHJcbiAgICAgICAgdGhpcy5Db2duaXRvQXV0aGVudGljYXRpb24odGhpcy5hdXRoZW50aWNhdGlvbkRldGFpbHMpO1xyXG4gICAgfVxyXG5cclxuICAgIENvZ25pdG9BdXRoZW50aWNhdGlvbihhdXRoZW50aWNhdGlvbkRldGFpbHM6IEF1dGhlbnRpY2F0aW9uRGV0YWlscykge1xyXG4gICAgICAgIHRoaXMuY29nbml0b1VzZXIuYXV0aGVudGljYXRlVXNlcihhdXRoZW50aWNhdGlvbkRldGFpbHMsIHtcclxuICAgICAgICAgICAgb25TdWNjZXNzOiBhc3luYyAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldEFsbENvZ25pdG9Ub2tlbkFuZEdyb3VwcyhyZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2Uub25TdWNjZXNzZnVsQXV0aGVudGljYXRpbmdVc2VyKHJlc3VsdCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uRmFpbHVyZTogKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuaXNMb2dnaW5nSW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIubWVzc2FnZSA9PT0gXCJQYXNzd29yZCBhdHRlbXB0cyBleGNlZWRlZFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dpbkVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuYXR0ZW1wdExpbWl0RXhjZWVkZWQ7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5FcnJvck1lc3NhZ2UgPSBMb2dpbkNvbnN0YW50LnVzZXJOYW1lUGFzc3dvcmRJbmNvcnJlY3Q7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG5ld1Bhc3N3b3JkUmVxdWlyZWQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5pc0xvZ2dpbmdJbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51c2VyQXR0cmlidXRlID0gZGF0YTtcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtMb2dpbkNvbnN0YW50LnNldE5ld1Bhc3N3b3JkVXJsXSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TmV3UGFzc3dvcmQobmV3UGFzc3dvcmQ6IGFueSkge1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLnVzZXJBdHRyaWJ1dGUuZW1haWw7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMudXNlckF0dHJpYnV0ZS5lbWFpbF92ZXJpZmllZDtcclxuICAgICAgICBkZWxldGUgdGhpcy51c2VyQXR0cmlidXRlLnBob25lX251bWJlcl92ZXJpZmllZDtcclxuICAgICAgICB0aGlzLmNvZ25pdG9Vc2VyLmNvbXBsZXRlTmV3UGFzc3dvcmRDaGFsbGVuZ2UobmV3UGFzc3dvcmQsIHRoaXMudXNlckF0dHJpYnV0ZSwge1xyXG4gICAgICAgICAgICBvblN1Y2Nlc3M6IChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtMb2dpbkNvbnN0YW50LmxvZ2luUGFnZVVybF0pO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvbkZhaWx1cmU6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXROZXdQYXNzd29yZEVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuc2Vzc2lvbkV4cGlyZWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldE5ld1Bhc3N3b3JkQnV0dG9uTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQubG9naW5BZ2FpbjtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkZvcmdvdFBhc3N3b3JkR2VuZXJhdGVPVFAoZW1haWw6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMudXNlck5hbWUgPSBlbWFpbDtcclxuICAgICAgICB0aGlzLmNvZ25pdG9Vc2VyID0gdGhpcy5nZXRDb2duaXRvVXNlckRldGFpbHMoZW1haWwpO1xyXG4gICAgICAgIHRoaXMuY29nbml0b1VzZXIuZm9yZ290UGFzc3dvcmQoe1xyXG4gICAgICAgICAgICBvblN1Y2Nlc3M6IChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRNZXNzYWdlID1cclxuICAgICAgICAgICAgICAgICAgICBMb2dpbkNvbnN0YW50LnZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkTWVzc2FnZSArXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LkNvZGVEZWxpdmVyeURldGFpbHMuRGVzdGluYXRpb24gK1xyXG4gICAgICAgICAgICAgICAgICAgIExvZ2luQ29uc3RhbnQucGxlYXNlRW50ZXJJdEJlbG93O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRVcmxdKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25GYWlsdXJlOiAoZXJyKSA9PiB7fSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB2ZXJpZnlDb2RlKHZlcmlmaWNhdGlvbkNvZGU6IHN0cmluZywgbmV3UGFzc3dvcmQ6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuY29nbml0b1VzZXIuY29uZmlybVBhc3N3b3JkKHZlcmlmaWNhdGlvbkNvZGUsIG5ld1Bhc3N3b3JkLCB7XHJcbiAgICAgICAgICAgIG9uRmFpbHVyZTogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vT2ZBdHRlbXB0cyA9IHRoaXMubm9PZkF0dGVtcHRzICsgMTtcclxuICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRFcnJvck1lc3NhZ2UgPSB0aGlzLmZvcmdvdFBhc3N3b3JkRXJyb3IoZXJyb3IsIHRoaXMubm9PZkF0dGVtcHRzKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25TdWNjZXNzOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbTG9naW5Db25zdGFudC5sb2dpblBhZ2VVcmxdKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmb3Jnb3RQYXNzd29yZEVycm9yKGVycjogYW55LCBub09mQXR0ZW1wdHM6IG51bWJlcikge1xyXG4gICAgICAgIGxldCBlcnJvck1lc3NhZ2U7XHJcbiAgICAgICAgc3dpdGNoIChlcnIuY29kZSkge1xyXG4gICAgICAgICAgICBjYXNlIFwiTGltaXRFeGNlZWRlZEV4Y2VwdGlvblwiOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uTG9ja2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuYXR0ZW1wdExpbWl0RXhjZWVkZWQ7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcIkV4cGlyZWRDb2RlRXhjZXB0aW9uXCI6XHJcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBMb2dpbkNvbnN0YW50LnNlc3Npb25FeHBpcmVkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52ZXJpZnlBbmRTZXROZXdQYXNzd29yZEJ1dHRvbiA9IExvZ2luQ29uc3RhbnQucmVnZW5lcmF0ZU90cDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gTG9naW5Db25zdGFudC5hdHRlbXB0ICsgXCIgXCIgKyBub09mQXR0ZW1wdHMgKyBMb2dpbkNvbnN0YW50LmF0dGVtcHRNZXNzYWdlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZXJyb3JNZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFsbENvZ25pdG9Ub2tlbkFuZEdyb3Vwcyh0b2tlbjogQ29nbml0b1VzZXJTZXNzaW9uKSB7XHJcbiAgICAgIHRoaXMuYWNjZXNzVG9rZW4gPSB0b2tlbi5nZXRBY2Nlc3NUb2tlbigpLmdldEp3dFRva2VuKCk7XHJcbiAgICAgIHRoaXMuSWRUb2tlbiA9IHRva2VuLmdldElkVG9rZW4oKTtcclxuICAgICAgaWYgKFwiY29nbml0bzpncm91cHNcIiBpbiB0b2tlbi5nZXRBY2Nlc3NUb2tlbigpLnBheWxvYWQpIHtcclxuICAgICAgICAgIHRoaXMuYWNsU2VydmljZS51c2VyR3JvdXBzSW5Db2duaXRvSldUID0gdG9rZW4uZ2V0QWNjZXNzVG9rZW4oKS5wYXlsb2FkW1wiY29nbml0bzpncm91cHNcIl07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFjbFNlcnZpY2UudXNlckdyb3Vwc0luQ29nbml0b0pXVCA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbn1cclxuXHJcbiJdfQ==
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL3NlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxnQ0FBZ0M7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7QUFFckgsaUNBQWlDO0FBQ2pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7O0FBS2hGLE1BQU0sT0FBTyxrQkFBa0I7SUFvQjNCLFlBQ1ksTUFBYyxFQUNmLFVBQTZCLEVBQzdCLGFBQTRCLEVBQzVCLFVBQXFCLEVBQ08sMkJBQXlDO1FBSnBFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ08sZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUFjO1FBWGhGLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLGtC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QkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG4vLyBUaGlyZCBwYXJ0eSBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBDb2duaXRvVXNlclBvb2wsIENvZ25pdG9Vc2VyLCBBdXRoZW50aWNhdGlvbkRldGFpbHMsIENvZ25pdG9Vc2VyU2Vzc2lvbiB9IGZyb20gXCJhbWF6b24tY29nbml0by1pZGVudGl0eS1qc1wiO1xyXG5cclxuLy8gVXNlciBkZWZpbmVkIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IExvZ2luQ29uc3RhbnQgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2xvZ2luQ29uc3RhbnRcIjtcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25EYXRhLCBVc2VyUG9vbEluZm9ybWF0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9hdXRoLm1vZGVsXCI7XHJcbmltcG9ydCB7IEFubmFMaWJBY2xTZXJ2aWNlIH0gZnJvbSAnLi9hY2wuc2VydmljZSc7XHJcbmltcG9ydCB7IExpYnJhcnlDb25maWcgfSBmcm9tICcuLi9jb25maWcvbGlicmFyeS5jb25maWcnO1xyXG5pbXBvcnQgeyBJQXV0aFNlcnZpY2UsIEFVVEhfU0VSVklDRV9UT0tFTiB9IGZyb20gJy4uL2NvbmZpZy9hdXRoLXNlcnZpY2UudG9rZW4nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbm5hTGliQXV0aFNlcnZpY2UgIHtcclxuICAgIHBvb2xEYXRhOiBVc2VyUG9vbEluZm9ybWF0aW9uO1xyXG4gICAgdXNlclBvb2w6IENvZ25pdG9Vc2VyUG9vbDtcclxuICAgIGNvZ25pdG9Vc2VyOiBDb2duaXRvVXNlcjtcclxuICAgIGF1dGhlbnRpY2F0aW9uRGV0YWlsczogQXV0aGVudGljYXRpb25EZXRhaWxzO1xyXG4gICAgdG9rZW5WYWxpZDogYm9vbGVhbjtcclxuICAgIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XHJcbiAgICB1c2VyQXR0cmlidXRlOiBhbnk7XHJcbiAgICBsb2dpbkVycm9yTWVzc2FnZTogc3RyaW5nIHwgbnVsbDtcclxuICAgIHNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICBzZXROZXdQYXNzd29yZEJ1dHRvbk1lc3NhZ2U6IHN0cmluZztcclxuICAgIHZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICB2ZXJpZnlBbmRTZXROZXdQYXNzd29yZE1lc3NhZ2U6IHN0cmluZztcclxuICAgIHZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkQnV0dG9uOiBzdHJpbmc7XHJcbiAgICBub09mQXR0ZW1wdHMgPSAwO1xyXG4gICAgc2Vzc2lvbkxvY2tlZCA9IGZhbHNlO1xyXG4gICAgdXNlck5hbWU6IGFueTtcclxuICAgIGFjY2Vzc1Rva2VuVGltZXJJZDogYW55O1xyXG4gICAgSWRUb2tlbjogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgcHVibGljIGFjbFNlcnZpY2U6IEFubmFMaWJBY2xTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBsaWJyYXJ5Q29uZmlnOiBMaWJyYXJ5Q29uZmlnLFxyXG4gICAgICAgIHB1YmxpYyBodHRwQ2xpZW50Okh0dHBDbGllbnQsXHJcbiAgICAgICAgQEluamVjdChBVVRIX1NFUlZJQ0VfVE9LRU4pIHB1YmxpYyBjb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2U6IElBdXRoU2VydmljZSkge1xyXG4gICAgICAgICAgaWYoIWNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBtdXN0IHByb3ZpZGUgYSBhdXRoU2VydmljZScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHt9XHJcblxyXG4gICAgLyoqKlxyXG4gICAxLiB0YWtlcyB1c2VyIHBvb2wgZGF0YSAodXNlclBvb2wgSUQgYW5kIGNsaWVudCBJRClcclxuICAgMi4gaWYgY3VycmVudCB1c2VyIGlzIG51bGwgdGhlbiBpdCBtZWFucyB1c2VyIGFscmVhZHkgbG9nZ2VkIG91dCB0aGVuIHNpbXBseSByZXR1cm4gUHJvbWlzZTxmYWxzZT5cclxuICAgMy4gaWYgY3VycmVudCB1c2VyIHByZXNlbnQgY2hlY2sgaWYgdG9rZW4gaXMgdmFsaWQgZm9yIGl0LlxyXG4gKi9cclxuICAgIGlzVXNlckxvZ2dlZEluKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGxldCBjdXJyZW50VXNlciA9IHRoaXMuZ2V0Q3VycmVudFVzZXJEZXRhaWxzKCk7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRVc2VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgY3VycmVudFVzZXIgJiYgY3VycmVudFVzZXIuZ2V0U2Vzc2lvbigoZXJyb3I6IEVycm9yLCB0b2tlbjogQ29nbml0b1VzZXJTZXNzaW9uIHwgbnVsbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFsbENvZ25pdG9Ub2tlbkFuZEdyb3Vwcyh0b2tlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uVGltZW91dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuYWNjZXNzVG9rZW5UaW1lcklkKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2Vzc2lvblRpbWVvdXQoKSB7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmFjY2Vzc1Rva2VuVGltZXJJZCk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQubG9naW5QYWdlVXJsXSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVmcmVzaEFjY2Vzc1Rva2VuKCkge1xyXG4gICAgICAgIGxldCBjdXJyZW50VXNlciA9IHRoaXMuZ2V0Q3VycmVudFVzZXJEZXRhaWxzKCk7XHJcbiAgICAgICAgbGV0IGFjY2Vzc1Rva2VuRXhwaXJhdGlvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYWNjZXNzVG9rZW5FeHBpcmF0aW9uXCIpO1xyXG4gICAgICAgIGxldCBleHBUaW1lID0gYWNjZXNzVG9rZW5FeHBpcmF0aW9uID8gcGFyc2VJbnQoYWNjZXNzVG9rZW5FeHBpcmF0aW9uKSA6IDA7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NUb2tlblRpbWVySWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjb3VudGVyID0gMTAwMDtcclxuICAgICAgICAgICAgbGV0IGRlbGF5RnVuY3Rpb24gPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICBjdXJyZW50VXNlciAmJiBjdXJyZW50VXNlci5nZXRTZXNzaW9uKChlcnJvcjogYW55LCB0b2tlbjogQ29nbml0b1VzZXJTZXNzaW9uIHwgbnVsbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFsbENvZ25pdG9Ub2tlbkFuZEdyb3Vwcyh0b2tlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdFeHBUaW1lID0gdGhpcy5jb21wdXRlVG9rZW5FeHBpcmF0aW9uKHRoaXMuSWRUb2tlbik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3RXhwVGltZSA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdFeHBUaW1lID0gMTAwMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlbGF5RnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGRlbGF5RnVuY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cFRpbWUgPSBuZXdFeHBUaW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImFjY2Vzc1Rva2VuRXhwaXJhdGlvblwiLCBuZXdFeHBUaW1lLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuYWNjZXNzVG9rZW5UaW1lcklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoQWNjZXNzVG9rZW4oKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVycm9yLmNvZGUgPT09IFwiTm90QXV0aG9yaXplZEV4Y2VwdGlvblwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblRpbWVvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSwgY291bnRlcik7XHJcbiAgICAgICAgfSwgZXhwVGltZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcHV0ZVRva2VuRXhwaXJhdGlvbih0b2tlbjogYW55KSB7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRUaW1lID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XHJcbiAgICAgICAgbGV0IHRva2VuVGltZSA9IHRva2VuLnBheWxvYWQuZXhwO1xyXG4gICAgICAgIGxldCBleHBUaW1lID0gKHRva2VuVGltZSAtIGN1cnJlbnRUaW1lKSAqIDEwMDA7XHJcbiAgICAgICAgcmV0dXJuIGV4cFRpbWU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGdldEN1cnJlbnRVc2VyRGV0YWlscygpIHtcclxuICAgICAgICBsZXQgcG9vbERhdGEgPSBuZXcgVXNlclBvb2xJbmZvcm1hdGlvbih0aGlzLmxpYnJhcnlDb25maWcuY29nbml0by51c2VyUG9vbElkLCB0aGlzLmxpYnJhcnlDb25maWcuY29nbml0by5jbGllbnRJZCk7XHJcbiAgICAgICAgbGV0IHVzZXJQb29sID0gbmV3IENvZ25pdG9Vc2VyUG9vbChwb29sRGF0YSk7XHJcbiAgICAgICAgcmV0dXJuIHVzZXJQb29sLmdldEN1cnJlbnRVc2VyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q29nbml0b1VzZXJEZXRhaWxzKGVtYWlsOiBzdHJpbmcpOiBDb2duaXRvVXNlciB7XHJcbiAgICAgICAgdGhpcy5wb29sRGF0YSA9IG5ldyBVc2VyUG9vbEluZm9ybWF0aW9uKHRoaXMubGlicmFyeUNvbmZpZy5jb2duaXRvLnVzZXJQb29sSWQsIHRoaXMubGlicmFyeUNvbmZpZy5jb2duaXRvLmNsaWVudElkKTtcclxuICAgICAgICB0aGlzLnVzZXJQb29sID0gbmV3IENvZ25pdG9Vc2VyUG9vbCh0aGlzLnBvb2xEYXRhKTtcclxuXHJcbiAgICAgICAgbGV0IHVzZXJEYXRhID0ge1xyXG4gICAgICAgICAgICBVc2VybmFtZTogZW1haWwsXHJcbiAgICAgICAgICAgIFBvb2w6IHRoaXMudXNlclBvb2wsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgY29nbml0b1VzZXIgPSBuZXcgQ29nbml0b1VzZXIodXNlckRhdGEpO1xyXG4gICAgICAgIHJldHVybiBjb2duaXRvVXNlcjtcclxuICAgIH1cclxuXHJcbiAgICBhdXRoZW50aWNhdGUoZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMubG9naW5FcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICAgIGxldCBhdXRoRGF0YSA9IG5ldyBBdXRoZW50aWNhdGlvbkRhdGEoZW1haWwsIHBhc3N3b3JkKTtcclxuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uRGV0YWlscyA9IG5ldyBBdXRoZW50aWNhdGlvbkRldGFpbHMoYXV0aERhdGEpO1xyXG5cclxuICAgICAgICB0aGlzLmNvZ25pdG9Vc2VyID0gdGhpcy5nZXRDb2duaXRvVXNlckRldGFpbHMoZW1haWwpO1xyXG4gICAgICAgIHRoaXMuQ29nbml0b0F1dGhlbnRpY2F0aW9uKHRoaXMuYXV0aGVudGljYXRpb25EZXRhaWxzKTtcclxuICAgIH1cclxuXHJcbiAgICBDb2duaXRvQXV0aGVudGljYXRpb24oYXV0aGVudGljYXRpb25EZXRhaWxzOiBBdXRoZW50aWNhdGlvbkRldGFpbHMpIHtcclxuICAgICAgICB0aGlzLmNvZ25pdG9Vc2VyLmF1dGhlbnRpY2F0ZVVzZXIoYXV0aGVudGljYXRpb25EZXRhaWxzLCB7XHJcbiAgICAgICAgICAgIG9uU3VjY2VzczogYXN5bmMgKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxDb2duaXRvVG9rZW5BbmRHcm91cHMocmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLm9uU3VjY2Vzc2Z1bEF1dGhlbnRpY2F0aW5nVXNlcihyZXN1bHQpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvbkZhaWx1cmU6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLmlzTG9nZ2luZ0luID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgPT09IFwiVGVtcG9yYXJ5IHBhc3N3b3JkIGhhcyBleHBpcmVkIGFuZCBtdXN0IGJlIHJlc2V0IGJ5IGFuIGFkbWluaXN0cmF0b3IuXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2luRXJyb3JNZXNzYWdlID0gXCJQYXNzd29yZCBoYXMgZXhwaXJlZC4gQSBuZXcgcGFzc3dvcmQgaGFzIGJlZW4gc2VudCB0byB5b3VyIHJlZ2lzdGVyZWQgZW1haWwuIEtpbmRseSBsb2dpbiBhZ2FpbiB3aXRoIG5ldyBsaW5rIGFuZCBjcmVkZW50aWFscy5cIjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5zZW5kUmVnZW5lcmF0aW9uRW1haWwodGhpcy5hdXRoZW50aWNhdGlvbkRldGFpbHMuZ2V0VXNlcm5hbWUoKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSA9PT0gXCJQYXNzd29yZCBhdHRlbXB0cyBleGNlZWRlZFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dpbkVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuYXR0ZW1wdExpbWl0RXhjZWVkZWQ7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5FcnJvck1lc3NhZ2UgPSBMb2dpbkNvbnN0YW50LnVzZXJOYW1lUGFzc3dvcmRJbmNvcnJlY3Q7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG5ld1Bhc3N3b3JkUmVxdWlyZWQ6IChkYXRhOmFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuaXNMb2dnaW5nSW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlckF0dHJpYnV0ZSA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbTG9naW5Db25zdGFudC5zZXROZXdQYXNzd29yZFVybF0pO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIFxyXG4gICAgc2V0TmV3UGFzc3dvcmQobmV3UGFzc3dvcmQ6IGFueSkge1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLnVzZXJBdHRyaWJ1dGUuZW1haWw7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMudXNlckF0dHJpYnV0ZS5lbWFpbF92ZXJpZmllZDtcclxuICAgICAgICBkZWxldGUgdGhpcy51c2VyQXR0cmlidXRlLnBob25lX251bWJlcl92ZXJpZmllZDtcclxuICAgICAgICB0aGlzLmNvZ25pdG9Vc2VyLmNvbXBsZXRlTmV3UGFzc3dvcmRDaGFsbGVuZ2UobmV3UGFzc3dvcmQsIHRoaXMudXNlckF0dHJpYnV0ZSwge1xyXG4gICAgICAgICAgICBvblN1Y2Nlc3M6IChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtMb2dpbkNvbnN0YW50LmxvZ2luUGFnZVVybF0pO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvbkZhaWx1cmU6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXROZXdQYXNzd29yZEVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuc2Vzc2lvbkV4cGlyZWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldE5ld1Bhc3N3b3JkQnV0dG9uTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQubG9naW5BZ2FpbjtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkZvcmdvdFBhc3N3b3JkR2VuZXJhdGVPVFAoZW1haWw6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMudXNlck5hbWUgPSBlbWFpbDtcclxuICAgICAgICB0aGlzLmNvZ25pdG9Vc2VyID0gdGhpcy5nZXRDb2duaXRvVXNlckRldGFpbHMoZW1haWwpO1xyXG4gICAgICAgIHRoaXMuY29nbml0b1VzZXIuZm9yZ290UGFzc3dvcmQoe1xyXG4gICAgICAgICAgICBvblN1Y2Nlc3M6IChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRNZXNzYWdlID1cclxuICAgICAgICAgICAgICAgICAgICBMb2dpbkNvbnN0YW50LnZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkTWVzc2FnZSArXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LkNvZGVEZWxpdmVyeURldGFpbHMuRGVzdGluYXRpb24gK1xyXG4gICAgICAgICAgICAgICAgICAgIExvZ2luQ29uc3RhbnQucGxlYXNlRW50ZXJJdEJlbG93O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRVcmxdKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25GYWlsdXJlOiAoZXJyKSA9PiB7fSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB2ZXJpZnlDb2RlKHZlcmlmaWNhdGlvbkNvZGU6IHN0cmluZywgbmV3UGFzc3dvcmQ6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuY29nbml0b1VzZXIuY29uZmlybVBhc3N3b3JkKHZlcmlmaWNhdGlvbkNvZGUsIG5ld1Bhc3N3b3JkLCB7XHJcbiAgICAgICAgICAgIG9uRmFpbHVyZTogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vT2ZBdHRlbXB0cyA9IHRoaXMubm9PZkF0dGVtcHRzICsgMTtcclxuICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRFcnJvck1lc3NhZ2UgPSB0aGlzLmZvcmdvdFBhc3N3b3JkRXJyb3IoZXJyb3IsIHRoaXMubm9PZkF0dGVtcHRzKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25TdWNjZXNzOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbTG9naW5Db25zdGFudC5sb2dpblBhZ2VVcmxdKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmb3Jnb3RQYXNzd29yZEVycm9yKGVycjogYW55LCBub09mQXR0ZW1wdHM6IG51bWJlcikge1xyXG4gICAgICAgIGxldCBlcnJvck1lc3NhZ2U7XHJcbiAgICAgICAgc3dpdGNoIChlcnIuY29kZSkge1xyXG4gICAgICAgICAgICBjYXNlIFwiTGltaXRFeGNlZWRlZEV4Y2VwdGlvblwiOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uTG9ja2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuYXR0ZW1wdExpbWl0RXhjZWVkZWQ7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcIkV4cGlyZWRDb2RlRXhjZXB0aW9uXCI6XHJcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBMb2dpbkNvbnN0YW50LnNlc3Npb25FeHBpcmVkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52ZXJpZnlBbmRTZXROZXdQYXNzd29yZEJ1dHRvbiA9IExvZ2luQ29uc3RhbnQucmVnZW5lcmF0ZU90cDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gTG9naW5Db25zdGFudC5hdHRlbXB0ICsgXCIgXCIgKyBub09mQXR0ZW1wdHMgKyBMb2dpbkNvbnN0YW50LmF0dGVtcHRNZXNzYWdlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZXJyb3JNZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFsbENvZ25pdG9Ub2tlbkFuZEdyb3Vwcyh0b2tlbjogQ29nbml0b1VzZXJTZXNzaW9uKSB7XHJcbiAgICAgIHRoaXMuYWNjZXNzVG9rZW4gPSB0b2tlbi5nZXRBY2Nlc3NUb2tlbigpLmdldEp3dFRva2VuKCk7XHJcbiAgICAgIHRoaXMuSWRUb2tlbiA9IHRva2VuLmdldElkVG9rZW4oKTtcclxuICAgICAgaWYgKFwiY29nbml0bzpncm91cHNcIiBpbiB0b2tlbi5nZXRBY2Nlc3NUb2tlbigpLnBheWxvYWQpIHtcclxuICAgICAgICAgIHRoaXMuYWNsU2VydmljZS51c2VyR3JvdXBzSW5Db2duaXRvSldUID0gdG9rZW4uZ2V0QWNjZXNzVG9rZW4oKS5wYXlsb2FkW1wiY29nbml0bzpncm91cHNcIl07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFjbFNlcnZpY2UudXNlckdyb3Vwc0luQ29nbml0b0pXVCA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbn1cclxuXHJcbiJdfQ==
@@ -4,6 +4,7 @@ import { __awaiter } from 'tslib';
4
4
  import { CognitoUserPool, CognitoUser, AuthenticationDetails } from 'amazon-cognito-identity-js';
5
5
  import * as i3 from '@angular/router';
6
6
  import { RouterModule } from '@angular/router';
7
+ import * as i4 from '@angular/common/http';
7
8
  import * as i2 from '@angular/forms';
8
9
  import { Validators, FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms';
9
10
  import * as i6 from '@angular/common';
@@ -117,10 +118,11 @@ class LibraryConfig {
117
118
  }
118
119
 
119
120
  class AnnaLibAuthService {
120
- constructor(router, aclService, libraryConfig, consumingProjectAuthService) {
121
+ constructor(router, aclService, libraryConfig, httpClient, consumingProjectAuthService) {
121
122
  this.router = router;
122
123
  this.aclService = aclService;
123
124
  this.libraryConfig = libraryConfig;
125
+ this.httpClient = httpClient;
124
126
  this.consumingProjectAuthService = consumingProjectAuthService;
125
127
  this.noOfAttempts = 0;
126
128
  this.sessionLocked = false;
@@ -228,7 +230,11 @@ class AnnaLibAuthService {
228
230
  }),
229
231
  onFailure: (err) => {
230
232
  this.consumingProjectAuthService.isLoggingIn = false;
231
- if (err.message === "Password attempts exceeded") {
233
+ if (err.message === "Temporary password has expired and must be reset by an administrator.") {
234
+ this.loginErrorMessage = "Password has expired. A new password has been sent to your registered email. Kindly login again with new link and credentials.";
235
+ this.consumingProjectAuthService.sendRegenerationEmail(this.authenticationDetails.getUsername());
236
+ }
237
+ else if (err.message === "Password attempts exceeded") {
232
238
  this.loginErrorMessage = LoginConstant.attemptLimitExceeded;
233
239
  }
234
240
  else {
@@ -308,7 +314,7 @@ class AnnaLibAuthService {
308
314
  }
309
315
  }
310
316
  }
311
- AnnaLibAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaLibAuthService, deps: [{ token: i3.Router }, { token: AnnaLibAclService }, { token: LibraryConfig }, { token: AUTH_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
317
+ AnnaLibAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaLibAuthService, deps: [{ token: i3.Router }, { token: AnnaLibAclService }, { token: LibraryConfig }, { token: i4.HttpClient }, { token: AUTH_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
312
318
  AnnaLibAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaLibAuthService, providedIn: "root" });
313
319
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaLibAuthService, decorators: [{
314
320
  type: Injectable,
@@ -316,7 +322,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
316
322
  providedIn: "root",
317
323
  }]
318
324
  }], ctorParameters: function () {
319
- return [{ type: i3.Router }, { type: AnnaLibAclService }, { type: LibraryConfig }, { type: undefined, decorators: [{
325
+ return [{ type: i3.Router }, { type: AnnaLibAclService }, { type: LibraryConfig }, { type: i4.HttpClient }, { type: undefined, decorators: [{
320
326
  type: Inject,
321
327
  args: [AUTH_SERVICE_TOKEN]
322
328
  }] }];
@@ -1 +1 @@
1
- {"version":3,"file":"annalib-anna-cognito-lib.mjs","sources":["../../../projects/anna-cognito-lib/src/lib/constants/loginConstant.ts","../../../projects/anna-cognito-lib/src/lib/models/auth.model.ts","../../../projects/anna-cognito-lib/src/lib/config/auth-service.token.ts","../../../projects/anna-cognito-lib/src/lib/config/acl-service.token.ts","../../../projects/anna-cognito-lib/src/lib/services/acl.service.ts","../../../projects/anna-cognito-lib/src/lib/config/library.config.ts","../../../projects/anna-cognito-lib/src/lib/services/auth.service.ts","../../../projects/anna-cognito-lib/src/lib/directives/spinner-button/spinner-button.directive.ts","../../../projects/anna-cognito-lib/src/lib/components/login/login.component.ts","../../../projects/anna-cognito-lib/src/lib/components/login/login.component.html","../../../projects/anna-cognito-lib/src/lib/components/password-matching/password-matching.component.ts","../../../projects/anna-cognito-lib/src/lib/components/password-matching/password-matching.component.html","../../../projects/anna-cognito-lib/src/lib/components/set-new-password/set-new-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/set-new-password/set-new-password.component.html","../../../projects/anna-cognito-lib/src/lib/components/forgot-password/forgot-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/forgot-password/forgot-password.component.html","../../../projects/anna-cognito-lib/src/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.html","../../../projects/anna-cognito-lib/src/lib/anna-cognito-lib.module.ts","../../../projects/anna-cognito-lib/src/public-api.ts","../../../projects/anna-cognito-lib/src/annalib-anna-cognito-lib.ts"],"sourcesContent":["export class LoginConstant {\r\n // Login page\r\n static readonly enterEmail = \"Enter your username\";\r\n static readonly password = \"Password\";\r\n static readonly confirmPassword = \"Confirm Password\";\r\n static readonly login = \"Login\";\r\n static readonly otp = \"OTP\";\r\n static readonly forgotPassword = \"Forgot \" + LoginConstant.password.toLowerCase() + \"?\";\r\n\r\n // set new password\r\n static readonly setNewPasswordHeading = \"Set new \" + LoginConstant.password.toLowerCase();\r\n static readonly setNewPasswordButton = \"Set and \" + LoginConstant.login.toLowerCase() + \" again\";\r\n static readonly passwordMustContain = \"The password must contain:\";\r\n static readonly minimumCharacter = \"Minimum 8 characters\";\r\n static readonly oneUppercase = \"1 Uppercase\";\r\n static readonly oneLowercase = \"1 Lowercase\";\r\n static readonly oneNumber = \"1 Numerical\";\r\n static readonly specialCharacter = \"1 Special character\";\r\n static readonly passwordNotMatching = \"The passwords do not match. Please try again.\";\r\n static readonly userNamePasswordIncorrect = \"Incorrect username or password\";\r\n static readonly userNotFound = \"No registered user found\";\r\n static readonly loginAgain = LoginConstant.login + \" again\";\r\n\r\n // verify OTP & set new password\r\n static readonly verifyAndSetNewPasswordheading = \"Enter \" + LoginConstant.otp + \" & set new password\";\r\n static readonly verifyAndSetNewPasswordMessage = \"An \" + LoginConstant.otp + \" has been succesfully emailed to \";\r\n static readonly pleaseEnterItBelow = \". Please enter it below.\";\r\n static readonly regenerateOtp = \"Regenerate \" + LoginConstant.otp;\r\n static readonly enterOtp = \"Enter \" + LoginConstant.otp;\r\n static readonly submit = \"Submit\";\r\n static readonly attempt = \"Attempt\";\r\n static readonly attemptLimitExceeded =\r\n \"You have exceeded the maximum number of allowed attempts. Please try again after 15 minutes.\";\r\n static readonly attemptMessage = \" of 5. The OTP entered is incorrect. Please try again with the right one.\";\r\n static readonly sessionExpired = \"The session has expired. Please try again.\";\r\n\r\n // forgot password\r\n static readonly forgotPasswordHeading = \"Forgot your password?\";\r\n static readonly forgotPasswordMessage = \"Please enter your username.\";\r\n static readonly forgotPasswordButton = \"Get \" + LoginConstant.otp;\r\n static readonly apiFailErrorMessage = \"Unable to connect to server right now. Please try after some time.\";\r\n\r\n //url\r\n static readonly setNewPasswordUrl = \"/set-new-password\";\r\n static readonly forgortPasswordPageUrl = \"/forgot-password\";\r\n static readonly verifyAndSetNewPasswordUrl = \"/verify-and-set-new-password\";\r\n static readonly loginPageUrl = \"/login\";\r\n static readonly homePageUrl = \"/home\";\r\n static readonly stationSettingUrl = \"/station-settings\";\r\n}\r\n","export class AuthenticationData {\r\n Username: string;\r\n Password: string;\r\n constructor(Username: string, Password: string) {\r\n this.Username = Username;\r\n this.Password = Password;\r\n }\r\n}\r\n\r\nexport class UserPoolInformation {\r\n UserPoolId: string;\r\n ClientId: string;\r\n constructor(UserPoolId: string, ClientId: string) {\r\n this.UserPoolId = UserPoolId;\r\n this.ClientId = ClientId;\r\n }\r\n}\r\n\r\nexport class UsernameInfo {\r\n isUsernameAvailable: boolean;\r\n constructor(object: { isUsernameAvailable: boolean }) {\r\n this.isUsernameAvailable = object.isUsernameAvailable;\r\n }\r\n}","import { InjectionToken } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n/** Token to inject the auth service */\r\nexport const AUTH_SERVICE_TOKEN:\r\n InjectionToken<IAuthService> =\r\n new InjectionToken<IAuthService>('Auth service token');\r\n\r\nexport interface IAuthService {\r\n isLoggingIn: boolean; \r\n onSuccessfulAuthenticatingUser(result: any): void;\r\n isUsernameAvailable(username: string): Observable<any>;\r\n navigateBasedOnUserRole(loginUserData: any): void;\r\n getPublicIp(): string;\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\n/** Token to inject the acl service */\r\nexport const ACL_SERVICE_TOKEN:\r\n InjectionToken<IAclService> =\r\n new InjectionToken<IAclService>('ACL service token');\r\n\r\nexport interface IAclService {\r\n urlToCognitoPrivilegeMap: {[key: string]: string};\r\n DAILY_REVISION_REPORT_WRITE: string;\r\n LUR_SETTINGS_WRITE: string;\r\n MANAGE_BUSINESS_RULES_WRITE: string;\r\n MANAGE_USERS_WRITE: string;\r\n ORDER_BIZ_RULES_WRITE: string;\r\n ORDER_REVISIONS_WRITE: string;\r\n ORDER_SPOTS_REPORT_WRITE: string;\r\n RATE_CARD_WRITE: string;\r\n STATION_SYSTEM_SETTINGS_WRITE: string;\r\n POLITICAL_WINDOW_WRITE: string;\r\n \r\n isUserAuthoriseToAcessManageUser(): boolean;\r\n}","import { Inject, Injectable } from \"@angular/core\";\r\nimport { IAclService, ACL_SERVICE_TOKEN } from '../config/acl-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaLibAclService {\r\n constructor(@Inject(ACL_SERVICE_TOKEN) public consumingProjectAclService: IAclService) {}\r\n\r\n userGroupsInCognitoJWT: string[];\r\n isUserAuthorisedToAccessPage(url: string): boolean {\r\n let privilegeName = this.consumingProjectAclService.urlToCognitoPrivilegeMap[url];\r\n return this.userGroupsInCognitoJWT.includes(privilegeName);\r\n }\r\n\r\n isUserAuthorisedToAccessElement(privilege: string): boolean {\r\n return this.userGroupsInCognitoJWT.includes(privilege);\r\n }\r\n\r\n isUserAuthoriseToAcessManageUser(): boolean {\r\n return this.consumingProjectAclService.isUserAuthoriseToAcessManageUser();\r\n }\r\n\r\n}\r\n","export class LibraryConfig { \r\n loginPageLogoImgUrl: string = '';\r\n cognito : {\r\n userPoolId: string;\r\n clientId: string; \r\n }\r\n \r\n}","// Angular import statements\r\nimport { Inject, Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// Third party import statements\r\nimport { CognitoUserPool, CognitoUser, AuthenticationDetails, CognitoUserSession } from \"amazon-cognito-identity-js\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../constants/loginConstant\";\r\nimport { AuthenticationData, UserPoolInformation } from \"../models/auth.model\";\r\nimport { AnnaLibAclService } from './acl.service';\r\nimport { LibraryConfig } from '../config/library.config';\r\nimport { IAuthService, AUTH_SERVICE_TOKEN } from '../config/auth-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaLibAuthService {\r\n poolData: UserPoolInformation;\r\n userPool: CognitoUserPool;\r\n cognitoUser: CognitoUser;\r\n authenticationDetails: AuthenticationDetails;\r\n tokenValid: boolean;\r\n accessToken: string;\r\n userAttribute: any;\r\n loginErrorMessage: string | null;\r\n setNewPasswordErrorMessage: string;\r\n setNewPasswordButtonMessage: string;\r\n verifyAndSetNewPasswordErrorMessage: string;\r\n verifyAndSetNewPasswordMessage: string;\r\n verifyAndSetNewPasswordButton: string;\r\n noOfAttempts = 0;\r\n sessionLocked = false;\r\n userName: any;\r\n accessTokenTimerId: any;\r\n IdToken: any;\r\n\r\n constructor(\r\n private router: Router,\r\n public aclService: AnnaLibAclService,\r\n public libraryConfig: LibraryConfig,\r\n @Inject(AUTH_SERVICE_TOKEN) public consumingProjectAuthService: IAuthService) {\r\n if(!consumingProjectAuthService) {\r\n throw new Error('You must provide a authService');\r\n }\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n /***\r\n 1. takes user pool data (userPool ID and client ID)\r\n 2. if current user is null then it means user already logged out then simply return Promise<false>\r\n 3. if current user present check if token is valid for it.\r\n */\r\n isUserLoggedIn(): Promise<boolean> {\r\n let currentUser = this.getCurrentUserDetails();\r\n if (currentUser) {\r\n return new Promise((resolve, reject) => {\r\n currentUser && currentUser.getSession((error: Error, token: CognitoUserSession | null) => {\r\n if (token) {\r\n this.getAllCognitoTokenAndGroups(token);\r\n resolve(true);\r\n } else {\r\n this.sessionTimeout();\r\n resolve(false);\r\n }\r\n });\r\n });\r\n } else {\r\n return new Promise((resolve) => {\r\n clearInterval(this.accessTokenTimerId);\r\n resolve(false);\r\n });\r\n }\r\n }\r\n\r\n sessionTimeout() {\r\n localStorage.clear();\r\n clearInterval(this.accessTokenTimerId);\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n }\r\n\r\n refreshAccessToken() {\r\n let currentUser = this.getCurrentUserDetails();\r\n let accessTokenExpiration = localStorage.getItem(\"accessTokenExpiration\");\r\n let expTime = accessTokenExpiration ? parseInt(accessTokenExpiration) : 0;\r\n this.accessTokenTimerId = setInterval(() => {\r\n let counter = 1000;\r\n let delayFunction = setTimeout(() => {\r\n currentUser && currentUser.getSession((error: any, token: CognitoUserSession | null) => {\r\n if (token) {\r\n this.getAllCognitoTokenAndGroups(token);\r\n let newExpTime = this.computeTokenExpiration(this.IdToken);\r\n\r\n if (newExpTime <= 0) {\r\n newExpTime = 1000;\r\n counter = 0;\r\n if (delayFunction) {\r\n clearInterval(delayFunction);\r\n }\r\n }\r\n expTime = newExpTime;\r\n localStorage.setItem(\"accessTokenExpiration\", newExpTime.toString());\r\n clearInterval(this.accessTokenTimerId);\r\n this.refreshAccessToken();\r\n } else if (error.code === \"NotAuthorizedException\") {\r\n this.sessionTimeout();\r\n }\r\n });\r\n }, counter);\r\n }, expTime);\r\n }\r\n\r\n computeTokenExpiration(token: any) {\r\n let currentTime = Math.floor(Date.now() / 1000);\r\n let tokenTime = token.payload.exp;\r\n let expTime = (tokenTime - currentTime) * 1000;\r\n return expTime;\r\n }\r\n\r\n\r\n getCurrentUserDetails() {\r\n let poolData = new UserPoolInformation(this.libraryConfig.cognito.userPoolId, this.libraryConfig.cognito.clientId);\r\n let userPool = new CognitoUserPool(poolData);\r\n return userPool.getCurrentUser();\r\n }\r\n\r\n getCognitoUserDetails(email: string): CognitoUser {\r\n this.poolData = new UserPoolInformation(this.libraryConfig.cognito.userPoolId, this.libraryConfig.cognito.clientId);\r\n this.userPool = new CognitoUserPool(this.poolData);\r\n\r\n let userData = {\r\n Username: email,\r\n Pool: this.userPool,\r\n };\r\n let cognitoUser = new CognitoUser(userData);\r\n return cognitoUser;\r\n }\r\n\r\n authenticate(email: string, password: string) {\r\n this.loginErrorMessage = null;\r\n let authData = new AuthenticationData(email, password);\r\n this.authenticationDetails = new AuthenticationDetails(authData);\r\n\r\n this.cognitoUser = this.getCognitoUserDetails(email);\r\n this.CognitoAuthentication(this.authenticationDetails);\r\n }\r\n\r\n CognitoAuthentication(authenticationDetails: AuthenticationDetails) {\r\n this.cognitoUser.authenticateUser(authenticationDetails, {\r\n onSuccess: async (result) => {\r\n this.getAllCognitoTokenAndGroups(result);\r\n await this.consumingProjectAuthService.onSuccessfulAuthenticatingUser(result);\r\n },\r\n onFailure: (err) => {\r\n this.consumingProjectAuthService.isLoggingIn = false;\r\n if (err.message === \"Password attempts exceeded\") {\r\n this.loginErrorMessage = LoginConstant.attemptLimitExceeded;\r\n } else {\r\n this.loginErrorMessage = LoginConstant.userNamePasswordIncorrect;\r\n }\r\n },\r\n newPasswordRequired: (data) => {\r\n this.consumingProjectAuthService.isLoggingIn = false;\r\n this.userAttribute = data;\r\n this.router.navigate([LoginConstant.setNewPasswordUrl]);\r\n },\r\n });\r\n }\r\n\r\n setNewPassword(newPassword: any) {\r\n delete this.userAttribute.email;\r\n delete this.userAttribute.email_verified;\r\n delete this.userAttribute.phone_number_verified;\r\n this.cognitoUser.completeNewPasswordChallenge(newPassword, this.userAttribute, {\r\n onSuccess: (result) => {\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n },\r\n onFailure: (error) => {\r\n this.setNewPasswordErrorMessage = LoginConstant.sessionExpired;\r\n this.setNewPasswordButtonMessage = LoginConstant.loginAgain;\r\n },\r\n });\r\n }\r\n\r\n onForgotPasswordGenerateOTP(email: string) {\r\n this.userName = email;\r\n this.cognitoUser = this.getCognitoUserDetails(email);\r\n this.cognitoUser.forgotPassword({\r\n onSuccess: (result) => {\r\n this.verifyAndSetNewPasswordMessage =\r\n LoginConstant.verifyAndSetNewPasswordMessage +\r\n result.CodeDeliveryDetails.Destination +\r\n LoginConstant.pleaseEnterItBelow;\r\n this.router.navigate([LoginConstant.verifyAndSetNewPasswordUrl]);\r\n },\r\n onFailure: (err) => {},\r\n });\r\n }\r\n\r\n verifyCode(verificationCode: string, newPassword: string) {\r\n this.cognitoUser.confirmPassword(verificationCode, newPassword, {\r\n onFailure: (error) => {\r\n this.noOfAttempts = this.noOfAttempts + 1;\r\n this.verifyAndSetNewPasswordErrorMessage = this.forgotPasswordError(error, this.noOfAttempts);\r\n },\r\n onSuccess: () => {\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n },\r\n });\r\n }\r\n\r\n forgotPasswordError(err: any, noOfAttempts: number) {\r\n let errorMessage;\r\n switch (err.code) {\r\n case \"LimitExceededException\":\r\n this.sessionLocked = true;\r\n errorMessage = LoginConstant.attemptLimitExceeded;\r\n break;\r\n case \"ExpiredCodeException\":\r\n errorMessage = LoginConstant.sessionExpired;\r\n this.verifyAndSetNewPasswordButton = LoginConstant.regenerateOtp;\r\n break;\r\n default:\r\n errorMessage = LoginConstant.attempt + \" \" + noOfAttempts + LoginConstant.attemptMessage;\r\n }\r\n return errorMessage;\r\n }\r\n\r\n getAllCognitoTokenAndGroups(token: CognitoUserSession) {\r\n this.accessToken = token.getAccessToken().getJwtToken();\r\n this.IdToken = token.getIdToken();\r\n if (\"cognito:groups\" in token.getAccessToken().payload) {\r\n this.aclService.userGroupsInCognitoJWT = token.getAccessToken().payload[\"cognito:groups\"];\r\n } else {\r\n this.aclService.userGroupsInCognitoJWT = [];\r\n }\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n","import { Directive, ElementRef, Input, Renderer2, SimpleChanges, OnChanges, OnInit } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[anna-cognito-lib-SpinnerButton]\",\r\n})\r\nexport class SpinnerButtonDirective implements OnInit, OnChanges {\r\n @Input(\"anna-cognito-lib-SpinnerButton\") loading: boolean;\r\n @Input(\"spinnerButtonText\") spinnerButtonText: string;\r\n child: HTMLDivElement;\r\n button: any;\r\n\r\n constructor(\r\n private el: ElementRef, \r\n private renderer: Renderer2) {\r\n this.button = this.el.nativeElement;\r\n this.child = document.createElement(\"div\");\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['spinnerButtonText'] && changes['spinnerButtonText'].currentValue) {\r\n this.button.innerHTML = this.spinnerButtonText;\r\n }\r\n if (changes['loading'] && changes['loading'].currentValue) {\r\n this.button.innerHTML = \"\";\r\n this.button.setAttribute(\"disabled\", \"true\");\r\n this.child.classList.add(\"spinner-for-button-directive\");\r\n this.renderer.appendChild(this.button, this.child);\r\n } else {\r\n this.child.classList.remove(\"spinner-for-button-directive\");\r\n this.button.removeAttribute(\"disabled\");\r\n this.button.innerHTML = this.spinnerButtonText;\r\n }\r\n }\r\n}\r\n","// Angular import statements\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup } from \"@angular/forms\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\r\nimport { LibraryConfig } from '../../config/library.config';\r\n\r\n@Component({\r\n selector: \"anna-cognito-lib-login\",\r\n templateUrl: \"./login.component.html\",\r\n styleUrls: [\"./login.component.scss\"],\r\n})\r\nexport class LoginComponent implements OnInit {\r\n loginForm: FormGroup;\r\n constants: typeof LoginConstant;\r\n \r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n public libraryConfig: LibraryConfig\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.onIntialiseForm();\r\n }\r\n\r\n onIntialiseForm() {\r\n this.loginForm = this.fb.group({\r\n username: [null],\r\n password: [null],\r\n });\r\n }\r\n\r\n OnLogin() {\r\n this.authService.consumingProjectAuthService.isLoggingIn = true;\r\n const username = this.loginForm.controls['username'].value;\r\n const password = this.loginForm.controls['password'].value;\r\n this.authService.authenticate(username, password);\r\n }\r\n\r\n \r\n}\r\n","<div class=\"main\">\r\n <!-- Load login page when all constant variable are intiated otherwise it will show a glitch. that's why ngIf check of constants.forgotPassword -->\r\n <section *ngIf=\"constants.forgotPassword\">\r\n <header>\r\n <img [src]=\"libraryConfig.loginPageLogoImgUrl\" loading=\"eager\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"OnLogin()\">\r\n <div id=\"alert-div\" *ngIf=\"authService.loginErrorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.loginErrorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"username\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\"\r\n [placeholder]=\"constants.enterEmail\"\r\n autocomplete=\"username\"\r\n autofocus\r\n />\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"2\"\r\n formControlName=\"password\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\"\r\n [placeholder]=\"constants.password\"\r\n autocomplete=\"current-password\"\r\n autofocus\r\n />\r\n\r\n <a tabindex=\"4\" [routerLink]=\"constants.forgortPasswordPageUrl\">{{ constants.forgotPassword }}</a>\r\n <button\r\n tabindex=\"3\"\r\n class=\"login-btn\"\r\n [anna-cognito-lib-SpinnerButton]=\"authService.consumingProjectAuthService.isLoggingIn\"\r\n [spinnerButtonText]=\"constants.login\"\r\n ></button>\r\n </form>\r\n </article>\r\n <footer>Powered by <span>SureWaves</span></footer>\r\n </section>\r\n</div>\r\n","// Angular import statements\r\nimport { EventEmitter, Inject, Input, Output } from \"@angular/core\";\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { AbstractControl, FormBuilder, FormGroup, ValidationErrors, ValidatorFn, Validators } from \"@angular/forms\";\r\n\r\n// Third party import statements\r\nimport { debounceTime } from \"rxjs/operators\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-password-matching',\r\n templateUrl: './password-matching.component.html',\r\n styleUrls: ['./password-matching.component.scss']\r\n})\r\nexport class PasswordMatchingComponent implements OnInit {\r\n @Output() passwordChange = new EventEmitter();\r\n @Output() confirmPasswordChange = new EventEmitter();\r\n\r\n @Input() passwordNotMatching: boolean;\r\n passwordForm: FormGroup;\r\n constants: typeof LoginConstant;\r\n constructor(@Inject(FormBuilder) private fb: FormBuilder) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.createGroup();\r\n this.formValueChanged();\r\n }\r\n\r\n formValueChanged() {\r\n const password = this.passwordForm.get(\"password\");\r\n const confirmPassword = this.passwordForm.get(\"confirmPassword\");\r\n\r\n password && password.valueChanges.subscribe(() => {\r\n password && password.setValidators([\r\n Validators.required,\r\n this.regexValidator(new RegExp(\".{8,}\"), { minLength: true }),\r\n this.regexValidator(new RegExp(\"[a-z]\"), { lowercase: true }),\r\n this.regexValidator(new RegExp(\"[A-Z]\"), { uppercase: true }),\r\n this.regexValidator(new RegExp(\"[0-9]\"), { number: true }),\r\n this.regexValidator(new RegExp(\"[^a-zA-Z0-9]\"), { specialCharacter: true }),\r\n ]);\r\n password.updateValueAndValidity({ emitEvent: false });\r\n this.onPasswordChange();\r\n });\r\n\r\n if(confirmPassword){\r\n confirmPassword.valueChanges.pipe(debounceTime(300)).subscribe(() => {\r\n confirmPassword.setValidators([Validators.required]);\r\n confirmPassword.updateValueAndValidity({ emitEvent: false });\r\n this.onConfirmPasswordChange();\r\n });\r\n }\r\n \r\n }\r\n\r\n onPasswordChange() {\r\n let result = {\r\n value: this.passwordForm.value.password,\r\n status: this.passwordForm.controls['password'].status,\r\n };\r\n this.passwordChange.emit(result);\r\n }\r\n\r\n onConfirmPasswordChange() {\r\n let result = {\r\n value: this.passwordForm.value.confirmPassword,\r\n status: this.passwordForm.controls['confirmPassword'].status,\r\n };\r\n this.confirmPasswordChange.emit(result);\r\n }\r\n\r\n createGroup() {\r\n this.passwordForm = this.fb.group({\r\n password: [null],\r\n confirmPassword: [null],\r\n });\r\n return this.passwordForm;\r\n }\r\n\r\n // TODO: check the return again\r\n regexValidator(regex: RegExp, error: ValidationErrors): any\r\n {\r\n return (control: AbstractControl): { [key: string]: boolean } => {\r\n const valid = regex.test(control.value);\r\n return (valid ? null : error) as any;\r\n };\r\n }\r\n\r\n}\r\n","<form [formGroup]=\"passwordForm\">\r\n <div id=\"alert-div\" *ngIf=\"passwordNotMatching\">\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p>{{ constants.passwordNotMatching }}</p>\r\n </div>\r\n <div class=\"password-policies\">\r\n <ng-container *ngIf=\"!passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }} </b>\r\n </p>\r\n <p>{{ constants.minimumCharacter }}</p>\r\n <p>{{ constants.oneUppercase }}</p>\r\n <p>{{ constants.oneLowercase }}</p>\r\n <p>{{ constants.oneNumber }}</p>\r\n <p>{{ constants.specialCharacter }}</p>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }}</b>\r\n </p>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('minLength') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('minLength')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('minLength')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.minimumCharacter }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('uppercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('uppercase')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('uppercase')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneUppercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('lowercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('lowercase')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('lowercase')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneLowercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('number') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('number')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('number')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneNumber }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('specialCharacter') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('specialCharacter')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('specialCharacter')\">\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.specialCharacter }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"2\"\r\n formControlName=\"password\"\r\n [placeholder]=\"constants.password\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"3\"\r\n formControlName=\"confirmPassword\"\r\n [placeholder]=\"constants.confirmPassword\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n</form>\r\n","\r\n// Angular import statements\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// User defined import statements\r\nimport { AnnaLibAuthService } from \"../../services/auth.service\";\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { LibraryConfig } from '../../config/library.config';\r\ntype passwordType = { value: string | null, status: string | null };\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-set-new-password',\r\n templateUrl: './set-new-password.component.html',\r\n styleUrls: ['./set-new-password.component.scss']\r\n})\r\nexport class SetNewPasswordComponent implements OnInit {\r\n passwordNotMatching = false;\r\n \r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n constants: typeof LoginConstant;\r\n\r\n constructor(public authService: AnnaLibAuthService, \r\n private router: Router,\r\n public libraryConfig: LibraryConfig) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.authService.setNewPasswordButtonMessage = LoginConstant.setNewPasswordButton;\r\n }\r\n\r\n isFormValid() {\r\n return this.password.status === \"VALID\" && this.confirmPassword.status === \"VALID\";\r\n }\r\n onPasswordChange($event: passwordType) {\r\n this.password = $event;\r\n }\r\n\r\n onConfirmPasswordChange($event: passwordType) {\r\n this.confirmPassword = $event;\r\n }\r\n\r\n onSettingNewPassword() {\r\n if (this.password.value != this.confirmPassword.value) {\r\n this.passwordNotMatching = true;\r\n } else {\r\n this.passwordNotMatching = false;\r\n if (this.authService.setNewPasswordButtonMessage === LoginConstant.loginAgain) {\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n } else {\r\n this.authService.setNewPassword(this.password.value);\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section>\r\n <header>\r\n <img [src]=\"libraryConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form>\r\n <div id=\"heading\">\r\n {{ constants.setNewPasswordHeading }}\r\n </div>\r\n\r\n <div id=\"alert-div\" *ngIf=\"authService.setNewPasswordErrorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.setNewPasswordErrorMessage }}</p>\r\n </div>\r\n <anna-cognito-lib-password-matching\r\n (passwordChange)=\"onPasswordChange($event)\"\r\n (confirmPasswordChange)=\"onConfirmPasswordChange($event)\"\r\n [passwordNotMatching]=\"passwordNotMatching\"\r\n >\r\n </anna-cognito-lib-password-matching>\r\n <button tabindex=\"3\" class=\"login-btn\" [disabled]=\"!isFormValid()\" (click)=\"onSettingNewPassword()\">\r\n {{ authService.setNewPasswordButtonMessage }}\r\n </button>\r\n </form>\r\n </article>\r\n <footer>\r\n Powered by <span> <strong> SureWaves</strong></span>\r\n </footer>\r\n </section>\r\n</div>\r\n","// Angular import statements\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\n\r\n// Third party import statements\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n// User defined import statements\r\nimport { UsernameInfo } from \"../../models/auth.model\";\r\nimport { AnnaLibAuthService } from \"../../services/auth.service\";\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { LibraryConfig } from '../../config/library.config';\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-forgot-password',\r\n templateUrl: './forgot-password.component.html',\r\n styleUrls: ['./forgot-password.component.scss']\r\n})\r\nexport class ForgotPasswordComponent implements OnInit {\r\n errorMessage: string;\r\n verifyRegisteredEmail: FormGroup;\r\n passwordNotMatching = false;\r\n constants: typeof LoginConstant;\r\n password = { value: null, status: null };\r\n confirmPassword = { value: null, status: null };\r\n\r\n constructor(\r\n private authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n private toastr: ToastrService,\r\n public libraryConfig: LibraryConfig\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.onIntialiseForm();\r\n if (this.authService.userName) {\r\n this.onUpdateForm();\r\n }\r\n }\r\n\r\n onIntialiseForm() {\r\n this.verifyRegisteredEmail = this.fb.group({\r\n email: [null, [Validators.required]],\r\n });\r\n }\r\n\r\n onUpdateForm() {\r\n this.verifyRegisteredEmail.patchValue({\r\n email: this.authService.userName,\r\n });\r\n }\r\n\r\n isFormValid() {\r\n return this.verifyRegisteredEmail.valid;\r\n }\r\n\r\n onVerifyRegisteredEmail() {\r\n let username = this.verifyRegisteredEmail.controls['email'].value;\r\n this.authService.consumingProjectAuthService.isUsernameAvailable(username)\r\n .subscribe(\r\n {\r\n next: (response) => {\r\n let res = new UsernameInfo(response);\r\n if (!res.isUsernameAvailable) {\r\n this.authService.onForgotPasswordGenerateOTP(username);\r\n } else {\r\n this.errorMessage = this.constants.userNotFound;\r\n }\r\n },\r\n error: any => {\r\n this.toastr.error(LoginConstant.apiFailErrorMessage);\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section>\r\n <header>\r\n <img [src]=\"libraryConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"verifyRegisteredEmail\">\r\n <div id=\"heading\">\r\n {{ constants.forgotPasswordHeading }}\r\n </div>\r\n <p>\r\n {{ constants.forgotPasswordMessage }}\r\n </p>\r\n <div id=\"alert-div\" *ngIf=\"errorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p id=\"alert-msg\">{{ errorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"email\"\r\n [placeholder]=\"constants.enterEmail\"\r\n [ngClass]=\"{\r\n 'input-invalid': verifyRegisteredEmail.get('email')?.dirty && verifyRegisteredEmail.get('email')?.errors\r\n }\"\r\n />\r\n\r\n <button\r\n tabindex=\"2\"\r\n type=\"submit\"\r\n class=\"login-btn\"\r\n [disabled]=\"!isFormValid()\"\r\n (click)=\"onVerifyRegisteredEmail()\"\r\n >\r\n {{ constants.forgotPasswordButton }}\r\n </button>\r\n </form>\r\n </article>\r\n <footer>\r\n Powered by <span> <strong> SureWaves</strong></span>\r\n </footer>\r\n </section>\r\n</div>\r\n","// Angular import statements\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\r\nimport { LibraryConfig } from '../../config/library.config';\r\ntype passwordType = { value: string | null, status: string | null };\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-verify-and-set-new-password',\r\n templateUrl: './verify-and-set-new-password.component.html',\r\n styleUrls: ['./verify-and-set-new-password.component.scss']\r\n})\r\nexport class VerifyAndSetNewPasswordComponent implements OnInit {\r\n verifyOtpForm: FormGroup;\r\n passwordNotMatching = false;\r\n constants: typeof LoginConstant;\r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n\r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n private router: Router,\r\n public libraryConfig: LibraryConfig\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.authService.verifyAndSetNewPasswordButton = LoginConstant.setNewPasswordButton;\r\n this.onIntialiseForm();\r\n }\r\n\r\n onIntialiseForm() {\r\n this.verifyOtpForm = this.fb.group({\r\n otp: [null, [Validators.required]],\r\n });\r\n }\r\n\r\n isFormValid() {\r\n if (\r\n this.password.status === \"VALID\" &&\r\n this.confirmPassword.status === \"VALID\" &&\r\n this.verifyOtpForm.controls['otp'].valid\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n onPasswordChange($event: passwordType) {\r\n this.password = $event;\r\n }\r\n\r\n onConfirmPasswordChange($event: passwordType) {\r\n this.confirmPassword = $event;\r\n }\r\n\r\n onVerifyOtpSettingNewPassword() {\r\n if (this.password.value != this.confirmPassword.value) {\r\n this.passwordNotMatching = true;\r\n } else {\r\n this.passwordNotMatching = false;\r\n if (this.authService.verifyAndSetNewPasswordButton === LoginConstant.regenerateOtp) {\r\n this.router.navigate([LoginConstant.forgortPasswordPageUrl]);\r\n } else {\r\n this.password.value && this.authService.verifyCode(this.verifyOtpForm.controls['otp'].value, this.password.value);\r\n }\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"main\" [ngClass]=\"{ 'main-height': authService.verifyAndSetNewPasswordErrorMessage }\">\r\n <section>\r\n <header>\r\n <img [src]=\"libraryConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <span class=\"back-btn\" [routerLink]=\"constants.forgortPasswordPageUrl\">\r\n <i class=\"mdi mdi-arrow-left\"></i>\r\n </span>\r\n\r\n <form [formGroup]=\"verifyOtpForm\">\r\n <div class=\"pull-left\" id=\"heading\">\r\n {{ constants.verifyAndSetNewPasswordheading }}\r\n </div>\r\n <p>{{ authService.verifyAndSetNewPasswordMessage }}</p>\r\n\r\n <div id=\"alert-div\" *ngIf=\"authService.verifyAndSetNewPasswordErrorMessage\">\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p id=\"display-block-msg\">{{ authService.verifyAndSetNewPasswordErrorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"otp\"\r\n [placeholder]=\"constants.enterOtp\"\r\n autocomplete=\"new-field-name\"\r\n [ngClass]=\"{ 'input-invalid': authService.verifyAndSetNewPasswordErrorMessage }\"\r\n />\r\n\r\n <anna-cognito-lib-password-matching\r\n (passwordChange)=\"onPasswordChange($event)\"\r\n (confirmPasswordChange)=\"onConfirmPasswordChange($event)\"\r\n [passwordNotMatching]=\"passwordNotMatching\"\r\n >\r\n </anna-cognito-lib-password-matching>\r\n <button\r\n tabindex=\"4\"\r\n type=\"submit\"\r\n class=\"login-btn\"\r\n [disabled]=\"authService.sessionLocked || !isFormValid()\"\r\n (click)=\"onVerifyOtpSettingNewPassword()\"\r\n >\r\n {{ authService.verifyAndSetNewPasswordButton }}\r\n </button>\r\n </form>\r\n </article>\r\n <footer>\r\n Powered by <span> <strong>SureWaves</strong> </span>\r\n </footer>\r\n </section>\r\n</div>\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { LoginComponent } from './components/login/login.component';\r\nimport { SpinnerButtonDirective } from './directives/spinner-button';\r\nimport { LibraryConfig } from './config/library.config';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SetNewPasswordComponent } from './components/set-new-password/set-new-password.component';\r\nimport { PasswordMatchingComponent } from './components/password-matching/password-matching.component';\r\nimport { ForgotPasswordComponent } from './components/forgot-password/forgot-password.component';\r\nimport { VerifyAndSetNewPasswordComponent } from './components/verify-and-set-new-password/verify-and-set-new-password.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n LoginComponent,\r\n SetNewPasswordComponent,\r\n PasswordMatchingComponent,\r\n ForgotPasswordComponent,\r\n VerifyAndSetNewPasswordComponent,\r\n SpinnerButtonDirective,\r\n ],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n CommonModule\r\n ],\r\n exports: [\r\n LoginComponent,\r\n SetNewPasswordComponent,\r\n PasswordMatchingComponent,\r\n ForgotPasswordComponent,\r\n VerifyAndSetNewPasswordComponent,\r\n SpinnerButtonDirective\r\n ]\r\n})\r\nexport class AnnaCognitoLibModule {\r\n public static forRoot(configuration: LibraryConfig): ModuleWithProviders<AnnaCognitoLibModule> {\r\n return {\r\n ngModule: AnnaCognitoLibModule,\r\n providers: [\r\n {\r\n provide: LibraryConfig, \r\n useValue: configuration\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of anna-cognito-lib\r\n */\r\n\r\nexport * from './lib/anna-cognito-lib.module';\r\n\r\n//COMPONENTS \r\nexport * from './lib/components/login/login.component';\r\nexport * from './lib/components/forgot-password/forgot-password.component';\r\nexport * from './lib/components/set-new-password/set-new-password.component';\r\nexport * from './lib/components/password-matching/password-matching.component';\r\nexport * from './lib/components/verify-and-set-new-password/verify-and-set-new-password.component';\r\n\r\n//SERVICES \r\nexport * from './lib/services/auth.service';\r\nexport * from './lib/services/acl.service';\r\nexport * from './lib/config/auth-service.token';\r\nexport * from './lib/config/acl-service.token';\r\nexport * from './lib/config/library.config';\r\n\r\n//DIRECTIVES \r\nexport * from './lib/directives/spinner-button';\r\n\r\n//CONSTANTS \r\nexport * from './lib/constants/loginConstant';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AnnaLibAuthService","i3.LibraryConfig","i4","i5","i6.SpinnerButtonDirective","i1","i2","i4.PasswordMatchingComponent","i3","i4.LibraryConfig","i5.PasswordMatchingComponent"],"mappings":"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"}
1
+ {"version":3,"file":"annalib-anna-cognito-lib.mjs","sources":["../../../projects/anna-cognito-lib/src/lib/constants/loginConstant.ts","../../../projects/anna-cognito-lib/src/lib/models/auth.model.ts","../../../projects/anna-cognito-lib/src/lib/config/auth-service.token.ts","../../../projects/anna-cognito-lib/src/lib/config/acl-service.token.ts","../../../projects/anna-cognito-lib/src/lib/services/acl.service.ts","../../../projects/anna-cognito-lib/src/lib/config/library.config.ts","../../../projects/anna-cognito-lib/src/lib/services/auth.service.ts","../../../projects/anna-cognito-lib/src/lib/directives/spinner-button/spinner-button.directive.ts","../../../projects/anna-cognito-lib/src/lib/components/login/login.component.ts","../../../projects/anna-cognito-lib/src/lib/components/login/login.component.html","../../../projects/anna-cognito-lib/src/lib/components/password-matching/password-matching.component.ts","../../../projects/anna-cognito-lib/src/lib/components/password-matching/password-matching.component.html","../../../projects/anna-cognito-lib/src/lib/components/set-new-password/set-new-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/set-new-password/set-new-password.component.html","../../../projects/anna-cognito-lib/src/lib/components/forgot-password/forgot-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/forgot-password/forgot-password.component.html","../../../projects/anna-cognito-lib/src/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.html","../../../projects/anna-cognito-lib/src/lib/anna-cognito-lib.module.ts","../../../projects/anna-cognito-lib/src/public-api.ts","../../../projects/anna-cognito-lib/src/annalib-anna-cognito-lib.ts"],"sourcesContent":["export class LoginConstant {\r\n // Login page\r\n static readonly enterEmail = \"Enter your username\";\r\n static readonly password = \"Password\";\r\n static readonly confirmPassword = \"Confirm Password\";\r\n static readonly login = \"Login\";\r\n static readonly otp = \"OTP\";\r\n static readonly forgotPassword = \"Forgot \" + LoginConstant.password.toLowerCase() + \"?\";\r\n\r\n // set new password\r\n static readonly setNewPasswordHeading = \"Set new \" + LoginConstant.password.toLowerCase();\r\n static readonly setNewPasswordButton = \"Set and \" + LoginConstant.login.toLowerCase() + \" again\";\r\n static readonly passwordMustContain = \"The password must contain:\";\r\n static readonly minimumCharacter = \"Minimum 8 characters\";\r\n static readonly oneUppercase = \"1 Uppercase\";\r\n static readonly oneLowercase = \"1 Lowercase\";\r\n static readonly oneNumber = \"1 Numerical\";\r\n static readonly specialCharacter = \"1 Special character\";\r\n static readonly passwordNotMatching = \"The passwords do not match. Please try again.\";\r\n static readonly userNamePasswordIncorrect = \"Incorrect username or password\";\r\n static readonly userNotFound = \"No registered user found\";\r\n static readonly loginAgain = LoginConstant.login + \" again\";\r\n\r\n // verify OTP & set new password\r\n static readonly verifyAndSetNewPasswordheading = \"Enter \" + LoginConstant.otp + \" & set new password\";\r\n static readonly verifyAndSetNewPasswordMessage = \"An \" + LoginConstant.otp + \" has been succesfully emailed to \";\r\n static readonly pleaseEnterItBelow = \". Please enter it below.\";\r\n static readonly regenerateOtp = \"Regenerate \" + LoginConstant.otp;\r\n static readonly enterOtp = \"Enter \" + LoginConstant.otp;\r\n static readonly submit = \"Submit\";\r\n static readonly attempt = \"Attempt\";\r\n static readonly attemptLimitExceeded =\r\n \"You have exceeded the maximum number of allowed attempts. Please try again after 15 minutes.\";\r\n static readonly attemptMessage = \" of 5. The OTP entered is incorrect. Please try again with the right one.\";\r\n static readonly sessionExpired = \"The session has expired. Please try again.\";\r\n\r\n // forgot password\r\n static readonly forgotPasswordHeading = \"Forgot your password?\";\r\n static readonly forgotPasswordMessage = \"Please enter your username.\";\r\n static readonly forgotPasswordButton = \"Get \" + LoginConstant.otp;\r\n static readonly apiFailErrorMessage = \"Unable to connect to server right now. Please try after some time.\";\r\n\r\n //url\r\n static readonly setNewPasswordUrl = \"/set-new-password\";\r\n static readonly forgortPasswordPageUrl = \"/forgot-password\";\r\n static readonly verifyAndSetNewPasswordUrl = \"/verify-and-set-new-password\";\r\n static readonly loginPageUrl = \"/login\";\r\n static readonly homePageUrl = \"/home\";\r\n static readonly stationSettingUrl = \"/station-settings\";\r\n}\r\n","export class AuthenticationData {\r\n Username: string;\r\n Password: string;\r\n constructor(Username: string, Password: string) {\r\n this.Username = Username;\r\n this.Password = Password;\r\n }\r\n}\r\n\r\nexport class UserPoolInformation {\r\n UserPoolId: string;\r\n ClientId: string;\r\n constructor(UserPoolId: string, ClientId: string) {\r\n this.UserPoolId = UserPoolId;\r\n this.ClientId = ClientId;\r\n }\r\n}\r\n\r\nexport class UsernameInfo {\r\n isUsernameAvailable: boolean;\r\n constructor(object: { isUsernameAvailable: boolean }) {\r\n this.isUsernameAvailable = object.isUsernameAvailable;\r\n }\r\n}","import { InjectionToken } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n/** Token to inject the auth service */\r\nexport const AUTH_SERVICE_TOKEN:\r\n InjectionToken<IAuthService> =\r\n new InjectionToken<IAuthService>('Auth service token');\r\n\r\nexport interface IAuthService {\r\n isLoggingIn: boolean; \r\n onSuccessfulAuthenticatingUser(result: any): void;\r\n isUsernameAvailable(username: string): Observable<any>;\r\n navigateBasedOnUserRole(loginUserData: any): void;\r\n getPublicIp(): string;\r\n sendRegenerationEmail(userCode:string):void;\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\n/** Token to inject the acl service */\r\nexport const ACL_SERVICE_TOKEN:\r\n InjectionToken<IAclService> =\r\n new InjectionToken<IAclService>('ACL service token');\r\n\r\nexport interface IAclService {\r\n urlToCognitoPrivilegeMap: {[key: string]: string};\r\n DAILY_REVISION_REPORT_WRITE: string;\r\n LUR_SETTINGS_WRITE: string;\r\n MANAGE_BUSINESS_RULES_WRITE: string;\r\n MANAGE_USERS_WRITE: string;\r\n ORDER_BIZ_RULES_WRITE: string;\r\n ORDER_REVISIONS_WRITE: string;\r\n ORDER_SPOTS_REPORT_WRITE: string;\r\n RATE_CARD_WRITE: string;\r\n STATION_SYSTEM_SETTINGS_WRITE: string;\r\n POLITICAL_WINDOW_WRITE: string;\r\n \r\n isUserAuthoriseToAcessManageUser(): boolean;\r\n}","import { Inject, Injectable } from \"@angular/core\";\r\nimport { IAclService, ACL_SERVICE_TOKEN } from '../config/acl-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaLibAclService {\r\n constructor(@Inject(ACL_SERVICE_TOKEN) public consumingProjectAclService: IAclService) {}\r\n\r\n userGroupsInCognitoJWT: string[];\r\n isUserAuthorisedToAccessPage(url: string): boolean {\r\n let privilegeName = this.consumingProjectAclService.urlToCognitoPrivilegeMap[url];\r\n return this.userGroupsInCognitoJWT.includes(privilegeName);\r\n }\r\n\r\n isUserAuthorisedToAccessElement(privilege: string): boolean {\r\n return this.userGroupsInCognitoJWT.includes(privilege);\r\n }\r\n\r\n isUserAuthoriseToAcessManageUser(): boolean {\r\n return this.consumingProjectAclService.isUserAuthoriseToAcessManageUser();\r\n }\r\n\r\n}\r\n","export class LibraryConfig { \r\n loginPageLogoImgUrl: string = '';\r\n cognito : {\r\n userPoolId: string;\r\n clientId: string; \r\n }\r\n \r\n}","// Angular import statements\r\nimport { Inject, Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\n// Third party import statements\r\nimport { CognitoUserPool, CognitoUser, AuthenticationDetails, CognitoUserSession } from \"amazon-cognito-identity-js\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../constants/loginConstant\";\r\nimport { AuthenticationData, UserPoolInformation } from \"../models/auth.model\";\r\nimport { AnnaLibAclService } from './acl.service';\r\nimport { LibraryConfig } from '../config/library.config';\r\nimport { IAuthService, AUTH_SERVICE_TOKEN } from '../config/auth-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaLibAuthService {\r\n poolData: UserPoolInformation;\r\n userPool: CognitoUserPool;\r\n cognitoUser: CognitoUser;\r\n authenticationDetails: AuthenticationDetails;\r\n tokenValid: boolean;\r\n accessToken: string;\r\n userAttribute: any;\r\n loginErrorMessage: string | null;\r\n setNewPasswordErrorMessage: string;\r\n setNewPasswordButtonMessage: string;\r\n verifyAndSetNewPasswordErrorMessage: string;\r\n verifyAndSetNewPasswordMessage: string;\r\n verifyAndSetNewPasswordButton: string;\r\n noOfAttempts = 0;\r\n sessionLocked = false;\r\n userName: any;\r\n accessTokenTimerId: any;\r\n IdToken: any;\r\n\r\n constructor(\r\n private router: Router,\r\n public aclService: AnnaLibAclService,\r\n public libraryConfig: LibraryConfig,\r\n public httpClient:HttpClient,\r\n @Inject(AUTH_SERVICE_TOKEN) public consumingProjectAuthService: IAuthService) {\r\n if(!consumingProjectAuthService) {\r\n throw new Error('You must provide a authService');\r\n }\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n /***\r\n 1. takes user pool data (userPool ID and client ID)\r\n 2. if current user is null then it means user already logged out then simply return Promise<false>\r\n 3. if current user present check if token is valid for it.\r\n */\r\n isUserLoggedIn(): Promise<boolean> {\r\n let currentUser = this.getCurrentUserDetails();\r\n if (currentUser) {\r\n return new Promise((resolve, reject) => {\r\n currentUser && currentUser.getSession((error: Error, token: CognitoUserSession | null) => {\r\n if (token) {\r\n this.getAllCognitoTokenAndGroups(token);\r\n resolve(true);\r\n } else {\r\n this.sessionTimeout();\r\n resolve(false);\r\n }\r\n });\r\n });\r\n } else {\r\n return new Promise((resolve) => {\r\n clearInterval(this.accessTokenTimerId);\r\n resolve(false);\r\n });\r\n }\r\n }\r\n\r\n sessionTimeout() {\r\n localStorage.clear();\r\n clearInterval(this.accessTokenTimerId);\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n }\r\n\r\n refreshAccessToken() {\r\n let currentUser = this.getCurrentUserDetails();\r\n let accessTokenExpiration = localStorage.getItem(\"accessTokenExpiration\");\r\n let expTime = accessTokenExpiration ? parseInt(accessTokenExpiration) : 0;\r\n this.accessTokenTimerId = setInterval(() => {\r\n let counter = 1000;\r\n let delayFunction = setTimeout(() => {\r\n currentUser && currentUser.getSession((error: any, token: CognitoUserSession | null) => {\r\n if (token) {\r\n this.getAllCognitoTokenAndGroups(token);\r\n let newExpTime = this.computeTokenExpiration(this.IdToken);\r\n\r\n if (newExpTime <= 0) {\r\n newExpTime = 1000;\r\n counter = 0;\r\n if (delayFunction) {\r\n clearInterval(delayFunction);\r\n }\r\n }\r\n expTime = newExpTime;\r\n localStorage.setItem(\"accessTokenExpiration\", newExpTime.toString());\r\n clearInterval(this.accessTokenTimerId);\r\n this.refreshAccessToken();\r\n } else if (error.code === \"NotAuthorizedException\") {\r\n this.sessionTimeout();\r\n }\r\n });\r\n }, counter);\r\n }, expTime);\r\n }\r\n\r\n computeTokenExpiration(token: any) {\r\n let currentTime = Math.floor(Date.now() / 1000);\r\n let tokenTime = token.payload.exp;\r\n let expTime = (tokenTime - currentTime) * 1000;\r\n return expTime;\r\n }\r\n\r\n\r\n getCurrentUserDetails() {\r\n let poolData = new UserPoolInformation(this.libraryConfig.cognito.userPoolId, this.libraryConfig.cognito.clientId);\r\n let userPool = new CognitoUserPool(poolData);\r\n return userPool.getCurrentUser();\r\n }\r\n\r\n getCognitoUserDetails(email: string): CognitoUser {\r\n this.poolData = new UserPoolInformation(this.libraryConfig.cognito.userPoolId, this.libraryConfig.cognito.clientId);\r\n this.userPool = new CognitoUserPool(this.poolData);\r\n\r\n let userData = {\r\n Username: email,\r\n Pool: this.userPool,\r\n };\r\n let cognitoUser = new CognitoUser(userData);\r\n return cognitoUser;\r\n }\r\n\r\n authenticate(email: string, password: string) {\r\n this.loginErrorMessage = null;\r\n let authData = new AuthenticationData(email, password);\r\n this.authenticationDetails = new AuthenticationDetails(authData);\r\n\r\n this.cognitoUser = this.getCognitoUserDetails(email);\r\n this.CognitoAuthentication(this.authenticationDetails);\r\n }\r\n\r\n CognitoAuthentication(authenticationDetails: AuthenticationDetails) {\r\n this.cognitoUser.authenticateUser(authenticationDetails, {\r\n onSuccess: async (result) => {\r\n this.getAllCognitoTokenAndGroups(result);\r\n await this.consumingProjectAuthService.onSuccessfulAuthenticatingUser(result);\r\n },\r\n onFailure: (err) => {\r\n this.consumingProjectAuthService.isLoggingIn = false;\r\n if (err.message === \"Temporary password has expired and must be reset by an administrator.\") {\r\n this.loginErrorMessage = \"Password has expired. A new password has been sent to your registered email. Kindly login again with new link and credentials.\";\r\n this.consumingProjectAuthService.sendRegenerationEmail(this.authenticationDetails.getUsername());\r\n }\r\n else if (err.message === \"Password attempts exceeded\") {\r\n this.loginErrorMessage = LoginConstant.attemptLimitExceeded;\r\n } else {\r\n this.loginErrorMessage = LoginConstant.userNamePasswordIncorrect;\r\n }\r\n },\r\n newPasswordRequired: (data:any) => {\r\n this.consumingProjectAuthService.isLoggingIn = false;\r\n this.userAttribute = data;\r\n this.router.navigate([LoginConstant.setNewPasswordUrl]);\r\n },\r\n });\r\n }\r\n\r\n \r\n setNewPassword(newPassword: any) {\r\n delete this.userAttribute.email;\r\n delete this.userAttribute.email_verified;\r\n delete this.userAttribute.phone_number_verified;\r\n this.cognitoUser.completeNewPasswordChallenge(newPassword, this.userAttribute, {\r\n onSuccess: (result) => {\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n },\r\n onFailure: (error) => {\r\n this.setNewPasswordErrorMessage = LoginConstant.sessionExpired;\r\n this.setNewPasswordButtonMessage = LoginConstant.loginAgain;\r\n },\r\n });\r\n }\r\n\r\n onForgotPasswordGenerateOTP(email: string) {\r\n this.userName = email;\r\n this.cognitoUser = this.getCognitoUserDetails(email);\r\n this.cognitoUser.forgotPassword({\r\n onSuccess: (result) => {\r\n this.verifyAndSetNewPasswordMessage =\r\n LoginConstant.verifyAndSetNewPasswordMessage +\r\n result.CodeDeliveryDetails.Destination +\r\n LoginConstant.pleaseEnterItBelow;\r\n this.router.navigate([LoginConstant.verifyAndSetNewPasswordUrl]);\r\n },\r\n onFailure: (err) => {},\r\n });\r\n }\r\n\r\n verifyCode(verificationCode: string, newPassword: string) {\r\n this.cognitoUser.confirmPassword(verificationCode, newPassword, {\r\n onFailure: (error) => {\r\n this.noOfAttempts = this.noOfAttempts + 1;\r\n this.verifyAndSetNewPasswordErrorMessage = this.forgotPasswordError(error, this.noOfAttempts);\r\n },\r\n onSuccess: () => {\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n },\r\n });\r\n }\r\n\r\n forgotPasswordError(err: any, noOfAttempts: number) {\r\n let errorMessage;\r\n switch (err.code) {\r\n case \"LimitExceededException\":\r\n this.sessionLocked = true;\r\n errorMessage = LoginConstant.attemptLimitExceeded;\r\n break;\r\n case \"ExpiredCodeException\":\r\n errorMessage = LoginConstant.sessionExpired;\r\n this.verifyAndSetNewPasswordButton = LoginConstant.regenerateOtp;\r\n break;\r\n default:\r\n errorMessage = LoginConstant.attempt + \" \" + noOfAttempts + LoginConstant.attemptMessage;\r\n }\r\n return errorMessage;\r\n }\r\n\r\n getAllCognitoTokenAndGroups(token: CognitoUserSession) {\r\n this.accessToken = token.getAccessToken().getJwtToken();\r\n this.IdToken = token.getIdToken();\r\n if (\"cognito:groups\" in token.getAccessToken().payload) {\r\n this.aclService.userGroupsInCognitoJWT = token.getAccessToken().payload[\"cognito:groups\"];\r\n } else {\r\n this.aclService.userGroupsInCognitoJWT = [];\r\n }\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n","import { Directive, ElementRef, Input, Renderer2, SimpleChanges, OnChanges, OnInit } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[anna-cognito-lib-SpinnerButton]\",\r\n})\r\nexport class SpinnerButtonDirective implements OnInit, OnChanges {\r\n @Input(\"anna-cognito-lib-SpinnerButton\") loading: boolean;\r\n @Input(\"spinnerButtonText\") spinnerButtonText: string;\r\n child: HTMLDivElement;\r\n button: any;\r\n\r\n constructor(\r\n private el: ElementRef, \r\n private renderer: Renderer2) {\r\n this.button = this.el.nativeElement;\r\n this.child = document.createElement(\"div\");\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['spinnerButtonText'] && changes['spinnerButtonText'].currentValue) {\r\n this.button.innerHTML = this.spinnerButtonText;\r\n }\r\n if (changes['loading'] && changes['loading'].currentValue) {\r\n this.button.innerHTML = \"\";\r\n this.button.setAttribute(\"disabled\", \"true\");\r\n this.child.classList.add(\"spinner-for-button-directive\");\r\n this.renderer.appendChild(this.button, this.child);\r\n } else {\r\n this.child.classList.remove(\"spinner-for-button-directive\");\r\n this.button.removeAttribute(\"disabled\");\r\n this.button.innerHTML = this.spinnerButtonText;\r\n }\r\n }\r\n}\r\n","// Angular import statements\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup } from \"@angular/forms\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\r\nimport { LibraryConfig } from '../../config/library.config';\r\n\r\n@Component({\r\n selector: \"anna-cognito-lib-login\",\r\n templateUrl: \"./login.component.html\",\r\n styleUrls: [\"./login.component.scss\"],\r\n})\r\nexport class LoginComponent implements OnInit {\r\n loginForm: FormGroup;\r\n constants: typeof LoginConstant;\r\n \r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n public libraryConfig: LibraryConfig\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.onIntialiseForm();\r\n }\r\n\r\n onIntialiseForm() {\r\n this.loginForm = this.fb.group({\r\n username: [null],\r\n password: [null],\r\n });\r\n }\r\n\r\n OnLogin() {\r\n this.authService.consumingProjectAuthService.isLoggingIn = true;\r\n const username = this.loginForm.controls['username'].value;\r\n const password = this.loginForm.controls['password'].value;\r\n this.authService.authenticate(username, password);\r\n }\r\n\r\n \r\n}\r\n","<div class=\"main\">\r\n <!-- Load login page when all constant variable are intiated otherwise it will show a glitch. that's why ngIf check of constants.forgotPassword -->\r\n <section *ngIf=\"constants.forgotPassword\">\r\n <header>\r\n <img [src]=\"libraryConfig.loginPageLogoImgUrl\" loading=\"eager\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"OnLogin()\">\r\n <div id=\"alert-div\" *ngIf=\"authService.loginErrorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.loginErrorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"username\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\"\r\n [placeholder]=\"constants.enterEmail\"\r\n autocomplete=\"username\"\r\n autofocus\r\n />\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"2\"\r\n formControlName=\"password\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\"\r\n [placeholder]=\"constants.password\"\r\n autocomplete=\"current-password\"\r\n autofocus\r\n />\r\n\r\n <a tabindex=\"4\" [routerLink]=\"constants.forgortPasswordPageUrl\">{{ constants.forgotPassword }}</a>\r\n <button\r\n tabindex=\"3\"\r\n class=\"login-btn\"\r\n [anna-cognito-lib-SpinnerButton]=\"authService.consumingProjectAuthService.isLoggingIn\"\r\n [spinnerButtonText]=\"constants.login\"\r\n ></button>\r\n </form>\r\n </article>\r\n <footer>Powered by <span>SureWaves</span></footer>\r\n </section>\r\n</div>\r\n","// Angular import statements\r\nimport { EventEmitter, Inject, Input, Output } from \"@angular/core\";\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { AbstractControl, FormBuilder, FormGroup, ValidationErrors, ValidatorFn, Validators } from \"@angular/forms\";\r\n\r\n// Third party import statements\r\nimport { debounceTime } from \"rxjs/operators\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-password-matching',\r\n templateUrl: './password-matching.component.html',\r\n styleUrls: ['./password-matching.component.scss']\r\n})\r\nexport class PasswordMatchingComponent implements OnInit {\r\n @Output() passwordChange = new EventEmitter();\r\n @Output() confirmPasswordChange = new EventEmitter();\r\n\r\n @Input() passwordNotMatching: boolean;\r\n passwordForm: FormGroup;\r\n constants: typeof LoginConstant;\r\n constructor(@Inject(FormBuilder) private fb: FormBuilder) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.createGroup();\r\n this.formValueChanged();\r\n }\r\n\r\n formValueChanged() {\r\n const password = this.passwordForm.get(\"password\");\r\n const confirmPassword = this.passwordForm.get(\"confirmPassword\");\r\n\r\n password && password.valueChanges.subscribe(() => {\r\n password && password.setValidators([\r\n Validators.required,\r\n this.regexValidator(new RegExp(\".{8,}\"), { minLength: true }),\r\n this.regexValidator(new RegExp(\"[a-z]\"), { lowercase: true }),\r\n this.regexValidator(new RegExp(\"[A-Z]\"), { uppercase: true }),\r\n this.regexValidator(new RegExp(\"[0-9]\"), { number: true }),\r\n this.regexValidator(new RegExp(\"[^a-zA-Z0-9]\"), { specialCharacter: true }),\r\n ]);\r\n password.updateValueAndValidity({ emitEvent: false });\r\n this.onPasswordChange();\r\n });\r\n\r\n if(confirmPassword){\r\n confirmPassword.valueChanges.pipe(debounceTime(300)).subscribe(() => {\r\n confirmPassword.setValidators([Validators.required]);\r\n confirmPassword.updateValueAndValidity({ emitEvent: false });\r\n this.onConfirmPasswordChange();\r\n });\r\n }\r\n \r\n }\r\n\r\n onPasswordChange() {\r\n let result = {\r\n value: this.passwordForm.value.password,\r\n status: this.passwordForm.controls['password'].status,\r\n };\r\n this.passwordChange.emit(result);\r\n }\r\n\r\n onConfirmPasswordChange() {\r\n let result = {\r\n value: this.passwordForm.value.confirmPassword,\r\n status: this.passwordForm.controls['confirmPassword'].status,\r\n };\r\n this.confirmPasswordChange.emit(result);\r\n }\r\n\r\n createGroup() {\r\n this.passwordForm = this.fb.group({\r\n password: [null],\r\n confirmPassword: [null],\r\n });\r\n return this.passwordForm;\r\n }\r\n\r\n // TODO: check the return again\r\n regexValidator(regex: RegExp, error: ValidationErrors): any\r\n {\r\n return (control: AbstractControl): { [key: string]: boolean } => {\r\n const valid = regex.test(control.value);\r\n return (valid ? null : error) as any;\r\n };\r\n }\r\n\r\n}\r\n","<form [formGroup]=\"passwordForm\">\r\n <div id=\"alert-div\" *ngIf=\"passwordNotMatching\">\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p>{{ constants.passwordNotMatching }}</p>\r\n </div>\r\n <div class=\"password-policies\">\r\n <ng-container *ngIf=\"!passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }} </b>\r\n </p>\r\n <p>{{ constants.minimumCharacter }}</p>\r\n <p>{{ constants.oneUppercase }}</p>\r\n <p>{{ constants.oneLowercase }}</p>\r\n <p>{{ constants.oneNumber }}</p>\r\n <p>{{ constants.specialCharacter }}</p>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }}</b>\r\n </p>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('minLength') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('minLength')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('minLength')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.minimumCharacter }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('uppercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('uppercase')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('uppercase')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneUppercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('lowercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('lowercase')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('lowercase')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneLowercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('number') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('number')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('number')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneNumber }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('specialCharacter') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('specialCharacter')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('specialCharacter')\">\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.specialCharacter }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"2\"\r\n formControlName=\"password\"\r\n [placeholder]=\"constants.password\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"3\"\r\n formControlName=\"confirmPassword\"\r\n [placeholder]=\"constants.confirmPassword\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n</form>\r\n","\r\n// Angular import statements\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// User defined import statements\r\nimport { AnnaLibAuthService } from \"../../services/auth.service\";\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { LibraryConfig } from '../../config/library.config';\r\ntype passwordType = { value: string | null, status: string | null };\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-set-new-password',\r\n templateUrl: './set-new-password.component.html',\r\n styleUrls: ['./set-new-password.component.scss']\r\n})\r\nexport class SetNewPasswordComponent implements OnInit {\r\n passwordNotMatching = false;\r\n \r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n constants: typeof LoginConstant;\r\n\r\n constructor(public authService: AnnaLibAuthService, \r\n private router: Router,\r\n public libraryConfig: LibraryConfig) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.authService.setNewPasswordButtonMessage = LoginConstant.setNewPasswordButton;\r\n }\r\n\r\n isFormValid() {\r\n return this.password.status === \"VALID\" && this.confirmPassword.status === \"VALID\";\r\n }\r\n onPasswordChange($event: passwordType) {\r\n this.password = $event;\r\n }\r\n\r\n onConfirmPasswordChange($event: passwordType) {\r\n this.confirmPassword = $event;\r\n }\r\n\r\n onSettingNewPassword() {\r\n if (this.password.value != this.confirmPassword.value) {\r\n this.passwordNotMatching = true;\r\n } else {\r\n this.passwordNotMatching = false;\r\n if (this.authService.setNewPasswordButtonMessage === LoginConstant.loginAgain) {\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n } else {\r\n this.authService.setNewPassword(this.password.value);\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section>\r\n <header>\r\n <img [src]=\"libraryConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form>\r\n <div id=\"heading\">\r\n {{ constants.setNewPasswordHeading }}\r\n </div>\r\n\r\n <div id=\"alert-div\" *ngIf=\"authService.setNewPasswordErrorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.setNewPasswordErrorMessage }}</p>\r\n </div>\r\n <anna-cognito-lib-password-matching\r\n (passwordChange)=\"onPasswordChange($event)\"\r\n (confirmPasswordChange)=\"onConfirmPasswordChange($event)\"\r\n [passwordNotMatching]=\"passwordNotMatching\"\r\n >\r\n </anna-cognito-lib-password-matching>\r\n <button tabindex=\"3\" class=\"login-btn\" [disabled]=\"!isFormValid()\" (click)=\"onSettingNewPassword()\">\r\n {{ authService.setNewPasswordButtonMessage }}\r\n </button>\r\n </form>\r\n </article>\r\n <footer>\r\n Powered by <span> <strong> SureWaves</strong></span>\r\n </footer>\r\n </section>\r\n</div>\r\n","// Angular import statements\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\n\r\n// Third party import statements\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n// User defined import statements\r\nimport { UsernameInfo } from \"../../models/auth.model\";\r\nimport { AnnaLibAuthService } from \"../../services/auth.service\";\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { LibraryConfig } from '../../config/library.config';\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-forgot-password',\r\n templateUrl: './forgot-password.component.html',\r\n styleUrls: ['./forgot-password.component.scss']\r\n})\r\nexport class ForgotPasswordComponent implements OnInit {\r\n errorMessage: string;\r\n verifyRegisteredEmail: FormGroup;\r\n passwordNotMatching = false;\r\n constants: typeof LoginConstant;\r\n password:any = { value: null, status: null };\r\n confirmPassword:any = { value: null, status: null };\r\n\r\n constructor(\r\n private authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n private toastr: ToastrService,\r\n public libraryConfig: LibraryConfig\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.onIntialiseForm();\r\n if (this.authService.userName) {\r\n this.onUpdateForm();\r\n }\r\n }\r\n\r\n onIntialiseForm() {\r\n this.verifyRegisteredEmail = this.fb.group({\r\n email: [null, [Validators.required]],\r\n });\r\n }\r\n\r\n onUpdateForm() {\r\n this.verifyRegisteredEmail.patchValue({\r\n email: this.authService.userName,\r\n });\r\n }\r\n\r\n isFormValid() {\r\n return this.verifyRegisteredEmail.valid;\r\n }\r\n\r\n onVerifyRegisteredEmail() {\r\n let username = this.verifyRegisteredEmail.controls['email'].value;\r\n this.authService.consumingProjectAuthService.isUsernameAvailable(username)\r\n .subscribe(\r\n {\r\n next: (response) => {\r\n let res = new UsernameInfo(response);\r\n if (!res.isUsernameAvailable) {\r\n this.authService.onForgotPasswordGenerateOTP(username);\r\n } else {\r\n this.errorMessage = this.constants.userNotFound;\r\n }\r\n },\r\n error: any => {\r\n this.toastr.error(LoginConstant.apiFailErrorMessage);\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section>\r\n <header>\r\n <img [src]=\"libraryConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"verifyRegisteredEmail\">\r\n <div id=\"heading\">\r\n {{ constants.forgotPasswordHeading }}\r\n </div>\r\n <p>\r\n {{ constants.forgotPasswordMessage }}\r\n </p>\r\n <div id=\"alert-div\" *ngIf=\"errorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p id=\"alert-msg\">{{ errorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"email\"\r\n [placeholder]=\"constants.enterEmail\"\r\n [ngClass]=\"{\r\n 'input-invalid': verifyRegisteredEmail.get('email')?.dirty && verifyRegisteredEmail.get('email')?.errors\r\n }\"\r\n />\r\n\r\n <button\r\n tabindex=\"2\"\r\n type=\"submit\"\r\n class=\"login-btn\"\r\n [disabled]=\"!isFormValid()\"\r\n (click)=\"onVerifyRegisteredEmail()\"\r\n >\r\n {{ constants.forgotPasswordButton }}\r\n </button>\r\n </form>\r\n </article>\r\n <footer>\r\n Powered by <span> <strong> SureWaves</strong></span>\r\n </footer>\r\n </section>\r\n</div>\r\n","// Angular import statements\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\r\nimport { LibraryConfig } from '../../config/library.config';\r\ntype passwordType = { value: string | null, status: string | null };\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-verify-and-set-new-password',\r\n templateUrl: './verify-and-set-new-password.component.html',\r\n styleUrls: ['./verify-and-set-new-password.component.scss']\r\n})\r\nexport class VerifyAndSetNewPasswordComponent implements OnInit {\r\n verifyOtpForm: FormGroup;\r\n passwordNotMatching = false;\r\n constants: typeof LoginConstant;\r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n\r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n private router: Router,\r\n public libraryConfig: LibraryConfig\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.authService.verifyAndSetNewPasswordButton = LoginConstant.setNewPasswordButton;\r\n this.onIntialiseForm();\r\n }\r\n\r\n onIntialiseForm() {\r\n this.verifyOtpForm = this.fb.group({\r\n otp: [null, [Validators.required]],\r\n });\r\n }\r\n\r\n isFormValid() {\r\n if (\r\n this.password.status === \"VALID\" &&\r\n this.confirmPassword.status === \"VALID\" &&\r\n this.verifyOtpForm.controls['otp'].valid\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n onPasswordChange($event: passwordType) {\r\n this.password = $event;\r\n }\r\n\r\n onConfirmPasswordChange($event: passwordType) {\r\n this.confirmPassword = $event;\r\n }\r\n\r\n onVerifyOtpSettingNewPassword() {\r\n if (this.password.value != this.confirmPassword.value) {\r\n this.passwordNotMatching = true;\r\n } else {\r\n this.passwordNotMatching = false;\r\n if (this.authService.verifyAndSetNewPasswordButton === LoginConstant.regenerateOtp) {\r\n this.router.navigate([LoginConstant.forgortPasswordPageUrl]);\r\n } else {\r\n this.password.value && this.authService.verifyCode(this.verifyOtpForm.controls['otp'].value, this.password.value);\r\n }\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"main\" [ngClass]=\"{ 'main-height': authService.verifyAndSetNewPasswordErrorMessage }\">\r\n <section>\r\n <header>\r\n <img [src]=\"libraryConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <span class=\"back-btn\" [routerLink]=\"constants.forgortPasswordPageUrl\">\r\n <i class=\"mdi mdi-arrow-left\"></i>\r\n </span>\r\n\r\n <form [formGroup]=\"verifyOtpForm\">\r\n <div class=\"pull-left\" id=\"heading\">\r\n {{ constants.verifyAndSetNewPasswordheading }}\r\n </div>\r\n <p>{{ authService.verifyAndSetNewPasswordMessage }}</p>\r\n\r\n <div id=\"alert-div\" *ngIf=\"authService.verifyAndSetNewPasswordErrorMessage\">\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p id=\"display-block-msg\">{{ authService.verifyAndSetNewPasswordErrorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"otp\"\r\n [placeholder]=\"constants.enterOtp\"\r\n autocomplete=\"new-field-name\"\r\n [ngClass]=\"{ 'input-invalid': authService.verifyAndSetNewPasswordErrorMessage }\"\r\n />\r\n\r\n <anna-cognito-lib-password-matching\r\n (passwordChange)=\"onPasswordChange($event)\"\r\n (confirmPasswordChange)=\"onConfirmPasswordChange($event)\"\r\n [passwordNotMatching]=\"passwordNotMatching\"\r\n >\r\n </anna-cognito-lib-password-matching>\r\n <button\r\n tabindex=\"4\"\r\n type=\"submit\"\r\n class=\"login-btn\"\r\n [disabled]=\"authService.sessionLocked || !isFormValid()\"\r\n (click)=\"onVerifyOtpSettingNewPassword()\"\r\n >\r\n {{ authService.verifyAndSetNewPasswordButton }}\r\n </button>\r\n </form>\r\n </article>\r\n <footer>\r\n Powered by <span> <strong>SureWaves</strong> </span>\r\n </footer>\r\n </section>\r\n</div>\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { LoginComponent } from './components/login/login.component';\r\nimport { SpinnerButtonDirective } from './directives/spinner-button';\r\nimport { LibraryConfig } from './config/library.config';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SetNewPasswordComponent } from './components/set-new-password/set-new-password.component';\r\nimport { PasswordMatchingComponent } from './components/password-matching/password-matching.component';\r\nimport { ForgotPasswordComponent } from './components/forgot-password/forgot-password.component';\r\nimport { VerifyAndSetNewPasswordComponent } from './components/verify-and-set-new-password/verify-and-set-new-password.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n LoginComponent,\r\n SetNewPasswordComponent,\r\n PasswordMatchingComponent,\r\n ForgotPasswordComponent,\r\n VerifyAndSetNewPasswordComponent,\r\n SpinnerButtonDirective,\r\n ],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n CommonModule\r\n ],\r\n exports: [\r\n LoginComponent,\r\n SetNewPasswordComponent,\r\n PasswordMatchingComponent,\r\n ForgotPasswordComponent,\r\n VerifyAndSetNewPasswordComponent,\r\n SpinnerButtonDirective\r\n ]\r\n})\r\nexport class AnnaCognitoLibModule {\r\n public static forRoot(configuration: LibraryConfig): ModuleWithProviders<AnnaCognitoLibModule> {\r\n return {\r\n ngModule: AnnaCognitoLibModule,\r\n providers: [\r\n {\r\n provide: LibraryConfig, \r\n useValue: configuration\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of anna-cognito-lib\r\n */\r\n\r\nexport * from './lib/anna-cognito-lib.module';\r\n\r\n//COMPONENTS \r\nexport * from './lib/components/login/login.component';\r\nexport * from './lib/components/forgot-password/forgot-password.component';\r\nexport * from './lib/components/set-new-password/set-new-password.component';\r\nexport * from './lib/components/password-matching/password-matching.component';\r\nexport * from './lib/components/verify-and-set-new-password/verify-and-set-new-password.component';\r\n\r\n//SERVICES \r\nexport * from './lib/services/auth.service';\r\nexport * from './lib/services/acl.service';\r\nexport * from './lib/config/auth-service.token';\r\nexport * from './lib/config/acl-service.token';\r\nexport * from './lib/config/library.config';\r\n\r\n//DIRECTIVES \r\nexport * from './lib/directives/spinner-button';\r\n\r\n//CONSTANTS \r\nexport * from './lib/constants/loginConstant';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AnnaLibAuthService","i3.LibraryConfig","i4","i5","i6.SpinnerButtonDirective","i1","i2","i4.PasswordMatchingComponent","i3","i4.LibraryConfig","i5.PasswordMatchingComponent"],"mappings":"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"}
@@ -4,6 +4,7 @@ import * as i2 from '@angular/forms';
4
4
  import { Validators, FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms';
5
5
  import * as i3 from '@angular/router';
6
6
  import { RouterModule } from '@angular/router';
7
+ import * as i4 from '@angular/common/http';
7
8
  import { CognitoUserPool, CognitoUser, AuthenticationDetails } from 'amazon-cognito-identity-js';
8
9
  import * as i6 from '@angular/common';
9
10
  import { CommonModule } from '@angular/common';
@@ -115,10 +116,11 @@ const AUTH_SERVICE_TOKEN = new InjectionToken('Auth service token');
115
116
 
116
117
  // Angular import statements
117
118
  class AnnaLibAuthService {
118
- constructor(router, aclService, libraryConfig, consumingProjectAuthService) {
119
+ constructor(router, aclService, libraryConfig, httpClient, consumingProjectAuthService) {
119
120
  this.router = router;
120
121
  this.aclService = aclService;
121
122
  this.libraryConfig = libraryConfig;
123
+ this.httpClient = httpClient;
122
124
  this.consumingProjectAuthService = consumingProjectAuthService;
123
125
  this.noOfAttempts = 0;
124
126
  this.sessionLocked = false;
@@ -226,7 +228,11 @@ class AnnaLibAuthService {
226
228
  },
227
229
  onFailure: (err) => {
228
230
  this.consumingProjectAuthService.isLoggingIn = false;
229
- if (err.message === "Password attempts exceeded") {
231
+ if (err.message === "Temporary password has expired and must be reset by an administrator.") {
232
+ this.loginErrorMessage = "Password has expired. A new password has been sent to your registered email. Kindly login again with new link and credentials.";
233
+ this.consumingProjectAuthService.sendRegenerationEmail(this.authenticationDetails.getUsername());
234
+ }
235
+ else if (err.message === "Password attempts exceeded") {
230
236
  this.loginErrorMessage = LoginConstant.attemptLimitExceeded;
231
237
  }
232
238
  else {
@@ -306,14 +312,14 @@ class AnnaLibAuthService {
306
312
  }
307
313
  }
308
314
  }
309
- AnnaLibAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaLibAuthService, deps: [{ token: i3.Router }, { token: AnnaLibAclService }, { token: LibraryConfig }, { token: AUTH_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
315
+ AnnaLibAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaLibAuthService, deps: [{ token: i3.Router }, { token: AnnaLibAclService }, { token: LibraryConfig }, { token: i4.HttpClient }, { token: AUTH_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
310
316
  AnnaLibAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaLibAuthService, providedIn: "root" });
311
317
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaLibAuthService, decorators: [{
312
318
  type: Injectable,
313
319
  args: [{
314
320
  providedIn: "root",
315
321
  }]
316
- }], ctorParameters: function () { return [{ type: i3.Router }, { type: AnnaLibAclService }, { type: LibraryConfig }, { type: undefined, decorators: [{
322
+ }], ctorParameters: function () { return [{ type: i3.Router }, { type: AnnaLibAclService }, { type: LibraryConfig }, { type: i4.HttpClient }, { type: undefined, decorators: [{
317
323
  type: Inject,
318
324
  args: [AUTH_SERVICE_TOKEN]
319
325
  }] }]; } });
@@ -1 +1 @@
1
- {"version":3,"file":"annalib-anna-cognito-lib.mjs","sources":["../../../projects/anna-cognito-lib/src/lib/constants/loginConstant.ts","../../../projects/anna-cognito-lib/src/lib/models/auth.model.ts","../../../projects/anna-cognito-lib/src/lib/config/acl-service.token.ts","../../../projects/anna-cognito-lib/src/lib/services/acl.service.ts","../../../projects/anna-cognito-lib/src/lib/config/library.config.ts","../../../projects/anna-cognito-lib/src/lib/config/auth-service.token.ts","../../../projects/anna-cognito-lib/src/lib/services/auth.service.ts","../../../projects/anna-cognito-lib/src/lib/directives/spinner-button/spinner-button.directive.ts","../../../projects/anna-cognito-lib/src/lib/components/login/login.component.ts","../../../projects/anna-cognito-lib/src/lib/components/login/login.component.html","../../../projects/anna-cognito-lib/src/lib/components/password-matching/password-matching.component.ts","../../../projects/anna-cognito-lib/src/lib/components/password-matching/password-matching.component.html","../../../projects/anna-cognito-lib/src/lib/components/set-new-password/set-new-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/set-new-password/set-new-password.component.html","../../../projects/anna-cognito-lib/src/lib/components/forgot-password/forgot-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/forgot-password/forgot-password.component.html","../../../projects/anna-cognito-lib/src/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.html","../../../projects/anna-cognito-lib/src/lib/anna-cognito-lib.module.ts","../../../projects/anna-cognito-lib/src/public-api.ts","../../../projects/anna-cognito-lib/src/annalib-anna-cognito-lib.ts"],"sourcesContent":["export class LoginConstant {\r\n // Login page\r\n static readonly enterEmail = \"Enter your username\";\r\n static readonly password = \"Password\";\r\n static readonly confirmPassword = \"Confirm Password\";\r\n static readonly login = \"Login\";\r\n static readonly otp = \"OTP\";\r\n static readonly forgotPassword = \"Forgot \" + LoginConstant.password.toLowerCase() + \"?\";\r\n\r\n // set new password\r\n static readonly setNewPasswordHeading = \"Set new \" + LoginConstant.password.toLowerCase();\r\n static readonly setNewPasswordButton = \"Set and \" + LoginConstant.login.toLowerCase() + \" again\";\r\n static readonly passwordMustContain = \"The password must contain:\";\r\n static readonly minimumCharacter = \"Minimum 8 characters\";\r\n static readonly oneUppercase = \"1 Uppercase\";\r\n static readonly oneLowercase = \"1 Lowercase\";\r\n static readonly oneNumber = \"1 Numerical\";\r\n static readonly specialCharacter = \"1 Special character\";\r\n static readonly passwordNotMatching = \"The passwords do not match. Please try again.\";\r\n static readonly userNamePasswordIncorrect = \"Incorrect username or password\";\r\n static readonly userNotFound = \"No registered user found\";\r\n static readonly loginAgain = LoginConstant.login + \" again\";\r\n\r\n // verify OTP & set new password\r\n static readonly verifyAndSetNewPasswordheading = \"Enter \" + LoginConstant.otp + \" & set new password\";\r\n static readonly verifyAndSetNewPasswordMessage = \"An \" + LoginConstant.otp + \" has been succesfully emailed to \";\r\n static readonly pleaseEnterItBelow = \". Please enter it below.\";\r\n static readonly regenerateOtp = \"Regenerate \" + LoginConstant.otp;\r\n static readonly enterOtp = \"Enter \" + LoginConstant.otp;\r\n static readonly submit = \"Submit\";\r\n static readonly attempt = \"Attempt\";\r\n static readonly attemptLimitExceeded =\r\n \"You have exceeded the maximum number of allowed attempts. Please try again after 15 minutes.\";\r\n static readonly attemptMessage = \" of 5. The OTP entered is incorrect. Please try again with the right one.\";\r\n static readonly sessionExpired = \"The session has expired. Please try again.\";\r\n\r\n // forgot password\r\n static readonly forgotPasswordHeading = \"Forgot your password?\";\r\n static readonly forgotPasswordMessage = \"Please enter your username.\";\r\n static readonly forgotPasswordButton = \"Get \" + LoginConstant.otp;\r\n static readonly apiFailErrorMessage = \"Unable to connect to server right now. Please try after some time.\";\r\n\r\n //url\r\n static readonly setNewPasswordUrl = \"/set-new-password\";\r\n static readonly forgortPasswordPageUrl = \"/forgot-password\";\r\n static readonly verifyAndSetNewPasswordUrl = \"/verify-and-set-new-password\";\r\n static readonly loginPageUrl = \"/login\";\r\n static readonly homePageUrl = \"/home\";\r\n static readonly stationSettingUrl = \"/station-settings\";\r\n}\r\n","export class AuthenticationData {\r\n Username: string;\r\n Password: string;\r\n constructor(Username: string, Password: string) {\r\n this.Username = Username;\r\n this.Password = Password;\r\n }\r\n}\r\n\r\nexport class UserPoolInformation {\r\n UserPoolId: string;\r\n ClientId: string;\r\n constructor(UserPoolId: string, ClientId: string) {\r\n this.UserPoolId = UserPoolId;\r\n this.ClientId = ClientId;\r\n }\r\n}\r\n\r\nexport class UsernameInfo {\r\n isUsernameAvailable: boolean;\r\n constructor(object: { isUsernameAvailable: boolean }) {\r\n this.isUsernameAvailable = object.isUsernameAvailable;\r\n }\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\n/** Token to inject the acl service */\r\nexport const ACL_SERVICE_TOKEN:\r\n InjectionToken<IAclService> =\r\n new InjectionToken<IAclService>('ACL service token');\r\n\r\nexport interface IAclService {\r\n urlToCognitoPrivilegeMap: {[key: string]: string};\r\n DAILY_REVISION_REPORT_WRITE: string;\r\n LUR_SETTINGS_WRITE: string;\r\n MANAGE_BUSINESS_RULES_WRITE: string;\r\n MANAGE_USERS_WRITE: string;\r\n ORDER_BIZ_RULES_WRITE: string;\r\n ORDER_REVISIONS_WRITE: string;\r\n ORDER_SPOTS_REPORT_WRITE: string;\r\n RATE_CARD_WRITE: string;\r\n STATION_SYSTEM_SETTINGS_WRITE: string;\r\n POLITICAL_WINDOW_WRITE: string;\r\n \r\n isUserAuthoriseToAcessManageUser(): boolean;\r\n}","import { Inject, Injectable } from \"@angular/core\";\r\nimport { IAclService, ACL_SERVICE_TOKEN } from '../config/acl-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaLibAclService {\r\n constructor(@Inject(ACL_SERVICE_TOKEN) public consumingProjectAclService: IAclService) {}\r\n\r\n userGroupsInCognitoJWT: string[];\r\n isUserAuthorisedToAccessPage(url: string): boolean {\r\n let privilegeName = this.consumingProjectAclService.urlToCognitoPrivilegeMap[url];\r\n return this.userGroupsInCognitoJWT.includes(privilegeName);\r\n }\r\n\r\n isUserAuthorisedToAccessElement(privilege: string): boolean {\r\n return this.userGroupsInCognitoJWT.includes(privilege);\r\n }\r\n\r\n isUserAuthoriseToAcessManageUser(): boolean {\r\n return this.consumingProjectAclService.isUserAuthoriseToAcessManageUser();\r\n }\r\n\r\n}\r\n","export class LibraryConfig { \r\n loginPageLogoImgUrl: string = '';\r\n cognito : {\r\n userPoolId: string;\r\n clientId: string; \r\n }\r\n \r\n}","import { InjectionToken } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n/** Token to inject the auth service */\r\nexport const AUTH_SERVICE_TOKEN:\r\n InjectionToken<IAuthService> =\r\n new InjectionToken<IAuthService>('Auth service token');\r\n\r\nexport interface IAuthService {\r\n isLoggingIn: boolean; \r\n onSuccessfulAuthenticatingUser(result: any): void;\r\n isUsernameAvailable(username: string): Observable<any>;\r\n navigateBasedOnUserRole(loginUserData: any): void;\r\n getPublicIp(): string;\r\n}","// Angular import statements\r\nimport { Inject, Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// Third party import statements\r\nimport { CognitoUserPool, CognitoUser, AuthenticationDetails, CognitoUserSession } from \"amazon-cognito-identity-js\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../constants/loginConstant\";\r\nimport { AuthenticationData, UserPoolInformation } from \"../models/auth.model\";\r\nimport { AnnaLibAclService } from './acl.service';\r\nimport { LibraryConfig } from '../config/library.config';\r\nimport { IAuthService, AUTH_SERVICE_TOKEN } from '../config/auth-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaLibAuthService {\r\n poolData: UserPoolInformation;\r\n userPool: CognitoUserPool;\r\n cognitoUser: CognitoUser;\r\n authenticationDetails: AuthenticationDetails;\r\n tokenValid: boolean;\r\n accessToken: string;\r\n userAttribute: any;\r\n loginErrorMessage: string | null;\r\n setNewPasswordErrorMessage: string;\r\n setNewPasswordButtonMessage: string;\r\n verifyAndSetNewPasswordErrorMessage: string;\r\n verifyAndSetNewPasswordMessage: string;\r\n verifyAndSetNewPasswordButton: string;\r\n noOfAttempts = 0;\r\n sessionLocked = false;\r\n userName: any;\r\n accessTokenTimerId: any;\r\n IdToken: any;\r\n\r\n constructor(\r\n private router: Router,\r\n public aclService: AnnaLibAclService,\r\n public libraryConfig: LibraryConfig,\r\n @Inject(AUTH_SERVICE_TOKEN) public consumingProjectAuthService: IAuthService) {\r\n if(!consumingProjectAuthService) {\r\n throw new Error('You must provide a authService');\r\n }\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n /***\r\n 1. takes user pool data (userPool ID and client ID)\r\n 2. if current user is null then it means user already logged out then simply return Promise<false>\r\n 3. if current user present check if token is valid for it.\r\n */\r\n isUserLoggedIn(): Promise<boolean> {\r\n let currentUser = this.getCurrentUserDetails();\r\n if (currentUser) {\r\n return new Promise((resolve, reject) => {\r\n currentUser && currentUser.getSession((error: Error, token: CognitoUserSession | null) => {\r\n if (token) {\r\n this.getAllCognitoTokenAndGroups(token);\r\n resolve(true);\r\n } else {\r\n this.sessionTimeout();\r\n resolve(false);\r\n }\r\n });\r\n });\r\n } else {\r\n return new Promise((resolve) => {\r\n clearInterval(this.accessTokenTimerId);\r\n resolve(false);\r\n });\r\n }\r\n }\r\n\r\n sessionTimeout() {\r\n localStorage.clear();\r\n clearInterval(this.accessTokenTimerId);\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n }\r\n\r\n refreshAccessToken() {\r\n let currentUser = this.getCurrentUserDetails();\r\n let accessTokenExpiration = localStorage.getItem(\"accessTokenExpiration\");\r\n let expTime = accessTokenExpiration ? parseInt(accessTokenExpiration) : 0;\r\n this.accessTokenTimerId = setInterval(() => {\r\n let counter = 1000;\r\n let delayFunction = setTimeout(() => {\r\n currentUser && currentUser.getSession((error: any, token: CognitoUserSession | null) => {\r\n if (token) {\r\n this.getAllCognitoTokenAndGroups(token);\r\n let newExpTime = this.computeTokenExpiration(this.IdToken);\r\n\r\n if (newExpTime <= 0) {\r\n newExpTime = 1000;\r\n counter = 0;\r\n if (delayFunction) {\r\n clearInterval(delayFunction);\r\n }\r\n }\r\n expTime = newExpTime;\r\n localStorage.setItem(\"accessTokenExpiration\", newExpTime.toString());\r\n clearInterval(this.accessTokenTimerId);\r\n this.refreshAccessToken();\r\n } else if (error.code === \"NotAuthorizedException\") {\r\n this.sessionTimeout();\r\n }\r\n });\r\n }, counter);\r\n }, expTime);\r\n }\r\n\r\n computeTokenExpiration(token: any) {\r\n let currentTime = Math.floor(Date.now() / 1000);\r\n let tokenTime = token.payload.exp;\r\n let expTime = (tokenTime - currentTime) * 1000;\r\n return expTime;\r\n }\r\n\r\n\r\n getCurrentUserDetails() {\r\n let poolData = new UserPoolInformation(this.libraryConfig.cognito.userPoolId, this.libraryConfig.cognito.clientId);\r\n let userPool = new CognitoUserPool(poolData);\r\n return userPool.getCurrentUser();\r\n }\r\n\r\n getCognitoUserDetails(email: string): CognitoUser {\r\n this.poolData = new UserPoolInformation(this.libraryConfig.cognito.userPoolId, this.libraryConfig.cognito.clientId);\r\n this.userPool = new CognitoUserPool(this.poolData);\r\n\r\n let userData = {\r\n Username: email,\r\n Pool: this.userPool,\r\n };\r\n let cognitoUser = new CognitoUser(userData);\r\n return cognitoUser;\r\n }\r\n\r\n authenticate(email: string, password: string) {\r\n this.loginErrorMessage = null;\r\n let authData = new AuthenticationData(email, password);\r\n this.authenticationDetails = new AuthenticationDetails(authData);\r\n\r\n this.cognitoUser = this.getCognitoUserDetails(email);\r\n this.CognitoAuthentication(this.authenticationDetails);\r\n }\r\n\r\n CognitoAuthentication(authenticationDetails: AuthenticationDetails) {\r\n this.cognitoUser.authenticateUser(authenticationDetails, {\r\n onSuccess: async (result) => {\r\n this.getAllCognitoTokenAndGroups(result);\r\n await this.consumingProjectAuthService.onSuccessfulAuthenticatingUser(result);\r\n },\r\n onFailure: (err) => {\r\n this.consumingProjectAuthService.isLoggingIn = false;\r\n if (err.message === \"Password attempts exceeded\") {\r\n this.loginErrorMessage = LoginConstant.attemptLimitExceeded;\r\n } else {\r\n this.loginErrorMessage = LoginConstant.userNamePasswordIncorrect;\r\n }\r\n },\r\n newPasswordRequired: (data) => {\r\n this.consumingProjectAuthService.isLoggingIn = false;\r\n this.userAttribute = data;\r\n this.router.navigate([LoginConstant.setNewPasswordUrl]);\r\n },\r\n });\r\n }\r\n\r\n setNewPassword(newPassword: any) {\r\n delete this.userAttribute.email;\r\n delete this.userAttribute.email_verified;\r\n delete this.userAttribute.phone_number_verified;\r\n this.cognitoUser.completeNewPasswordChallenge(newPassword, this.userAttribute, {\r\n onSuccess: (result) => {\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n },\r\n onFailure: (error) => {\r\n this.setNewPasswordErrorMessage = LoginConstant.sessionExpired;\r\n this.setNewPasswordButtonMessage = LoginConstant.loginAgain;\r\n },\r\n });\r\n }\r\n\r\n onForgotPasswordGenerateOTP(email: string) {\r\n this.userName = email;\r\n this.cognitoUser = this.getCognitoUserDetails(email);\r\n this.cognitoUser.forgotPassword({\r\n onSuccess: (result) => {\r\n this.verifyAndSetNewPasswordMessage =\r\n LoginConstant.verifyAndSetNewPasswordMessage +\r\n result.CodeDeliveryDetails.Destination +\r\n LoginConstant.pleaseEnterItBelow;\r\n this.router.navigate([LoginConstant.verifyAndSetNewPasswordUrl]);\r\n },\r\n onFailure: (err) => {},\r\n });\r\n }\r\n\r\n verifyCode(verificationCode: string, newPassword: string) {\r\n this.cognitoUser.confirmPassword(verificationCode, newPassword, {\r\n onFailure: (error) => {\r\n this.noOfAttempts = this.noOfAttempts + 1;\r\n this.verifyAndSetNewPasswordErrorMessage = this.forgotPasswordError(error, this.noOfAttempts);\r\n },\r\n onSuccess: () => {\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n },\r\n });\r\n }\r\n\r\n forgotPasswordError(err: any, noOfAttempts: number) {\r\n let errorMessage;\r\n switch (err.code) {\r\n case \"LimitExceededException\":\r\n this.sessionLocked = true;\r\n errorMessage = LoginConstant.attemptLimitExceeded;\r\n break;\r\n case \"ExpiredCodeException\":\r\n errorMessage = LoginConstant.sessionExpired;\r\n this.verifyAndSetNewPasswordButton = LoginConstant.regenerateOtp;\r\n break;\r\n default:\r\n errorMessage = LoginConstant.attempt + \" \" + noOfAttempts + LoginConstant.attemptMessage;\r\n }\r\n return errorMessage;\r\n }\r\n\r\n getAllCognitoTokenAndGroups(token: CognitoUserSession) {\r\n this.accessToken = token.getAccessToken().getJwtToken();\r\n this.IdToken = token.getIdToken();\r\n if (\"cognito:groups\" in token.getAccessToken().payload) {\r\n this.aclService.userGroupsInCognitoJWT = token.getAccessToken().payload[\"cognito:groups\"];\r\n } else {\r\n this.aclService.userGroupsInCognitoJWT = [];\r\n }\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n","import { Directive, ElementRef, Input, Renderer2, SimpleChanges, OnChanges, OnInit } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[anna-cognito-lib-SpinnerButton]\",\r\n})\r\nexport class SpinnerButtonDirective implements OnInit, OnChanges {\r\n @Input(\"anna-cognito-lib-SpinnerButton\") loading: boolean;\r\n @Input(\"spinnerButtonText\") spinnerButtonText: string;\r\n child: HTMLDivElement;\r\n button: any;\r\n\r\n constructor(\r\n private el: ElementRef, \r\n private renderer: Renderer2) {\r\n this.button = this.el.nativeElement;\r\n this.child = document.createElement(\"div\");\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['spinnerButtonText'] && changes['spinnerButtonText'].currentValue) {\r\n this.button.innerHTML = this.spinnerButtonText;\r\n }\r\n if (changes['loading'] && changes['loading'].currentValue) {\r\n this.button.innerHTML = \"\";\r\n this.button.setAttribute(\"disabled\", \"true\");\r\n this.child.classList.add(\"spinner-for-button-directive\");\r\n this.renderer.appendChild(this.button, this.child);\r\n } else {\r\n this.child.classList.remove(\"spinner-for-button-directive\");\r\n this.button.removeAttribute(\"disabled\");\r\n this.button.innerHTML = this.spinnerButtonText;\r\n }\r\n }\r\n}\r\n","// Angular import statements\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup } from \"@angular/forms\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\r\nimport { LibraryConfig } from '../../config/library.config';\r\n\r\n@Component({\r\n selector: \"anna-cognito-lib-login\",\r\n templateUrl: \"./login.component.html\",\r\n styleUrls: [\"./login.component.scss\"],\r\n})\r\nexport class LoginComponent implements OnInit {\r\n loginForm: FormGroup;\r\n constants: typeof LoginConstant;\r\n \r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n public libraryConfig: LibraryConfig\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.onIntialiseForm();\r\n }\r\n\r\n onIntialiseForm() {\r\n this.loginForm = this.fb.group({\r\n username: [null],\r\n password: [null],\r\n });\r\n }\r\n\r\n OnLogin() {\r\n this.authService.consumingProjectAuthService.isLoggingIn = true;\r\n const username = this.loginForm.controls['username'].value;\r\n const password = this.loginForm.controls['password'].value;\r\n this.authService.authenticate(username, password);\r\n }\r\n\r\n \r\n}\r\n","<div class=\"main\">\r\n <!-- Load login page when all constant variable are intiated otherwise it will show a glitch. that's why ngIf check of constants.forgotPassword -->\r\n <section *ngIf=\"constants.forgotPassword\">\r\n <header>\r\n <img [src]=\"libraryConfig.loginPageLogoImgUrl\" loading=\"eager\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"OnLogin()\">\r\n <div id=\"alert-div\" *ngIf=\"authService.loginErrorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.loginErrorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"username\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\"\r\n [placeholder]=\"constants.enterEmail\"\r\n autocomplete=\"username\"\r\n autofocus\r\n />\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"2\"\r\n formControlName=\"password\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\"\r\n [placeholder]=\"constants.password\"\r\n autocomplete=\"current-password\"\r\n autofocus\r\n />\r\n\r\n <a tabindex=\"4\" [routerLink]=\"constants.forgortPasswordPageUrl\">{{ constants.forgotPassword }}</a>\r\n <button\r\n tabindex=\"3\"\r\n class=\"login-btn\"\r\n [anna-cognito-lib-SpinnerButton]=\"authService.consumingProjectAuthService.isLoggingIn\"\r\n [spinnerButtonText]=\"constants.login\"\r\n ></button>\r\n </form>\r\n </article>\r\n <footer>Powered by <span>SureWaves</span></footer>\r\n </section>\r\n</div>\r\n","// Angular import statements\r\nimport { EventEmitter, Inject, Input, Output } from \"@angular/core\";\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { AbstractControl, FormBuilder, FormGroup, ValidationErrors, ValidatorFn, Validators } from \"@angular/forms\";\r\n\r\n// Third party import statements\r\nimport { debounceTime } from \"rxjs/operators\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-password-matching',\r\n templateUrl: './password-matching.component.html',\r\n styleUrls: ['./password-matching.component.scss']\r\n})\r\nexport class PasswordMatchingComponent implements OnInit {\r\n @Output() passwordChange = new EventEmitter();\r\n @Output() confirmPasswordChange = new EventEmitter();\r\n\r\n @Input() passwordNotMatching: boolean;\r\n passwordForm: FormGroup;\r\n constants: typeof LoginConstant;\r\n constructor(@Inject(FormBuilder) private fb: FormBuilder) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.createGroup();\r\n this.formValueChanged();\r\n }\r\n\r\n formValueChanged() {\r\n const password = this.passwordForm.get(\"password\");\r\n const confirmPassword = this.passwordForm.get(\"confirmPassword\");\r\n\r\n password && password.valueChanges.subscribe(() => {\r\n password && password.setValidators([\r\n Validators.required,\r\n this.regexValidator(new RegExp(\".{8,}\"), { minLength: true }),\r\n this.regexValidator(new RegExp(\"[a-z]\"), { lowercase: true }),\r\n this.regexValidator(new RegExp(\"[A-Z]\"), { uppercase: true }),\r\n this.regexValidator(new RegExp(\"[0-9]\"), { number: true }),\r\n this.regexValidator(new RegExp(\"[^a-zA-Z0-9]\"), { specialCharacter: true }),\r\n ]);\r\n password.updateValueAndValidity({ emitEvent: false });\r\n this.onPasswordChange();\r\n });\r\n\r\n if(confirmPassword){\r\n confirmPassword.valueChanges.pipe(debounceTime(300)).subscribe(() => {\r\n confirmPassword.setValidators([Validators.required]);\r\n confirmPassword.updateValueAndValidity({ emitEvent: false });\r\n this.onConfirmPasswordChange();\r\n });\r\n }\r\n \r\n }\r\n\r\n onPasswordChange() {\r\n let result = {\r\n value: this.passwordForm.value.password,\r\n status: this.passwordForm.controls['password'].status,\r\n };\r\n this.passwordChange.emit(result);\r\n }\r\n\r\n onConfirmPasswordChange() {\r\n let result = {\r\n value: this.passwordForm.value.confirmPassword,\r\n status: this.passwordForm.controls['confirmPassword'].status,\r\n };\r\n this.confirmPasswordChange.emit(result);\r\n }\r\n\r\n createGroup() {\r\n this.passwordForm = this.fb.group({\r\n password: [null],\r\n confirmPassword: [null],\r\n });\r\n return this.passwordForm;\r\n }\r\n\r\n // TODO: check the return again\r\n regexValidator(regex: RegExp, error: ValidationErrors): any\r\n {\r\n return (control: AbstractControl): { [key: string]: boolean } => {\r\n const valid = regex.test(control.value);\r\n return (valid ? null : error) as any;\r\n };\r\n }\r\n\r\n}\r\n","<form [formGroup]=\"passwordForm\">\r\n <div id=\"alert-div\" *ngIf=\"passwordNotMatching\">\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p>{{ constants.passwordNotMatching }}</p>\r\n </div>\r\n <div class=\"password-policies\">\r\n <ng-container *ngIf=\"!passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }} </b>\r\n </p>\r\n <p>{{ constants.minimumCharacter }}</p>\r\n <p>{{ constants.oneUppercase }}</p>\r\n <p>{{ constants.oneLowercase }}</p>\r\n <p>{{ constants.oneNumber }}</p>\r\n <p>{{ constants.specialCharacter }}</p>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }}</b>\r\n </p>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('minLength') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('minLength')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('minLength')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.minimumCharacter }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('uppercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('uppercase')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('uppercase')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneUppercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('lowercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('lowercase')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('lowercase')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneLowercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('number') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('number')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('number')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneNumber }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('specialCharacter') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('specialCharacter')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('specialCharacter')\">\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.specialCharacter }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"2\"\r\n formControlName=\"password\"\r\n [placeholder]=\"constants.password\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"3\"\r\n formControlName=\"confirmPassword\"\r\n [placeholder]=\"constants.confirmPassword\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n</form>\r\n","\r\n// Angular import statements\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// User defined import statements\r\nimport { AnnaLibAuthService } from \"../../services/auth.service\";\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { LibraryConfig } from '../../config/library.config';\r\ntype passwordType = { value: string | null, status: string | null };\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-set-new-password',\r\n templateUrl: './set-new-password.component.html',\r\n styleUrls: ['./set-new-password.component.scss']\r\n})\r\nexport class SetNewPasswordComponent implements OnInit {\r\n passwordNotMatching = false;\r\n \r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n constants: typeof LoginConstant;\r\n\r\n constructor(public authService: AnnaLibAuthService, \r\n private router: Router,\r\n public libraryConfig: LibraryConfig) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.authService.setNewPasswordButtonMessage = LoginConstant.setNewPasswordButton;\r\n }\r\n\r\n isFormValid() {\r\n return this.password.status === \"VALID\" && this.confirmPassword.status === \"VALID\";\r\n }\r\n onPasswordChange($event: passwordType) {\r\n this.password = $event;\r\n }\r\n\r\n onConfirmPasswordChange($event: passwordType) {\r\n this.confirmPassword = $event;\r\n }\r\n\r\n onSettingNewPassword() {\r\n if (this.password.value != this.confirmPassword.value) {\r\n this.passwordNotMatching = true;\r\n } else {\r\n this.passwordNotMatching = false;\r\n if (this.authService.setNewPasswordButtonMessage === LoginConstant.loginAgain) {\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n } else {\r\n this.authService.setNewPassword(this.password.value);\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section>\r\n <header>\r\n <img [src]=\"libraryConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form>\r\n <div id=\"heading\">\r\n {{ constants.setNewPasswordHeading }}\r\n </div>\r\n\r\n <div id=\"alert-div\" *ngIf=\"authService.setNewPasswordErrorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.setNewPasswordErrorMessage }}</p>\r\n </div>\r\n <anna-cognito-lib-password-matching\r\n (passwordChange)=\"onPasswordChange($event)\"\r\n (confirmPasswordChange)=\"onConfirmPasswordChange($event)\"\r\n [passwordNotMatching]=\"passwordNotMatching\"\r\n >\r\n </anna-cognito-lib-password-matching>\r\n <button tabindex=\"3\" class=\"login-btn\" [disabled]=\"!isFormValid()\" (click)=\"onSettingNewPassword()\">\r\n {{ authService.setNewPasswordButtonMessage }}\r\n </button>\r\n </form>\r\n </article>\r\n <footer>\r\n Powered by <span> <strong> SureWaves</strong></span>\r\n </footer>\r\n </section>\r\n</div>\r\n","// Angular import statements\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\n\r\n// Third party import statements\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n// User defined import statements\r\nimport { UsernameInfo } from \"../../models/auth.model\";\r\nimport { AnnaLibAuthService } from \"../../services/auth.service\";\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { LibraryConfig } from '../../config/library.config';\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-forgot-password',\r\n templateUrl: './forgot-password.component.html',\r\n styleUrls: ['./forgot-password.component.scss']\r\n})\r\nexport class ForgotPasswordComponent implements OnInit {\r\n errorMessage: string;\r\n verifyRegisteredEmail: FormGroup;\r\n passwordNotMatching = false;\r\n constants: typeof LoginConstant;\r\n password = { value: null, status: null };\r\n confirmPassword = { value: null, status: null };\r\n\r\n constructor(\r\n private authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n private toastr: ToastrService,\r\n public libraryConfig: LibraryConfig\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.onIntialiseForm();\r\n if (this.authService.userName) {\r\n this.onUpdateForm();\r\n }\r\n }\r\n\r\n onIntialiseForm() {\r\n this.verifyRegisteredEmail = this.fb.group({\r\n email: [null, [Validators.required]],\r\n });\r\n }\r\n\r\n onUpdateForm() {\r\n this.verifyRegisteredEmail.patchValue({\r\n email: this.authService.userName,\r\n });\r\n }\r\n\r\n isFormValid() {\r\n return this.verifyRegisteredEmail.valid;\r\n }\r\n\r\n onVerifyRegisteredEmail() {\r\n let username = this.verifyRegisteredEmail.controls['email'].value;\r\n this.authService.consumingProjectAuthService.isUsernameAvailable(username)\r\n .subscribe(\r\n {\r\n next: (response) => {\r\n let res = new UsernameInfo(response);\r\n if (!res.isUsernameAvailable) {\r\n this.authService.onForgotPasswordGenerateOTP(username);\r\n } else {\r\n this.errorMessage = this.constants.userNotFound;\r\n }\r\n },\r\n error: any => {\r\n this.toastr.error(LoginConstant.apiFailErrorMessage);\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section>\r\n <header>\r\n <img [src]=\"libraryConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"verifyRegisteredEmail\">\r\n <div id=\"heading\">\r\n {{ constants.forgotPasswordHeading }}\r\n </div>\r\n <p>\r\n {{ constants.forgotPasswordMessage }}\r\n </p>\r\n <div id=\"alert-div\" *ngIf=\"errorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p id=\"alert-msg\">{{ errorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"email\"\r\n [placeholder]=\"constants.enterEmail\"\r\n [ngClass]=\"{\r\n 'input-invalid': verifyRegisteredEmail.get('email')?.dirty && verifyRegisteredEmail.get('email')?.errors\r\n }\"\r\n />\r\n\r\n <button\r\n tabindex=\"2\"\r\n type=\"submit\"\r\n class=\"login-btn\"\r\n [disabled]=\"!isFormValid()\"\r\n (click)=\"onVerifyRegisteredEmail()\"\r\n >\r\n {{ constants.forgotPasswordButton }}\r\n </button>\r\n </form>\r\n </article>\r\n <footer>\r\n Powered by <span> <strong> SureWaves</strong></span>\r\n </footer>\r\n </section>\r\n</div>\r\n","// Angular import statements\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\r\nimport { LibraryConfig } from '../../config/library.config';\r\ntype passwordType = { value: string | null, status: string | null };\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-verify-and-set-new-password',\r\n templateUrl: './verify-and-set-new-password.component.html',\r\n styleUrls: ['./verify-and-set-new-password.component.scss']\r\n})\r\nexport class VerifyAndSetNewPasswordComponent implements OnInit {\r\n verifyOtpForm: FormGroup;\r\n passwordNotMatching = false;\r\n constants: typeof LoginConstant;\r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n\r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n private router: Router,\r\n public libraryConfig: LibraryConfig\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.authService.verifyAndSetNewPasswordButton = LoginConstant.setNewPasswordButton;\r\n this.onIntialiseForm();\r\n }\r\n\r\n onIntialiseForm() {\r\n this.verifyOtpForm = this.fb.group({\r\n otp: [null, [Validators.required]],\r\n });\r\n }\r\n\r\n isFormValid() {\r\n if (\r\n this.password.status === \"VALID\" &&\r\n this.confirmPassword.status === \"VALID\" &&\r\n this.verifyOtpForm.controls['otp'].valid\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n onPasswordChange($event: passwordType) {\r\n this.password = $event;\r\n }\r\n\r\n onConfirmPasswordChange($event: passwordType) {\r\n this.confirmPassword = $event;\r\n }\r\n\r\n onVerifyOtpSettingNewPassword() {\r\n if (this.password.value != this.confirmPassword.value) {\r\n this.passwordNotMatching = true;\r\n } else {\r\n this.passwordNotMatching = false;\r\n if (this.authService.verifyAndSetNewPasswordButton === LoginConstant.regenerateOtp) {\r\n this.router.navigate([LoginConstant.forgortPasswordPageUrl]);\r\n } else {\r\n this.password.value && this.authService.verifyCode(this.verifyOtpForm.controls['otp'].value, this.password.value);\r\n }\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"main\" [ngClass]=\"{ 'main-height': authService.verifyAndSetNewPasswordErrorMessage }\">\r\n <section>\r\n <header>\r\n <img [src]=\"libraryConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <span class=\"back-btn\" [routerLink]=\"constants.forgortPasswordPageUrl\">\r\n <i class=\"mdi mdi-arrow-left\"></i>\r\n </span>\r\n\r\n <form [formGroup]=\"verifyOtpForm\">\r\n <div class=\"pull-left\" id=\"heading\">\r\n {{ constants.verifyAndSetNewPasswordheading }}\r\n </div>\r\n <p>{{ authService.verifyAndSetNewPasswordMessage }}</p>\r\n\r\n <div id=\"alert-div\" *ngIf=\"authService.verifyAndSetNewPasswordErrorMessage\">\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p id=\"display-block-msg\">{{ authService.verifyAndSetNewPasswordErrorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"otp\"\r\n [placeholder]=\"constants.enterOtp\"\r\n autocomplete=\"new-field-name\"\r\n [ngClass]=\"{ 'input-invalid': authService.verifyAndSetNewPasswordErrorMessage }\"\r\n />\r\n\r\n <anna-cognito-lib-password-matching\r\n (passwordChange)=\"onPasswordChange($event)\"\r\n (confirmPasswordChange)=\"onConfirmPasswordChange($event)\"\r\n [passwordNotMatching]=\"passwordNotMatching\"\r\n >\r\n </anna-cognito-lib-password-matching>\r\n <button\r\n tabindex=\"4\"\r\n type=\"submit\"\r\n class=\"login-btn\"\r\n [disabled]=\"authService.sessionLocked || !isFormValid()\"\r\n (click)=\"onVerifyOtpSettingNewPassword()\"\r\n >\r\n {{ authService.verifyAndSetNewPasswordButton }}\r\n </button>\r\n </form>\r\n </article>\r\n <footer>\r\n Powered by <span> <strong>SureWaves</strong> </span>\r\n </footer>\r\n </section>\r\n</div>\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { LoginComponent } from './components/login/login.component';\r\nimport { SpinnerButtonDirective } from './directives/spinner-button';\r\nimport { LibraryConfig } from './config/library.config';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SetNewPasswordComponent } from './components/set-new-password/set-new-password.component';\r\nimport { PasswordMatchingComponent } from './components/password-matching/password-matching.component';\r\nimport { ForgotPasswordComponent } from './components/forgot-password/forgot-password.component';\r\nimport { VerifyAndSetNewPasswordComponent } from './components/verify-and-set-new-password/verify-and-set-new-password.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n LoginComponent,\r\n SetNewPasswordComponent,\r\n PasswordMatchingComponent,\r\n ForgotPasswordComponent,\r\n VerifyAndSetNewPasswordComponent,\r\n SpinnerButtonDirective,\r\n ],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n CommonModule\r\n ],\r\n exports: [\r\n LoginComponent,\r\n SetNewPasswordComponent,\r\n PasswordMatchingComponent,\r\n ForgotPasswordComponent,\r\n VerifyAndSetNewPasswordComponent,\r\n SpinnerButtonDirective\r\n ]\r\n})\r\nexport class AnnaCognitoLibModule {\r\n public static forRoot(configuration: LibraryConfig): ModuleWithProviders<AnnaCognitoLibModule> {\r\n return {\r\n ngModule: AnnaCognitoLibModule,\r\n providers: [\r\n {\r\n provide: LibraryConfig, \r\n useValue: configuration\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of anna-cognito-lib\r\n */\r\n\r\nexport * from './lib/anna-cognito-lib.module';\r\n\r\n//COMPONENTS \r\nexport * from './lib/components/login/login.component';\r\nexport * from './lib/components/forgot-password/forgot-password.component';\r\nexport * from './lib/components/set-new-password/set-new-password.component';\r\nexport * from './lib/components/password-matching/password-matching.component';\r\nexport * from './lib/components/verify-and-set-new-password/verify-and-set-new-password.component';\r\n\r\n//SERVICES \r\nexport * from './lib/services/auth.service';\r\nexport * from './lib/services/acl.service';\r\nexport * from './lib/config/auth-service.token';\r\nexport * from './lib/config/acl-service.token';\r\nexport * from './lib/config/library.config';\r\n\r\n//DIRECTIVES \r\nexport * from './lib/directives/spinner-button';\r\n\r\n//CONSTANTS \r\nexport * from './lib/constants/loginConstant';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AnnaLibAuthService","i3.LibraryConfig","i4","i5","i6.SpinnerButtonDirective","i1","i2","i4.PasswordMatchingComponent","i3","i4.LibraryConfig","i5.PasswordMatchingComponent"],"mappings":"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"}
1
+ {"version":3,"file":"annalib-anna-cognito-lib.mjs","sources":["../../../projects/anna-cognito-lib/src/lib/constants/loginConstant.ts","../../../projects/anna-cognito-lib/src/lib/models/auth.model.ts","../../../projects/anna-cognito-lib/src/lib/config/acl-service.token.ts","../../../projects/anna-cognito-lib/src/lib/services/acl.service.ts","../../../projects/anna-cognito-lib/src/lib/config/library.config.ts","../../../projects/anna-cognito-lib/src/lib/config/auth-service.token.ts","../../../projects/anna-cognito-lib/src/lib/services/auth.service.ts","../../../projects/anna-cognito-lib/src/lib/directives/spinner-button/spinner-button.directive.ts","../../../projects/anna-cognito-lib/src/lib/components/login/login.component.ts","../../../projects/anna-cognito-lib/src/lib/components/login/login.component.html","../../../projects/anna-cognito-lib/src/lib/components/password-matching/password-matching.component.ts","../../../projects/anna-cognito-lib/src/lib/components/password-matching/password-matching.component.html","../../../projects/anna-cognito-lib/src/lib/components/set-new-password/set-new-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/set-new-password/set-new-password.component.html","../../../projects/anna-cognito-lib/src/lib/components/forgot-password/forgot-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/forgot-password/forgot-password.component.html","../../../projects/anna-cognito-lib/src/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.ts","../../../projects/anna-cognito-lib/src/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.html","../../../projects/anna-cognito-lib/src/lib/anna-cognito-lib.module.ts","../../../projects/anna-cognito-lib/src/public-api.ts","../../../projects/anna-cognito-lib/src/annalib-anna-cognito-lib.ts"],"sourcesContent":["export class LoginConstant {\r\n // Login page\r\n static readonly enterEmail = \"Enter your username\";\r\n static readonly password = \"Password\";\r\n static readonly confirmPassword = \"Confirm Password\";\r\n static readonly login = \"Login\";\r\n static readonly otp = \"OTP\";\r\n static readonly forgotPassword = \"Forgot \" + LoginConstant.password.toLowerCase() + \"?\";\r\n\r\n // set new password\r\n static readonly setNewPasswordHeading = \"Set new \" + LoginConstant.password.toLowerCase();\r\n static readonly setNewPasswordButton = \"Set and \" + LoginConstant.login.toLowerCase() + \" again\";\r\n static readonly passwordMustContain = \"The password must contain:\";\r\n static readonly minimumCharacter = \"Minimum 8 characters\";\r\n static readonly oneUppercase = \"1 Uppercase\";\r\n static readonly oneLowercase = \"1 Lowercase\";\r\n static readonly oneNumber = \"1 Numerical\";\r\n static readonly specialCharacter = \"1 Special character\";\r\n static readonly passwordNotMatching = \"The passwords do not match. Please try again.\";\r\n static readonly userNamePasswordIncorrect = \"Incorrect username or password\";\r\n static readonly userNotFound = \"No registered user found\";\r\n static readonly loginAgain = LoginConstant.login + \" again\";\r\n\r\n // verify OTP & set new password\r\n static readonly verifyAndSetNewPasswordheading = \"Enter \" + LoginConstant.otp + \" & set new password\";\r\n static readonly verifyAndSetNewPasswordMessage = \"An \" + LoginConstant.otp + \" has been succesfully emailed to \";\r\n static readonly pleaseEnterItBelow = \". Please enter it below.\";\r\n static readonly regenerateOtp = \"Regenerate \" + LoginConstant.otp;\r\n static readonly enterOtp = \"Enter \" + LoginConstant.otp;\r\n static readonly submit = \"Submit\";\r\n static readonly attempt = \"Attempt\";\r\n static readonly attemptLimitExceeded =\r\n \"You have exceeded the maximum number of allowed attempts. Please try again after 15 minutes.\";\r\n static readonly attemptMessage = \" of 5. The OTP entered is incorrect. Please try again with the right one.\";\r\n static readonly sessionExpired = \"The session has expired. Please try again.\";\r\n\r\n // forgot password\r\n static readonly forgotPasswordHeading = \"Forgot your password?\";\r\n static readonly forgotPasswordMessage = \"Please enter your username.\";\r\n static readonly forgotPasswordButton = \"Get \" + LoginConstant.otp;\r\n static readonly apiFailErrorMessage = \"Unable to connect to server right now. Please try after some time.\";\r\n\r\n //url\r\n static readonly setNewPasswordUrl = \"/set-new-password\";\r\n static readonly forgortPasswordPageUrl = \"/forgot-password\";\r\n static readonly verifyAndSetNewPasswordUrl = \"/verify-and-set-new-password\";\r\n static readonly loginPageUrl = \"/login\";\r\n static readonly homePageUrl = \"/home\";\r\n static readonly stationSettingUrl = \"/station-settings\";\r\n}\r\n","export class AuthenticationData {\r\n Username: string;\r\n Password: string;\r\n constructor(Username: string, Password: string) {\r\n this.Username = Username;\r\n this.Password = Password;\r\n }\r\n}\r\n\r\nexport class UserPoolInformation {\r\n UserPoolId: string;\r\n ClientId: string;\r\n constructor(UserPoolId: string, ClientId: string) {\r\n this.UserPoolId = UserPoolId;\r\n this.ClientId = ClientId;\r\n }\r\n}\r\n\r\nexport class UsernameInfo {\r\n isUsernameAvailable: boolean;\r\n constructor(object: { isUsernameAvailable: boolean }) {\r\n this.isUsernameAvailable = object.isUsernameAvailable;\r\n }\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\n/** Token to inject the acl service */\r\nexport const ACL_SERVICE_TOKEN:\r\n InjectionToken<IAclService> =\r\n new InjectionToken<IAclService>('ACL service token');\r\n\r\nexport interface IAclService {\r\n urlToCognitoPrivilegeMap: {[key: string]: string};\r\n DAILY_REVISION_REPORT_WRITE: string;\r\n LUR_SETTINGS_WRITE: string;\r\n MANAGE_BUSINESS_RULES_WRITE: string;\r\n MANAGE_USERS_WRITE: string;\r\n ORDER_BIZ_RULES_WRITE: string;\r\n ORDER_REVISIONS_WRITE: string;\r\n ORDER_SPOTS_REPORT_WRITE: string;\r\n RATE_CARD_WRITE: string;\r\n STATION_SYSTEM_SETTINGS_WRITE: string;\r\n POLITICAL_WINDOW_WRITE: string;\r\n \r\n isUserAuthoriseToAcessManageUser(): boolean;\r\n}","import { Inject, Injectable } from \"@angular/core\";\r\nimport { IAclService, ACL_SERVICE_TOKEN } from '../config/acl-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaLibAclService {\r\n constructor(@Inject(ACL_SERVICE_TOKEN) public consumingProjectAclService: IAclService) {}\r\n\r\n userGroupsInCognitoJWT: string[];\r\n isUserAuthorisedToAccessPage(url: string): boolean {\r\n let privilegeName = this.consumingProjectAclService.urlToCognitoPrivilegeMap[url];\r\n return this.userGroupsInCognitoJWT.includes(privilegeName);\r\n }\r\n\r\n isUserAuthorisedToAccessElement(privilege: string): boolean {\r\n return this.userGroupsInCognitoJWT.includes(privilege);\r\n }\r\n\r\n isUserAuthoriseToAcessManageUser(): boolean {\r\n return this.consumingProjectAclService.isUserAuthoriseToAcessManageUser();\r\n }\r\n\r\n}\r\n","export class LibraryConfig { \r\n loginPageLogoImgUrl: string = '';\r\n cognito : {\r\n userPoolId: string;\r\n clientId: string; \r\n }\r\n \r\n}","import { InjectionToken } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n/** Token to inject the auth service */\r\nexport const AUTH_SERVICE_TOKEN:\r\n InjectionToken<IAuthService> =\r\n new InjectionToken<IAuthService>('Auth service token');\r\n\r\nexport interface IAuthService {\r\n isLoggingIn: boolean; \r\n onSuccessfulAuthenticatingUser(result: any): void;\r\n isUsernameAvailable(username: string): Observable<any>;\r\n navigateBasedOnUserRole(loginUserData: any): void;\r\n getPublicIp(): string;\r\n sendRegenerationEmail(userCode:string):void;\r\n}","// Angular import statements\r\nimport { Inject, Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\n// Third party import statements\r\nimport { CognitoUserPool, CognitoUser, AuthenticationDetails, CognitoUserSession } from \"amazon-cognito-identity-js\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../constants/loginConstant\";\r\nimport { AuthenticationData, UserPoolInformation } from \"../models/auth.model\";\r\nimport { AnnaLibAclService } from './acl.service';\r\nimport { LibraryConfig } from '../config/library.config';\r\nimport { IAuthService, AUTH_SERVICE_TOKEN } from '../config/auth-service.token';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnnaLibAuthService {\r\n poolData: UserPoolInformation;\r\n userPool: CognitoUserPool;\r\n cognitoUser: CognitoUser;\r\n authenticationDetails: AuthenticationDetails;\r\n tokenValid: boolean;\r\n accessToken: string;\r\n userAttribute: any;\r\n loginErrorMessage: string | null;\r\n setNewPasswordErrorMessage: string;\r\n setNewPasswordButtonMessage: string;\r\n verifyAndSetNewPasswordErrorMessage: string;\r\n verifyAndSetNewPasswordMessage: string;\r\n verifyAndSetNewPasswordButton: string;\r\n noOfAttempts = 0;\r\n sessionLocked = false;\r\n userName: any;\r\n accessTokenTimerId: any;\r\n IdToken: any;\r\n\r\n constructor(\r\n private router: Router,\r\n public aclService: AnnaLibAclService,\r\n public libraryConfig: LibraryConfig,\r\n public httpClient:HttpClient,\r\n @Inject(AUTH_SERVICE_TOKEN) public consumingProjectAuthService: IAuthService) {\r\n if(!consumingProjectAuthService) {\r\n throw new Error('You must provide a authService');\r\n }\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n /***\r\n 1. takes user pool data (userPool ID and client ID)\r\n 2. if current user is null then it means user already logged out then simply return Promise<false>\r\n 3. if current user present check if token is valid for it.\r\n */\r\n isUserLoggedIn(): Promise<boolean> {\r\n let currentUser = this.getCurrentUserDetails();\r\n if (currentUser) {\r\n return new Promise((resolve, reject) => {\r\n currentUser && currentUser.getSession((error: Error, token: CognitoUserSession | null) => {\r\n if (token) {\r\n this.getAllCognitoTokenAndGroups(token);\r\n resolve(true);\r\n } else {\r\n this.sessionTimeout();\r\n resolve(false);\r\n }\r\n });\r\n });\r\n } else {\r\n return new Promise((resolve) => {\r\n clearInterval(this.accessTokenTimerId);\r\n resolve(false);\r\n });\r\n }\r\n }\r\n\r\n sessionTimeout() {\r\n localStorage.clear();\r\n clearInterval(this.accessTokenTimerId);\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n }\r\n\r\n refreshAccessToken() {\r\n let currentUser = this.getCurrentUserDetails();\r\n let accessTokenExpiration = localStorage.getItem(\"accessTokenExpiration\");\r\n let expTime = accessTokenExpiration ? parseInt(accessTokenExpiration) : 0;\r\n this.accessTokenTimerId = setInterval(() => {\r\n let counter = 1000;\r\n let delayFunction = setTimeout(() => {\r\n currentUser && currentUser.getSession((error: any, token: CognitoUserSession | null) => {\r\n if (token) {\r\n this.getAllCognitoTokenAndGroups(token);\r\n let newExpTime = this.computeTokenExpiration(this.IdToken);\r\n\r\n if (newExpTime <= 0) {\r\n newExpTime = 1000;\r\n counter = 0;\r\n if (delayFunction) {\r\n clearInterval(delayFunction);\r\n }\r\n }\r\n expTime = newExpTime;\r\n localStorage.setItem(\"accessTokenExpiration\", newExpTime.toString());\r\n clearInterval(this.accessTokenTimerId);\r\n this.refreshAccessToken();\r\n } else if (error.code === \"NotAuthorizedException\") {\r\n this.sessionTimeout();\r\n }\r\n });\r\n }, counter);\r\n }, expTime);\r\n }\r\n\r\n computeTokenExpiration(token: any) {\r\n let currentTime = Math.floor(Date.now() / 1000);\r\n let tokenTime = token.payload.exp;\r\n let expTime = (tokenTime - currentTime) * 1000;\r\n return expTime;\r\n }\r\n\r\n\r\n getCurrentUserDetails() {\r\n let poolData = new UserPoolInformation(this.libraryConfig.cognito.userPoolId, this.libraryConfig.cognito.clientId);\r\n let userPool = new CognitoUserPool(poolData);\r\n return userPool.getCurrentUser();\r\n }\r\n\r\n getCognitoUserDetails(email: string): CognitoUser {\r\n this.poolData = new UserPoolInformation(this.libraryConfig.cognito.userPoolId, this.libraryConfig.cognito.clientId);\r\n this.userPool = new CognitoUserPool(this.poolData);\r\n\r\n let userData = {\r\n Username: email,\r\n Pool: this.userPool,\r\n };\r\n let cognitoUser = new CognitoUser(userData);\r\n return cognitoUser;\r\n }\r\n\r\n authenticate(email: string, password: string) {\r\n this.loginErrorMessage = null;\r\n let authData = new AuthenticationData(email, password);\r\n this.authenticationDetails = new AuthenticationDetails(authData);\r\n\r\n this.cognitoUser = this.getCognitoUserDetails(email);\r\n this.CognitoAuthentication(this.authenticationDetails);\r\n }\r\n\r\n CognitoAuthentication(authenticationDetails: AuthenticationDetails) {\r\n this.cognitoUser.authenticateUser(authenticationDetails, {\r\n onSuccess: async (result) => {\r\n this.getAllCognitoTokenAndGroups(result);\r\n await this.consumingProjectAuthService.onSuccessfulAuthenticatingUser(result);\r\n },\r\n onFailure: (err) => {\r\n this.consumingProjectAuthService.isLoggingIn = false;\r\n if (err.message === \"Temporary password has expired and must be reset by an administrator.\") {\r\n this.loginErrorMessage = \"Password has expired. A new password has been sent to your registered email. Kindly login again with new link and credentials.\";\r\n this.consumingProjectAuthService.sendRegenerationEmail(this.authenticationDetails.getUsername());\r\n }\r\n else if (err.message === \"Password attempts exceeded\") {\r\n this.loginErrorMessage = LoginConstant.attemptLimitExceeded;\r\n } else {\r\n this.loginErrorMessage = LoginConstant.userNamePasswordIncorrect;\r\n }\r\n },\r\n newPasswordRequired: (data:any) => {\r\n this.consumingProjectAuthService.isLoggingIn = false;\r\n this.userAttribute = data;\r\n this.router.navigate([LoginConstant.setNewPasswordUrl]);\r\n },\r\n });\r\n }\r\n\r\n \r\n setNewPassword(newPassword: any) {\r\n delete this.userAttribute.email;\r\n delete this.userAttribute.email_verified;\r\n delete this.userAttribute.phone_number_verified;\r\n this.cognitoUser.completeNewPasswordChallenge(newPassword, this.userAttribute, {\r\n onSuccess: (result) => {\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n },\r\n onFailure: (error) => {\r\n this.setNewPasswordErrorMessage = LoginConstant.sessionExpired;\r\n this.setNewPasswordButtonMessage = LoginConstant.loginAgain;\r\n },\r\n });\r\n }\r\n\r\n onForgotPasswordGenerateOTP(email: string) {\r\n this.userName = email;\r\n this.cognitoUser = this.getCognitoUserDetails(email);\r\n this.cognitoUser.forgotPassword({\r\n onSuccess: (result) => {\r\n this.verifyAndSetNewPasswordMessage =\r\n LoginConstant.verifyAndSetNewPasswordMessage +\r\n result.CodeDeliveryDetails.Destination +\r\n LoginConstant.pleaseEnterItBelow;\r\n this.router.navigate([LoginConstant.verifyAndSetNewPasswordUrl]);\r\n },\r\n onFailure: (err) => {},\r\n });\r\n }\r\n\r\n verifyCode(verificationCode: string, newPassword: string) {\r\n this.cognitoUser.confirmPassword(verificationCode, newPassword, {\r\n onFailure: (error) => {\r\n this.noOfAttempts = this.noOfAttempts + 1;\r\n this.verifyAndSetNewPasswordErrorMessage = this.forgotPasswordError(error, this.noOfAttempts);\r\n },\r\n onSuccess: () => {\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n },\r\n });\r\n }\r\n\r\n forgotPasswordError(err: any, noOfAttempts: number) {\r\n let errorMessage;\r\n switch (err.code) {\r\n case \"LimitExceededException\":\r\n this.sessionLocked = true;\r\n errorMessage = LoginConstant.attemptLimitExceeded;\r\n break;\r\n case \"ExpiredCodeException\":\r\n errorMessage = LoginConstant.sessionExpired;\r\n this.verifyAndSetNewPasswordButton = LoginConstant.regenerateOtp;\r\n break;\r\n default:\r\n errorMessage = LoginConstant.attempt + \" \" + noOfAttempts + LoginConstant.attemptMessage;\r\n }\r\n return errorMessage;\r\n }\r\n\r\n getAllCognitoTokenAndGroups(token: CognitoUserSession) {\r\n this.accessToken = token.getAccessToken().getJwtToken();\r\n this.IdToken = token.getIdToken();\r\n if (\"cognito:groups\" in token.getAccessToken().payload) {\r\n this.aclService.userGroupsInCognitoJWT = token.getAccessToken().payload[\"cognito:groups\"];\r\n } else {\r\n this.aclService.userGroupsInCognitoJWT = [];\r\n }\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n","import { Directive, ElementRef, Input, Renderer2, SimpleChanges, OnChanges, OnInit } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[anna-cognito-lib-SpinnerButton]\",\r\n})\r\nexport class SpinnerButtonDirective implements OnInit, OnChanges {\r\n @Input(\"anna-cognito-lib-SpinnerButton\") loading: boolean;\r\n @Input(\"spinnerButtonText\") spinnerButtonText: string;\r\n child: HTMLDivElement;\r\n button: any;\r\n\r\n constructor(\r\n private el: ElementRef, \r\n private renderer: Renderer2) {\r\n this.button = this.el.nativeElement;\r\n this.child = document.createElement(\"div\");\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['spinnerButtonText'] && changes['spinnerButtonText'].currentValue) {\r\n this.button.innerHTML = this.spinnerButtonText;\r\n }\r\n if (changes['loading'] && changes['loading'].currentValue) {\r\n this.button.innerHTML = \"\";\r\n this.button.setAttribute(\"disabled\", \"true\");\r\n this.child.classList.add(\"spinner-for-button-directive\");\r\n this.renderer.appendChild(this.button, this.child);\r\n } else {\r\n this.child.classList.remove(\"spinner-for-button-directive\");\r\n this.button.removeAttribute(\"disabled\");\r\n this.button.innerHTML = this.spinnerButtonText;\r\n }\r\n }\r\n}\r\n","// Angular import statements\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup } from \"@angular/forms\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\r\nimport { LibraryConfig } from '../../config/library.config';\r\n\r\n@Component({\r\n selector: \"anna-cognito-lib-login\",\r\n templateUrl: \"./login.component.html\",\r\n styleUrls: [\"./login.component.scss\"],\r\n})\r\nexport class LoginComponent implements OnInit {\r\n loginForm: FormGroup;\r\n constants: typeof LoginConstant;\r\n \r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n public libraryConfig: LibraryConfig\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.onIntialiseForm();\r\n }\r\n\r\n onIntialiseForm() {\r\n this.loginForm = this.fb.group({\r\n username: [null],\r\n password: [null],\r\n });\r\n }\r\n\r\n OnLogin() {\r\n this.authService.consumingProjectAuthService.isLoggingIn = true;\r\n const username = this.loginForm.controls['username'].value;\r\n const password = this.loginForm.controls['password'].value;\r\n this.authService.authenticate(username, password);\r\n }\r\n\r\n \r\n}\r\n","<div class=\"main\">\r\n <!-- Load login page when all constant variable are intiated otherwise it will show a glitch. that's why ngIf check of constants.forgotPassword -->\r\n <section *ngIf=\"constants.forgotPassword\">\r\n <header>\r\n <img [src]=\"libraryConfig.loginPageLogoImgUrl\" loading=\"eager\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"OnLogin()\">\r\n <div id=\"alert-div\" *ngIf=\"authService.loginErrorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.loginErrorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"username\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\"\r\n [placeholder]=\"constants.enterEmail\"\r\n autocomplete=\"username\"\r\n autofocus\r\n />\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"2\"\r\n formControlName=\"password\"\r\n [ngClass]=\"{ 'input-invalid': authService.loginErrorMessage }\"\r\n [placeholder]=\"constants.password\"\r\n autocomplete=\"current-password\"\r\n autofocus\r\n />\r\n\r\n <a tabindex=\"4\" [routerLink]=\"constants.forgortPasswordPageUrl\">{{ constants.forgotPassword }}</a>\r\n <button\r\n tabindex=\"3\"\r\n class=\"login-btn\"\r\n [anna-cognito-lib-SpinnerButton]=\"authService.consumingProjectAuthService.isLoggingIn\"\r\n [spinnerButtonText]=\"constants.login\"\r\n ></button>\r\n </form>\r\n </article>\r\n <footer>Powered by <span>SureWaves</span></footer>\r\n </section>\r\n</div>\r\n","// Angular import statements\r\nimport { EventEmitter, Inject, Input, Output } from \"@angular/core\";\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { AbstractControl, FormBuilder, FormGroup, ValidationErrors, ValidatorFn, Validators } from \"@angular/forms\";\r\n\r\n// Third party import statements\r\nimport { debounceTime } from \"rxjs/operators\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-password-matching',\r\n templateUrl: './password-matching.component.html',\r\n styleUrls: ['./password-matching.component.scss']\r\n})\r\nexport class PasswordMatchingComponent implements OnInit {\r\n @Output() passwordChange = new EventEmitter();\r\n @Output() confirmPasswordChange = new EventEmitter();\r\n\r\n @Input() passwordNotMatching: boolean;\r\n passwordForm: FormGroup;\r\n constants: typeof LoginConstant;\r\n constructor(@Inject(FormBuilder) private fb: FormBuilder) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.createGroup();\r\n this.formValueChanged();\r\n }\r\n\r\n formValueChanged() {\r\n const password = this.passwordForm.get(\"password\");\r\n const confirmPassword = this.passwordForm.get(\"confirmPassword\");\r\n\r\n password && password.valueChanges.subscribe(() => {\r\n password && password.setValidators([\r\n Validators.required,\r\n this.regexValidator(new RegExp(\".{8,}\"), { minLength: true }),\r\n this.regexValidator(new RegExp(\"[a-z]\"), { lowercase: true }),\r\n this.regexValidator(new RegExp(\"[A-Z]\"), { uppercase: true }),\r\n this.regexValidator(new RegExp(\"[0-9]\"), { number: true }),\r\n this.regexValidator(new RegExp(\"[^a-zA-Z0-9]\"), { specialCharacter: true }),\r\n ]);\r\n password.updateValueAndValidity({ emitEvent: false });\r\n this.onPasswordChange();\r\n });\r\n\r\n if(confirmPassword){\r\n confirmPassword.valueChanges.pipe(debounceTime(300)).subscribe(() => {\r\n confirmPassword.setValidators([Validators.required]);\r\n confirmPassword.updateValueAndValidity({ emitEvent: false });\r\n this.onConfirmPasswordChange();\r\n });\r\n }\r\n \r\n }\r\n\r\n onPasswordChange() {\r\n let result = {\r\n value: this.passwordForm.value.password,\r\n status: this.passwordForm.controls['password'].status,\r\n };\r\n this.passwordChange.emit(result);\r\n }\r\n\r\n onConfirmPasswordChange() {\r\n let result = {\r\n value: this.passwordForm.value.confirmPassword,\r\n status: this.passwordForm.controls['confirmPassword'].status,\r\n };\r\n this.confirmPasswordChange.emit(result);\r\n }\r\n\r\n createGroup() {\r\n this.passwordForm = this.fb.group({\r\n password: [null],\r\n confirmPassword: [null],\r\n });\r\n return this.passwordForm;\r\n }\r\n\r\n // TODO: check the return again\r\n regexValidator(regex: RegExp, error: ValidationErrors): any\r\n {\r\n return (control: AbstractControl): { [key: string]: boolean } => {\r\n const valid = regex.test(control.value);\r\n return (valid ? null : error) as any;\r\n };\r\n }\r\n\r\n}\r\n","<form [formGroup]=\"passwordForm\">\r\n <div id=\"alert-div\" *ngIf=\"passwordNotMatching\">\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p>{{ constants.passwordNotMatching }}</p>\r\n </div>\r\n <div class=\"password-policies\">\r\n <ng-container *ngIf=\"!passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }} </b>\r\n </p>\r\n <p>{{ constants.minimumCharacter }}</p>\r\n <p>{{ constants.oneUppercase }}</p>\r\n <p>{{ constants.oneLowercase }}</p>\r\n <p>{{ constants.oneNumber }}</p>\r\n <p>{{ constants.specialCharacter }}</p>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }}</b>\r\n </p>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('minLength') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('minLength')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('minLength')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.minimumCharacter }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('uppercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('uppercase')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('uppercase')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneUppercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('lowercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('lowercase')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('lowercase')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneLowercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('number') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('number')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('number')\"> check_circle </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneNumber }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('specialCharacter') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span class=\"material-icons\" *ngIf=\"passwordForm.get('password')?.hasError('specialCharacter')\"> cancel </span>\r\n <span class=\"material-icons\" *ngIf=\"!passwordForm.get('password')?.hasError('specialCharacter')\">\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.specialCharacter }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"2\"\r\n formControlName=\"password\"\r\n [placeholder]=\"constants.password\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"3\"\r\n formControlName=\"confirmPassword\"\r\n [placeholder]=\"constants.confirmPassword\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n</form>\r\n","\r\n// Angular import statements\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// User defined import statements\r\nimport { AnnaLibAuthService } from \"../../services/auth.service\";\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { LibraryConfig } from '../../config/library.config';\r\ntype passwordType = { value: string | null, status: string | null };\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-set-new-password',\r\n templateUrl: './set-new-password.component.html',\r\n styleUrls: ['./set-new-password.component.scss']\r\n})\r\nexport class SetNewPasswordComponent implements OnInit {\r\n passwordNotMatching = false;\r\n \r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n constants: typeof LoginConstant;\r\n\r\n constructor(public authService: AnnaLibAuthService, \r\n private router: Router,\r\n public libraryConfig: LibraryConfig) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.authService.setNewPasswordButtonMessage = LoginConstant.setNewPasswordButton;\r\n }\r\n\r\n isFormValid() {\r\n return this.password.status === \"VALID\" && this.confirmPassword.status === \"VALID\";\r\n }\r\n onPasswordChange($event: passwordType) {\r\n this.password = $event;\r\n }\r\n\r\n onConfirmPasswordChange($event: passwordType) {\r\n this.confirmPassword = $event;\r\n }\r\n\r\n onSettingNewPassword() {\r\n if (this.password.value != this.confirmPassword.value) {\r\n this.passwordNotMatching = true;\r\n } else {\r\n this.passwordNotMatching = false;\r\n if (this.authService.setNewPasswordButtonMessage === LoginConstant.loginAgain) {\r\n this.router.navigate([LoginConstant.loginPageUrl]);\r\n } else {\r\n this.authService.setNewPassword(this.password.value);\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section>\r\n <header>\r\n <img [src]=\"libraryConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form>\r\n <div id=\"heading\">\r\n {{ constants.setNewPasswordHeading }}\r\n </div>\r\n\r\n <div id=\"alert-div\" *ngIf=\"authService.setNewPasswordErrorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p>{{ authService.setNewPasswordErrorMessage }}</p>\r\n </div>\r\n <anna-cognito-lib-password-matching\r\n (passwordChange)=\"onPasswordChange($event)\"\r\n (confirmPasswordChange)=\"onConfirmPasswordChange($event)\"\r\n [passwordNotMatching]=\"passwordNotMatching\"\r\n >\r\n </anna-cognito-lib-password-matching>\r\n <button tabindex=\"3\" class=\"login-btn\" [disabled]=\"!isFormValid()\" (click)=\"onSettingNewPassword()\">\r\n {{ authService.setNewPasswordButtonMessage }}\r\n </button>\r\n </form>\r\n </article>\r\n <footer>\r\n Powered by <span> <strong> SureWaves</strong></span>\r\n </footer>\r\n </section>\r\n</div>\r\n","// Angular import statements\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\n\r\n// Third party import statements\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n// User defined import statements\r\nimport { UsernameInfo } from \"../../models/auth.model\";\r\nimport { AnnaLibAuthService } from \"../../services/auth.service\";\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { LibraryConfig } from '../../config/library.config';\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-forgot-password',\r\n templateUrl: './forgot-password.component.html',\r\n styleUrls: ['./forgot-password.component.scss']\r\n})\r\nexport class ForgotPasswordComponent implements OnInit {\r\n errorMessage: string;\r\n verifyRegisteredEmail: FormGroup;\r\n passwordNotMatching = false;\r\n constants: typeof LoginConstant;\r\n password:any = { value: null, status: null };\r\n confirmPassword:any = { value: null, status: null };\r\n\r\n constructor(\r\n private authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n private toastr: ToastrService,\r\n public libraryConfig: LibraryConfig\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.onIntialiseForm();\r\n if (this.authService.userName) {\r\n this.onUpdateForm();\r\n }\r\n }\r\n\r\n onIntialiseForm() {\r\n this.verifyRegisteredEmail = this.fb.group({\r\n email: [null, [Validators.required]],\r\n });\r\n }\r\n\r\n onUpdateForm() {\r\n this.verifyRegisteredEmail.patchValue({\r\n email: this.authService.userName,\r\n });\r\n }\r\n\r\n isFormValid() {\r\n return this.verifyRegisteredEmail.valid;\r\n }\r\n\r\n onVerifyRegisteredEmail() {\r\n let username = this.verifyRegisteredEmail.controls['email'].value;\r\n this.authService.consumingProjectAuthService.isUsernameAvailable(username)\r\n .subscribe(\r\n {\r\n next: (response) => {\r\n let res = new UsernameInfo(response);\r\n if (!res.isUsernameAvailable) {\r\n this.authService.onForgotPasswordGenerateOTP(username);\r\n } else {\r\n this.errorMessage = this.constants.userNotFound;\r\n }\r\n },\r\n error: any => {\r\n this.toastr.error(LoginConstant.apiFailErrorMessage);\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","<div class=\"main\">\r\n <section>\r\n <header>\r\n <img [src]=\"libraryConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <form [formGroup]=\"verifyRegisteredEmail\">\r\n <div id=\"heading\">\r\n {{ constants.forgotPasswordHeading }}\r\n </div>\r\n <p>\r\n {{ constants.forgotPasswordMessage }}\r\n </p>\r\n <div id=\"alert-div\" *ngIf=\"errorMessage\">\r\n <span class=\"material-icons\">report</span>\r\n <p id=\"alert-msg\">{{ errorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"email\"\r\n [placeholder]=\"constants.enterEmail\"\r\n [ngClass]=\"{\r\n 'input-invalid': verifyRegisteredEmail.get('email')?.dirty && verifyRegisteredEmail.get('email')?.errors\r\n }\"\r\n />\r\n\r\n <button\r\n tabindex=\"2\"\r\n type=\"submit\"\r\n class=\"login-btn\"\r\n [disabled]=\"!isFormValid()\"\r\n (click)=\"onVerifyRegisteredEmail()\"\r\n >\r\n {{ constants.forgotPasswordButton }}\r\n </button>\r\n </form>\r\n </article>\r\n <footer>\r\n Powered by <span> <strong> SureWaves</strong></span>\r\n </footer>\r\n </section>\r\n</div>\r\n","// Angular import statements\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// User defined import statements\r\nimport { LoginConstant } from \"../../constants/loginConstant\";\r\nimport { AnnaLibAuthService } from '../../services/auth.service';\r\nimport { LibraryConfig } from '../../config/library.config';\r\ntype passwordType = { value: string | null, status: string | null };\r\n\r\n@Component({\r\n selector: 'anna-cognito-lib-verify-and-set-new-password',\r\n templateUrl: './verify-and-set-new-password.component.html',\r\n styleUrls: ['./verify-and-set-new-password.component.scss']\r\n})\r\nexport class VerifyAndSetNewPasswordComponent implements OnInit {\r\n verifyOtpForm: FormGroup;\r\n passwordNotMatching = false;\r\n constants: typeof LoginConstant;\r\n password: passwordType = { value: null, status: null };\r\n confirmPassword: passwordType = { value: null, status: null };\r\n\r\n constructor(\r\n public authService: AnnaLibAuthService,\r\n private fb: FormBuilder,\r\n private router: Router,\r\n public libraryConfig: LibraryConfig\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.constants = LoginConstant;\r\n this.authService.verifyAndSetNewPasswordButton = LoginConstant.setNewPasswordButton;\r\n this.onIntialiseForm();\r\n }\r\n\r\n onIntialiseForm() {\r\n this.verifyOtpForm = this.fb.group({\r\n otp: [null, [Validators.required]],\r\n });\r\n }\r\n\r\n isFormValid() {\r\n if (\r\n this.password.status === \"VALID\" &&\r\n this.confirmPassword.status === \"VALID\" &&\r\n this.verifyOtpForm.controls['otp'].valid\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n onPasswordChange($event: passwordType) {\r\n this.password = $event;\r\n }\r\n\r\n onConfirmPasswordChange($event: passwordType) {\r\n this.confirmPassword = $event;\r\n }\r\n\r\n onVerifyOtpSettingNewPassword() {\r\n if (this.password.value != this.confirmPassword.value) {\r\n this.passwordNotMatching = true;\r\n } else {\r\n this.passwordNotMatching = false;\r\n if (this.authService.verifyAndSetNewPasswordButton === LoginConstant.regenerateOtp) {\r\n this.router.navigate([LoginConstant.forgortPasswordPageUrl]);\r\n } else {\r\n this.password.value && this.authService.verifyCode(this.verifyOtpForm.controls['otp'].value, this.password.value);\r\n }\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"main\" [ngClass]=\"{ 'main-height': authService.verifyAndSetNewPasswordErrorMessage }\">\r\n <section>\r\n <header>\r\n <img [src]=\"libraryConfig.loginPageLogoImgUrl\" alt=\"Anna Logo\" />\r\n </header>\r\n <article>\r\n <span class=\"back-btn\" [routerLink]=\"constants.forgortPasswordPageUrl\">\r\n <i class=\"mdi mdi-arrow-left\"></i>\r\n </span>\r\n\r\n <form [formGroup]=\"verifyOtpForm\">\r\n <div class=\"pull-left\" id=\"heading\">\r\n {{ constants.verifyAndSetNewPasswordheading }}\r\n </div>\r\n <p>{{ authService.verifyAndSetNewPasswordMessage }}</p>\r\n\r\n <div id=\"alert-div\" *ngIf=\"authService.verifyAndSetNewPasswordErrorMessage\">\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p id=\"display-block-msg\">{{ authService.verifyAndSetNewPasswordErrorMessage }}</p>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n tabindex=\"1\"\r\n formControlName=\"otp\"\r\n [placeholder]=\"constants.enterOtp\"\r\n autocomplete=\"new-field-name\"\r\n [ngClass]=\"{ 'input-invalid': authService.verifyAndSetNewPasswordErrorMessage }\"\r\n />\r\n\r\n <anna-cognito-lib-password-matching\r\n (passwordChange)=\"onPasswordChange($event)\"\r\n (confirmPasswordChange)=\"onConfirmPasswordChange($event)\"\r\n [passwordNotMatching]=\"passwordNotMatching\"\r\n >\r\n </anna-cognito-lib-password-matching>\r\n <button\r\n tabindex=\"4\"\r\n type=\"submit\"\r\n class=\"login-btn\"\r\n [disabled]=\"authService.sessionLocked || !isFormValid()\"\r\n (click)=\"onVerifyOtpSettingNewPassword()\"\r\n >\r\n {{ authService.verifyAndSetNewPasswordButton }}\r\n </button>\r\n </form>\r\n </article>\r\n <footer>\r\n Powered by <span> <strong>SureWaves</strong> </span>\r\n </footer>\r\n </section>\r\n</div>\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { LoginComponent } from './components/login/login.component';\r\nimport { SpinnerButtonDirective } from './directives/spinner-button';\r\nimport { LibraryConfig } from './config/library.config';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SetNewPasswordComponent } from './components/set-new-password/set-new-password.component';\r\nimport { PasswordMatchingComponent } from './components/password-matching/password-matching.component';\r\nimport { ForgotPasswordComponent } from './components/forgot-password/forgot-password.component';\r\nimport { VerifyAndSetNewPasswordComponent } from './components/verify-and-set-new-password/verify-and-set-new-password.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n LoginComponent,\r\n SetNewPasswordComponent,\r\n PasswordMatchingComponent,\r\n ForgotPasswordComponent,\r\n VerifyAndSetNewPasswordComponent,\r\n SpinnerButtonDirective,\r\n ],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n CommonModule\r\n ],\r\n exports: [\r\n LoginComponent,\r\n SetNewPasswordComponent,\r\n PasswordMatchingComponent,\r\n ForgotPasswordComponent,\r\n VerifyAndSetNewPasswordComponent,\r\n SpinnerButtonDirective\r\n ]\r\n})\r\nexport class AnnaCognitoLibModule {\r\n public static forRoot(configuration: LibraryConfig): ModuleWithProviders<AnnaCognitoLibModule> {\r\n return {\r\n ngModule: AnnaCognitoLibModule,\r\n providers: [\r\n {\r\n provide: LibraryConfig, \r\n useValue: configuration\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of anna-cognito-lib\r\n */\r\n\r\nexport * from './lib/anna-cognito-lib.module';\r\n\r\n//COMPONENTS \r\nexport * from './lib/components/login/login.component';\r\nexport * from './lib/components/forgot-password/forgot-password.component';\r\nexport * from './lib/components/set-new-password/set-new-password.component';\r\nexport * from './lib/components/password-matching/password-matching.component';\r\nexport * from './lib/components/verify-and-set-new-password/verify-and-set-new-password.component';\r\n\r\n//SERVICES \r\nexport * from './lib/services/auth.service';\r\nexport * from './lib/services/acl.service';\r\nexport * from './lib/config/auth-service.token';\r\nexport * from './lib/config/acl-service.token';\r\nexport * from './lib/config/library.config';\r\n\r\n//DIRECTIVES \r\nexport * from './lib/directives/spinner-button';\r\n\r\n//CONSTANTS \r\nexport * from './lib/constants/loginConstant';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AnnaLibAuthService","i3.LibraryConfig","i4","i5","i6.SpinnerButtonDirective","i1","i2","i4.PasswordMatchingComponent","i3","i4.LibraryConfig","i5.PasswordMatchingComponent"],"mappings":"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"}
@@ -14,14 +14,8 @@ export declare class ForgotPasswordComponent implements OnInit {
14
14
  verifyRegisteredEmail: FormGroup;
15
15
  passwordNotMatching: boolean;
16
16
  constants: typeof LoginConstant;
17
- password: {
18
- value: null;
19
- status: null;
20
- };
21
- confirmPassword: {
22
- value: null;
23
- status: null;
24
- };
17
+ password: any;
18
+ confirmPassword: any;
25
19
  constructor(authService: AnnaLibAuthService, fb: FormBuilder, toastr: ToastrService, libraryConfig: LibraryConfig);
26
20
  ngOnInit(): void;
27
21
  onIntialiseForm(): void;
@@ -8,4 +8,5 @@ export interface IAuthService {
8
8
  isUsernameAvailable(username: string): Observable<any>;
9
9
  navigateBasedOnUserRole(loginUserData: any): void;
10
10
  getPublicIp(): string;
11
+ sendRegenerationEmail(userCode: string): void;
11
12
  }
@@ -1,4 +1,5 @@
1
1
  import { Router } from "@angular/router";
2
+ import { HttpClient } from "@angular/common/http";
2
3
  import { CognitoUserPool, CognitoUser, AuthenticationDetails, CognitoUserSession } from "amazon-cognito-identity-js";
3
4
  import { UserPoolInformation } from "../models/auth.model";
4
5
  import { AnnaLibAclService } from './acl.service';
@@ -9,6 +10,7 @@ export declare class AnnaLibAuthService {
9
10
  private router;
10
11
  aclService: AnnaLibAclService;
11
12
  libraryConfig: LibraryConfig;
13
+ httpClient: HttpClient;
12
14
  consumingProjectAuthService: IAuthService;
13
15
  poolData: UserPoolInformation;
14
16
  userPool: CognitoUserPool;
@@ -28,7 +30,7 @@ export declare class AnnaLibAuthService {
28
30
  userName: any;
29
31
  accessTokenTimerId: any;
30
32
  IdToken: any;
31
- constructor(router: Router, aclService: AnnaLibAclService, libraryConfig: LibraryConfig, consumingProjectAuthService: IAuthService);
33
+ constructor(router: Router, aclService: AnnaLibAclService, libraryConfig: LibraryConfig, httpClient: HttpClient, consumingProjectAuthService: IAuthService);
32
34
  ngOnInit(): void;
33
35
  /***
34
36
  1. takes user pool data (userPool ID and client ID)
@@ -39,7 +41,7 @@ export declare class AnnaLibAuthService {
39
41
  sessionTimeout(): void;
40
42
  refreshAccessToken(): void;
41
43
  computeTokenExpiration(token: any): number;
42
- getCurrentUserDetails(): CognitoUser | null;
44
+ getCurrentUserDetails(): CognitoUser;
43
45
  getCognitoUserDetails(email: string): CognitoUser;
44
46
  authenticate(email: string, password: string): void;
45
47
  CognitoAuthentication(authenticationDetails: AuthenticationDetails): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@annalib/anna-cognito-lib",
3
- "version": "0.2.6",
3
+ "version": "0.2.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.2.0",
6
6
  "@angular/core": "^13.2.0",