UNPKG

moh-common-lib

Version:

A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).

324 lines (315 loc) 15.2 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('ng-recaptcha'), require('@angular/core'), require('@angular/common/http'), require('@angular/common')) : typeof define === 'function' && define.amd ? define('moh-common-lib/recaptcha', ['exports', 'ng-recaptcha', '@angular/core', '@angular/common/http', '@angular/common'], factory) : (factory((global['moh-common-lib'] = global['moh-common-lib'] || {}, global['moh-common-lib'].recaptcha = {}),global.ngRecaptcha,global.ng.core,global.ng.common.http,global.ng.common)); }(this, (function (exports,ngRecaptcha,core,http,common) { 'use strict'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var RecaptchaDataService = /** @class */ (function () { function RecaptchaDataService(httpClient) { this.httpClient = httpClient; } /** * @param {?} apiBaseUrl * @param {?} nonce * @param {?} token * @return {?} */ RecaptchaDataService.prototype.verifyRecaptcha = /** * @param {?} apiBaseUrl * @param {?} nonce * @param {?} token * @return {?} */ function (apiBaseUrl, nonce, token) { return this.httpClient .post(apiBaseUrl + '/verify/captcha', { nonce: nonce, token: token }, { observe: 'response' }); }; RecaptchaDataService.decorators = [ { type: core.Injectable } ]; /** @nocollapse */ RecaptchaDataService.ctorParameters = function () { return [ { type: http.HttpClient } ]; }; return RecaptchaDataService; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var RecaptchaComponent = /** @class */ (function () { function RecaptchaComponent(dataService, _renderer, _http) { this.dataService = dataService; this._renderer = _renderer; this._http = _http; this.language = 'en'; this.onValidToken = new core.EventEmitter(); this.errorVerifyAnswer = null; /** * ************************ * * Translated Messages ** * * *UPDATE REQUIRED* ** * ************************** */ this.translatedMessages = { playAudio: { en: 'Play Audio', zh: '播放声音', fr: 'Lecture audio', pa: 'ਆਡੀਓ ਚਲਾਓ', }, tryAnotherImg: { en: 'Try another image', zh: '换个图像', fr: 'Essayez une autre image', pa: 'ਕੋਈ ਹੋਰ ਚਿੱਤਰ ਅਜ਼ਮਾਓ', }, userPromptMessage: { en: 'Enter the text you either see in the box or you hear in the audio', zh: '请输入看到或听到的文字', fr: 'Entrez le texte que vous voyez dans la case ou que vous entendez dans le son', pa: 'ਉਹ ਟੈਕਸਟ ਦਾਖਲ ਕਰੋ ਜੋ ਤੁਸੀਂ ਬਕਸੇ ਵਿੱਚ ਦੇਖਦੇ ਹੋ ਜਾਂ ਤੁਸੀਂ ਆਡੀਓ ਵਿੱਚ ਸੁਣਦੇ ਹੋ', }, incorrectAnswer: { en: 'Incorrect answer, please try again.', zh: '答案不对。请重试。', fr: 'Mauvaise réponse, veuillez réessayer.', pa: 'ਗਲਤ ਜਵਾਬ, ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ.', }, successMessage: { en: 'You can submit your application now.', zh: '你现在可以提交申请了。', fr: 'Vous pouvez soumettre votre candidature maintenant.', pa: 'ਤੁਸੀਂ ਆਪਣੀ ਅਰਜ਼ੀ ਹੁਣੇ ਪੇਸ਼ ਕਰ ਸਕਦੇ ਹੋ', }, correct: { en: 'Correct.', zh: '正确。', fr: 'Correct.', pa: 'ਸਹੀ ਕਰੋ', }, loadingImage: { en: 'Loading CAPTCHA image', zh: '正在下载验证码', fr: 'Chargement de l\'image CAPTCHA', pa: 'ਕੈਪਟਚਾ ਚਿੱਤਰ ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ', }, browserNotSupportAudio: { en: 'Your browser does not support the audio element.', zh: '你的浏览器不支持播音', fr: 'Votre navigateur ne supporte pas l\'élément audio.', pa: 'ਤੁਹਾਡਾ ਬ੍ਰਾਉਜ਼ਰ ਆਡੀਓ ਐਲੀਮੈਂਟ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ.', }, verifyingAnswer: { en: 'Verifying your answer...', zh: '正在验证答案...', fr: 'Vérification de votre réponse ...', pa: 'ਤੁਹਾਡਾ ਜਵਾਬ ਤਸਦੀਕ ਕਰ ਰਿਹਾ ਹੈ ...', }, errorRetrievingImg: { en: 'Error happened while retrieving CAPTCHA image. Please {{Click Here}} to try again', zh: '验证码下载错误。请{{点击这里}}重试', fr: 'Une erreur s\'est produite lors de la récupération de l\'image CAPTCHA. S\'il vous plaît {{Cliquez Ici}} pour réessayer', pa: 'ਕੈਪਟਚਾ ਚਿੱਤਰ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਦੇ ਸਮੇਂ ਤਰੁੱਟੀ ਉਤਪੰਨ ਹੋਈ. ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਲਈ {{ਇੱਥੇ ਕਲਿਕ ਕਰੋ}}', }, errorVerifyingAnswer: { en: 'Error happened while verifying your answer. Please {{Click Here}} to try again', zh: '验证答案过程发生错误。请{{点击这里}}重试', fr: 'Une erreur s\'est produite lors de la vérification de votre réponse. S\'il vous plaît {{Cliquez Ici}} pour réessayer', pa: 'ਤੁਹਾਡਾ ਜਵਾਬ ਤਸਦੀਕ ਕਰਨ ਵੇਲੇ ਗਲਤੀ ਆਈ ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਲਈ {{ਇੱਥੇ ਕਲਿਕ ਕਰੋ}}', }, }; } /** * @return {?} */ RecaptchaComponent.prototype.ngOnInit = /** * @return {?} */ function () { /** @type {?} */ var script = this._renderer.createElement('script'); script.defer = true; script.async = true; script.src = "https://www.google.com/recaptcha/api.js"; this._renderer.appendChild(document.body, script); }; /** * @param {?} token * @return {?} */ RecaptchaComponent.prototype.resolved = /** * @param {?} token * @return {?} */ function (token) { var _this = this; console.log(token); this.state = CAPTCHA_STATE.VERIFYING_TOKEN; this.dataService.verifyRecaptcha(this.apiBaseUrl, this.nonce, token).subscribe(( /** * @param {?} response * @return {?} */function (response) { /** @type {?} */ var payload = response.body; if (_this.isValidPayload(payload)) { _this.state = CAPTCHA_STATE.SUCCESS_VERIFY_ANSWER_CORRECT; _this.onValidToken.emit(payload.jwt); } else { _this.state = CAPTCHA_STATE.ERROR_VERIFY; _this.errorVerifyAnswer = _this.createErrorTextLine(response); } })); }; /** * Case where HTTP 200 response code is received by the payload is incorrect or corrupt. * The occurance of this type of case should be rare. * @param payload */ /** * Case where HTTP 200 response code is received by the payload is incorrect or corrupt. * The occurance of this type of case should be rare. * @private * @param {?} payload * @return {?} */ RecaptchaComponent.prototype.isValidPayload = /** * Case where HTTP 200 response code is received by the payload is incorrect or corrupt. * The occurance of this type of case should be rare. * @private * @param {?} payload * @return {?} */ function (payload) { if (!payload) { console.error('payload cannot be null or undefined or 0'); return false; } else { /** @type {?} */ var hasValidProp = payload.hasOwnProperty('valid'); console.log("hasValidProp:", hasValidProp); if (hasValidProp) { console.log("payload.valid:", payload.valid); console.log("typeof payload.valid:", typeof payload.valid); } if (!hasValidProp || payload.valid === false) { console.error('Error verifying captcha'); return false; } else { return true; } } }; /** * @private * @param {?} error * @return {?} */ RecaptchaComponent.prototype.createErrorTextLine = /** * @private * @param {?} error * @return {?} */ function (error) { /** @type {?} */ var line = 'Error status: ' + error.status; if (error.statusText) { line = line + ', status text: ' + error.statusText; } return line; }; RecaptchaComponent.decorators = [ { type: core.Component, args: [{ selector: 'common-recaptcha', template: "<div class=\"bcgov-recaptcha\">\r\n <re-captcha (resolved)=\"resolved($event)\" siteKey={{publicKey}}>\r\n </re-captcha>\r\n\r\n <div class=\"error-captcha\" *ngIf=\"state === 6\" role=\"alert\" aria-live=\"assertive\">\r\n <svg class=\"icon-exclamation-triangle\"><use xlink:href=\"#icon-exclamation-triangle-def\"></use></svg>\r\n <span>{{translatedMessages.errorVerifyingAnswer[language].substring(0,translatedMessages.errorVerifyingAnswer[language].indexOf('{'))}}\r\n {{translatedMessages.errorVerifyingAnswer[language].substring(translatedMessages.errorVerifyingAnswer[language].lastIndexOf('}')+1)}}\r\n </span>\r\n <p>\r\n </p>\r\n </div>\r\n</div>\r\n", styles: [""] }] } ]; /** @nocollapse */ RecaptchaComponent.ctorParameters = function () { return [ { type: RecaptchaDataService }, { type: core.Renderer2 }, { type: http.HttpClient } ]; }; RecaptchaComponent.propDecorators = { apiBaseUrl: [{ type: core.Input, args: ['apiBaseUrl',] }], nonce: [{ type: core.Input, args: ['nonce',] }], publicKey: [{ type: core.Input, args: ['publicKey',] }], language: [{ type: core.Input, args: ['language',] }], onValidToken: [{ type: core.Output }] }; return RecaptchaComponent; }()); /** @enum {number} */ var CAPTCHA_STATE = { VERIFYING_TOKEN: 1, SUCCESS_VERIFY_ANSWER_CORRECT: 2, ERROR_VERIFY: 3, }; CAPTCHA_STATE[CAPTCHA_STATE.VERIFYING_TOKEN] = 'VERIFYING_TOKEN'; CAPTCHA_STATE[CAPTCHA_STATE.SUCCESS_VERIFY_ANSWER_CORRECT] = 'SUCCESS_VERIFY_ANSWER_CORRECT'; CAPTCHA_STATE[CAPTCHA_STATE.ERROR_VERIFY] = 'ERROR_VERIFY'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var ReCaptchaModule = /** @class */ (function () { function ReCaptchaModule() { } /** * @return {?} */ ReCaptchaModule.forRoot = /** * @return {?} */ function () { return { ngModule: ReCaptchaModule, providers: [RecaptchaDataService] }; }; ReCaptchaModule.decorators = [ { type: core.NgModule, args: [{ declarations: [ RecaptchaComponent ], imports: [ http.HttpClientModule, common.CommonModule, ngRecaptcha.RecaptchaModule, ngRecaptcha.RecaptchaFormsModule, ], providers: [ RecaptchaDataService ], exports: [ RecaptchaComponent ], },] } ]; return ReCaptchaModule; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ exports.ReCaptchaModule = ReCaptchaModule; exports.ɵb = RecaptchaDataService; exports.ɵa = RecaptchaComponent; Object.defineProperty(exports, '__esModule', { value: true }); }))); //# sourceMappingURL=moh-common-lib-recaptcha.umd.js.map