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
JavaScript
(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