ngx-captcha
Version:
Dynamic captcha (Google reCaptcha) implementation for Angular
89 lines • 10.7 kB
JavaScript
import { Component, ElementRef, forwardRef, Injector, Input, NgZone, Renderer2, ViewChild, } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { ReCaptchaType } from '../models/recaptcha-type.enum';
import { ScriptService } from '../services/script.service';
import { BaseReCaptchaComponentDirective } from './base-re-captcha-component.directive';
import * as i0 from "@angular/core";
import * as i1 from "../services/script.service";
export class InvisibleReCaptchaComponent extends BaseReCaptchaComponentDirective {
constructor(renderer, zone, injector, scriptService) {
super(renderer, zone, injector, scriptService);
this.renderer = renderer;
this.zone = zone;
this.injector = injector;
this.scriptService = scriptService;
/**
* This size representing invisible captcha
*/
this.size = 'invisible';
/**
* Theme
*/
this.theme = 'light';
/**
* Badge
*/
this.badge = 'bottomright';
this.recaptchaType = ReCaptchaType.InvisibleReCaptcha;
}
ngOnChanges(changes) {
super.ngOnChanges(changes);
}
/**
* Programatically invoke the reCAPTCHA check. Used if the invisible reCAPTCHA is on a div instead of a button.
*/
execute() {
// execute captcha
this.zone.runOutsideAngular(() => this.reCaptchaApi.execute(this.captchaId));
}
captchaSpecificSetup() {
}
/**
* Gets reCaptcha properties
*/
getCaptchaProperties() {
return {
'sitekey': this.siteKey,
'callback': (response) => this.zone.run(() => this.handleCallback(response)),
'expired-callback': () => this.zone.run(() => this.handleExpireCallback()),
'error-callback': () => this.zone.run(() => this.handleErrorCallback()),
'badge': this.badge,
'type': this.type,
'tabindex': this.tabIndex,
'size': this.size,
'theme': this.theme
};
}
}
/** @nocollapse */ InvisibleReCaptchaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: InvisibleReCaptchaComponent, deps: [{ token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.Injector }, { token: i1.ScriptService }], target: i0.ɵɵFactoryTarget.Component });
/** @nocollapse */ InvisibleReCaptchaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: InvisibleReCaptchaComponent, selector: "ngx-invisible-recaptcha", inputs: { theme: "theme", badge: "badge" }, providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((() => InvisibleReCaptchaComponent)),
multi: true,
}
], viewQueries: [{ propertyName: "captchaWrapperElem", first: true, predicate: ["captchaWrapperElem"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
<div #captchaWrapperElem></div>`, isInline: true });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: InvisibleReCaptchaComponent, decorators: [{
type: Component,
args: [{
selector: 'ngx-invisible-recaptcha',
template: `
<div #captchaWrapperElem></div>`,
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((() => InvisibleReCaptchaComponent)),
multi: true,
}
]
}]
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.Injector }, { type: i1.ScriptService }]; }, propDecorators: { theme: [{
type: Input
}], badge: [{
type: Input
}], captchaWrapperElem: [{
type: ViewChild,
args: ['captchaWrapperElem', { static: false }]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXNpYmxlLXJlY2FwdGNoYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW52aXNpYmxlLXJlY2FwdGNoYS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFFVCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBY3hGLE1BQU0sT0FBTywyQkFBNEIsU0FBUSwrQkFBK0I7SUFxQjlFLFlBQ1ksUUFBbUIsRUFDbkIsSUFBWSxFQUNaLFFBQWtCLEVBQ2xCLGFBQTRCO1FBRXRDLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUxyQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBdkJ4Qzs7V0FFRztRQUNnQixTQUFJLEdBQUcsV0FBVyxDQUFDO1FBRXRDOztXQUVHO1FBQ00sVUFBSyxHQUFxQixPQUFPLENBQUM7UUFFM0M7O1dBRUc7UUFDTSxVQUFLLEdBQTRDLGFBQWEsQ0FBQztRQUk5RCxrQkFBYSxHQUFrQixhQUFhLENBQUMsa0JBQWtCLENBQUM7SUFTMUUsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRVMsb0JBQW9CO0lBQzlCLENBQUM7SUFFRDs7TUFFRTtJQUNRLG9CQUFvQjtRQUM1QixPQUFPO1lBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3ZCLFVBQVUsRUFBRSxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqRixrQkFBa0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUMxRSxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUN2RSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2pCLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN6QixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ3BCLENBQUM7SUFDSixDQUFDOzsySUE1RFUsMkJBQTJCOytIQUEzQiwyQkFBMkIsOEZBUjNCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLENBQUMsMkJBQTJCLEVBQUM7WUFDMUQsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLGdNQVJTO2tDQUNzQjsyRkFTckIsMkJBQTJCO2tCQVp2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRTtrQ0FDc0I7b0JBQ2hDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSw0QkFBNEIsRUFBQzs0QkFDMUQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7d0tBV1UsS0FBSztzQkFBYixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFFOEMsa0JBQWtCO3NCQUFyRSxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgZm9yd2FyZFJlZixcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxuICBOZ1pvbmUsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBSZUNhcHRjaGFUeXBlIH0gZnJvbSAnLi4vbW9kZWxzL3JlY2FwdGNoYS10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBTY3JpcHRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2NyaXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlUmVDYXB0Y2hhQ29tcG9uZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9iYXNlLXJlLWNhcHRjaGEtY29tcG9uZW50LmRpcmVjdGl2ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25neC1pbnZpc2libGUtcmVjYXB0Y2hhJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gIDxkaXYgI2NhcHRjaGFXcmFwcGVyRWxlbT48L2Rpdj5gLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW52aXNpYmxlUmVDYXB0Y2hhQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW52aXNpYmxlUmVDYXB0Y2hhQ29tcG9uZW50IGV4dGVuZHMgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgc2l6ZSByZXByZXNlbnRpbmcgaW52aXNpYmxlIGNhcHRjaGFcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2l6ZSA9ICdpbnZpc2libGUnO1xyXG5cclxuICAvKipcclxuICAgKiBUaGVtZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRoZW1lOiAnZGFyaycgfCAnbGlnaHQnID0gJ2xpZ2h0JztcclxuXHJcbiAgLyoqXHJcbiAgICogQmFkZ2VcclxuICAgKi9cclxuICBASW5wdXQoKSBiYWRnZTogJ2JvdHRvbXJpZ2h0JyB8ICdib3R0b21sZWZ0JyB8ICdpbmxpbmUnID0gJ2JvdHRvbXJpZ2h0JztcclxuXHJcbiAgQFZpZXdDaGlsZCgnY2FwdGNoYVdyYXBwZXJFbGVtJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNhcHRjaGFXcmFwcGVyRWxlbT86IEVsZW1lbnRSZWY7XHJcblxyXG4gIHByb3RlY3RlZCByZWNhcHRjaGFUeXBlOiBSZUNhcHRjaGFUeXBlID0gUmVDYXB0Y2hhVHlwZS5JbnZpc2libGVSZUNhcHRjaGE7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcm90ZWN0ZWQgem9uZTogTmdab25lLFxyXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByb3RlY3RlZCBzY3JpcHRTZXJ2aWNlOiBTY3JpcHRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihyZW5kZXJlciwgem9uZSwgaW5qZWN0b3IsIHNjcmlwdFNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm9ncmFtYXRpY2FsbHkgaW52b2tlIHRoZSByZUNBUFRDSEEgY2hlY2suIFVzZWQgaWYgdGhlIGludmlzaWJsZSByZUNBUFRDSEEgaXMgb24gYSBkaXYgaW5zdGVhZCBvZiBhIGJ1dHRvbi5cclxuICAgKi9cclxuICBleGVjdXRlKCk6IHZvaWQge1xyXG4gICAgLy8gZXhlY3V0ZSBjYXB0Y2hhXHJcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdGhpcy5yZUNhcHRjaGFBcGkuZXhlY3V0ZSh0aGlzLmNhcHRjaGFJZCkpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGNhcHRjaGFTcGVjaWZpY1NldHVwKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBHZXRzIHJlQ2FwdGNoYSBwcm9wZXJ0aWVzXHJcbiAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0Q2FwdGNoYVByb3BlcnRpZXMoKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICdzaXRla2V5JzogdGhpcy5zaXRlS2V5LFxyXG4gICAgICAnY2FsbGJhY2snOiAocmVzcG9uc2U6IGFueSkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmhhbmRsZUNhbGxiYWNrKHJlc3BvbnNlKSksXHJcbiAgICAgICdleHBpcmVkLWNhbGxiYWNrJzogKCkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmhhbmRsZUV4cGlyZUNhbGxiYWNrKCkpLFxyXG4gICAgICAnZXJyb3ItY2FsbGJhY2snOiAoKSA9PiB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMuaGFuZGxlRXJyb3JDYWxsYmFjaygpKSxcclxuICAgICAgJ2JhZGdlJzogdGhpcy5iYWRnZSxcclxuICAgICAgJ3R5cGUnOiB0aGlzLnR5cGUsXHJcbiAgICAgICd0YWJpbmRleCc6IHRoaXMudGFiSW5kZXgsXHJcbiAgICAgICdzaXplJzogdGhpcy5zaXplLFxyXG4gICAgICAndGhlbWUnOiB0aGlzLnRoZW1lXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcblxyXG59XHJcblxyXG4iXX0=