UNPKG

@phemium-costaisa/fingerprint-auth

Version:

Automatic plugin to work with FaceID and TouchID authentication

47 lines 9.26 kB
import { ChangeDetectionStrategy, Component } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { NavController } from '@ionic/angular'; import { from } from 'rxjs'; import { FingerprintService } from '../service/fingerprint.service'; export class BiometricActivator { constructor(navCntrl, route, fingerprintService) { this.navCntrl = navCntrl; this.route = route; this.fingerprintService = fingerprintService; this.biometrics$ = from(this.fingerprintService.retrieveDeviceBiometrics()); } close() { const callbackUrl = this.route.snapshot.queryParamMap.get('callbackUrl'); this.navCntrl.navigateForward(callbackUrl); } activateFaceID() { const callbackUrl = this.route.snapshot.queryParamMap.get('callbackUrl'); const password = this.route.snapshot.queryParamMap.get('password'); const user = this.route.snapshot.queryParamMap.get('user'); this.fingerprintService.activateFaceID(user, password).then(() => { this.navCntrl.navigateForward(callbackUrl); }); } activateTouchID() { const callbackUrl = this.route.snapshot.queryParamMap.get('callbackUrl'); const password = this.route.snapshot.queryParamMap.get('password'); const user = this.route.snapshot.queryParamMap.get('user'); this.fingerprintService.activateTouchID(user, password).then(() => { this.navCntrl.navigateForward(callbackUrl); }); } } BiometricActivator.decorators = [ { type: Component, args: [{ selector: 'app-biometric-activator', template: "<ion-content class=\"ion-padding-horizontal\">\r\n <ion-icon class=\"close-btn\" name=\"close-outline\" color=\"secondary\" (click)=\"close()\"></ion-icon>\r\n <ion-grid *ngIf=\"biometrics$ | async as biometrics\" class=\"p-0\">\r\n \r\n <!-- IF FACEID AND NOT TOUCHID -->\r\n <ng-container *ngIf=\"biometrics.face && !biometrics.touch\">\r\n <ion-row>\r\n <ion-col class=\"px-5\">\r\n <h1 class=\"ion-text-left mt-5\">{{ 'LOGIN-FACEID'| translate }}</h1>\r\n <span class=\"my-4\">{{ 'FACEID-NOT-SETTED'| translate }}</span><br/>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row >\r\n <ion-col>\r\n <img class=\"icon-bio\" src=\"/assets/icon/face-id-bio.svg\" />\r\n </ion-col>\r\n </ion-row>\r\n \r\n <ion-button class=\"btn\" color=\"primary\" (click)=\"activateFaceID()\">\r\n {{ 'FACEID-SET' | translate }}\r\n </ion-button>\r\n </ng-container>\r\n <!-- END IF FACEID -->\r\n \r\n <!-- IF TOUCHID -->\r\n <ng-container *ngIf=\"biometrics.touch\">\r\n <ion-row>\r\n <ion-col class=\"px-5\">\r\n <h1 class=\"ion-text-left mt-5\">{{ 'LOGIN-TOUCH-ID'| translate }}</h1>\r\n <p class=\"my-4\">{{ 'TOUCH-ID-NOT-SETTED'| translate }}</p>\r\n </ion-col>\r\n </ion-row>\r\n \r\n <ion-row>\r\n <ion-col>\r\n <img class=\"icon-bio\" src=\"/assets/icon/Icon_Touch_ID-bio.svg\" />\r\n </ion-col>\r\n </ion-row>\r\n \r\n <ion-button class=\"btn\" color=\"primary\" (click)=\"activateTouchID()\">\r\n {{ 'TOUCH-ID-SET' | translate }}\r\n </ion-button>\r\n </ng-container>\r\n <!-- END IF TOUCHID -->\r\n \r\n </ion-grid>\r\n</ion-content> ", changeDetection: ChangeDetectionStrategy.OnPush, styles: ["ion-content{--padding-start: 0;--padding-end: 0}ion-grid{height:100%;display:flex;flex-direction:column;justify-content:space-between}ion-content h1{font-size:1.6em!important}ion-content p{font-size:1.6m!important}img{position:absolute;left:0;right:0;margin:0 auto;top:50%;bottom:50%;transform:translateY(-50%);height:15vh;fill:#c4c8cb!important}\n"] },] } ]; BiometricActivator.ctorParameters = () => [ { type: NavController }, { type: ActivatedRoute }, { type: FingerprintService } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlvbWV0cmljLWFjdGl2YXRvci5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmluZ2VycHJpbnRBdXRoL3NyYy9saWIvYmlvbWV0cmljLWFjdGl2YXRvci9iaW9tZXRyaWMtYWN0aXZhdG9yLnBhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUF1QixrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBUXpGLE1BQU0sT0FBTyxrQkFBa0I7SUFJN0IsWUFDVSxRQUF1QixFQUN2QixLQUFxQixFQUNyQixrQkFBc0M7UUFGdEMsYUFBUSxHQUFSLFFBQVEsQ0FBZTtRQUN2QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBRTlDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELEtBQUs7UUFDSCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUMvRCxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNoRSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7OztZQXZDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsbzlEQUE4QztnQkFFOUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUFUUSxhQUFhO1lBRGIsY0FBYztZQUdPLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJpb21ldHJpY3NBdmFpbGFibGUsIEZpbmdlcnByaW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvZmluZ2VycHJpbnQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1iaW9tZXRyaWMtYWN0aXZhdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmlvbWV0cmljLWFjdGl2YXRvci5wYWdlLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Jpb21ldHJpYy1hY3RpdmF0b3IucGFnZS5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEJpb21ldHJpY0FjdGl2YXRvciB7XHJcblxyXG4gIGJpb21ldHJpY3MkOiBPYnNlcnZhYmxlPEJpb21ldHJpY3NBdmFpbGFibGU+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmF2Q250cmw6IE5hdkNvbnRyb2xsZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgZmluZ2VycHJpbnRTZXJ2aWNlOiBGaW5nZXJwcmludFNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuYmlvbWV0cmljcyQgPSBmcm9tKHRoaXMuZmluZ2VycHJpbnRTZXJ2aWNlLnJldHJpZXZlRGV2aWNlQmlvbWV0cmljcygpKTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgY29uc3QgY2FsbGJhY2tVcmwgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdjYWxsYmFja1VybCcpO1xyXG4gICAgdGhpcy5uYXZDbnRybC5uYXZpZ2F0ZUZvcndhcmQoY2FsbGJhY2tVcmwpO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGVGYWNlSUQoKSB7XHJcbiAgICBjb25zdCBjYWxsYmFja1VybCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ2NhbGxiYWNrVXJsJyk7XHJcbiAgICBjb25zdCBwYXNzd29yZCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ3Bhc3N3b3JkJyk7XHJcbiAgICBjb25zdCB1c2VyID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCgndXNlcicpO1xyXG4gICAgdGhpcy5maW5nZXJwcmludFNlcnZpY2UuYWN0aXZhdGVGYWNlSUQodXNlciwgcGFzc3dvcmQpLnRoZW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLm5hdkNudHJsLm5hdmlnYXRlRm9yd2FyZChjYWxsYmFja1VybCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGVUb3VjaElEKCkge1xyXG4gICAgY29uc3QgY2FsbGJhY2tVcmwgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdjYWxsYmFja1VybCcpO1xyXG4gICAgY29uc3QgcGFzc3dvcmQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdwYXNzd29yZCcpO1xyXG4gICAgY29uc3QgdXNlciA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ3VzZXInKTtcclxuICAgIHRoaXMuZmluZ2VycHJpbnRTZXJ2aWNlLmFjdGl2YXRlVG91Y2hJRCh1c2VyLCBwYXNzd29yZCkudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMubmF2Q250cmwubmF2aWdhdGVGb3J3YXJkKGNhbGxiYWNrVXJsKTtcclxuICAgIH0pXHJcbiAgfVxyXG59Il19