UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

75 lines 10.4 kB
import { Component, Output, EventEmitter, Input } from '@angular/core'; import { UserService } from '@c8y/client'; import { AlertService } from '../alert/alert.service'; import { LoginService } from './login.service'; import { LoginViews } from './login.model'; import { gettext } from '../i18n/gettext'; import * as i0 from "@angular/core"; import * as i1 from "./login.service"; import * as i2 from "@c8y/client"; import * as i3 from "../alert/alert.service"; import * as i4 from "../i18n/c8y-translate.directive"; import * as i5 from "@angular/common"; import * as i6 from "../authentication/totp-challenge.component"; import * as i7 from "../authentication/totp-setup.component"; export class TotpAuthComponent { constructor(loginService, userService, alert) { this.loginService = loginService; this.userService = userService; this.alert = alert; this.onCancel = new EventEmitter(); this.LOGIN_VIEWS = LoginViews; this.loading = false; this.hasError = false; this.isSetup = false; } /** * In case of a setup we need the user to be authorized * first. */ async ngOnInit() { if (this.view === this.LOGIN_VIEWS.TotpSetup) { await this.loginService.switchLoginMode(this.credentials); this.isSetup = true; } } async onTotpSuccess(code) { try { this.loading = true; this.hasError = false; this.credentials.tfa = code; if (this.isSetup) { await this.userService.activateTotp(); } await this.loginService.switchLoginMode(this.credentials); await this.loginService.verifyAppAccess(); await this.loginService.authFulfilled(); } catch (e) { this.alert.removeLastDanger(); if (e.data && e.data.message === 'Authentication failed! : User account is locked') { this.alert.warning(gettext('Authentication failed due to: user account is locked.')); } else { this.alert.addServerFailure(e); this.hasError = true; } } finally { this.loading = false; } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TotpAuthComponent, deps: [{ token: i1.LoginService }, { token: i2.UserService }, { token: i3.AlertService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TotpAuthComponent, selector: "c8y-totp-auth", inputs: { credentials: "credentials", view: "view" }, outputs: { onCancel: "onCancel" }, ngImport: i0, template: "<div\n class=\"legend form-block center\"\n translate\n>\n Two-factor authentication\n</div>\n\n<c8y-totp-setup *ngIf=\"isSetup\">\n</c8y-totp-setup>\n<c8y-totp-challenge\n [isModal]=\"false\"\n [loading]=\"loading\"\n [hasError]=\"hasError\"\n [verify]=\"view === LOGIN_VIEWS.TotpSetup\"\n (onSuccess)=\"onTotpSuccess($event)\"\n (totpUnconfirmedEmitter)=\"onCancel.emit()\"\n></c8y-totp-challenge>\n\n", dependencies: [{ kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.TotpChallengeComponent, selector: "c8y-totp-challenge", inputs: ["verify", "loading", "hasError", "isModal"], outputs: ["onSuccess", "totpUnconfirmedEmitter"] }, { kind: "component", type: i7.TotpSetupComponent, selector: "c8y-totp-setup" }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TotpAuthComponent, decorators: [{ type: Component, args: [{ selector: 'c8y-totp-auth', template: "<div\n class=\"legend form-block center\"\n translate\n>\n Two-factor authentication\n</div>\n\n<c8y-totp-setup *ngIf=\"isSetup\">\n</c8y-totp-setup>\n<c8y-totp-challenge\n [isModal]=\"false\"\n [loading]=\"loading\"\n [hasError]=\"hasError\"\n [verify]=\"view === LOGIN_VIEWS.TotpSetup\"\n (onSuccess)=\"onTotpSuccess($event)\"\n (totpUnconfirmedEmitter)=\"onCancel.emit()\"\n></c8y-totp-challenge>\n\n" }] }], ctorParameters: () => [{ type: i1.LoginService }, { type: i2.UserService }, { type: i3.AlertService }], propDecorators: { credentials: [{ type: Input }], view: [{ type: Input }], onCancel: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG90cC1hdXRoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvbG9naW4vdG90cC1hdXRoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvbG9naW4vdG90cC1hdXRoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFnQixXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBTTFDLE1BQU0sT0FBTyxpQkFBaUI7SUFTNUIsWUFDUyxZQUEwQixFQUN6QixXQUF3QixFQUN4QixLQUFtQjtRQUZwQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN6QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBVG5CLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBQ3pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixZQUFPLEdBQUcsS0FBSyxDQUFDO0lBTWIsQ0FBQztJQUVKOzs7T0FHRztJQUNILEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDN0MsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUk7UUFDdEIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqQixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEMsQ0FBQztZQUNELE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzFELE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDMUMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLGlEQUFpRCxFQUFFLENBQUM7Z0JBQ25GLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyx1REFBdUQsQ0FBQyxDQUFDLENBQUM7WUFDdkYsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQzsrR0FoRFUsaUJBQWlCO21HQUFqQixpQkFBaUIsOElDWDlCLDhaQWtCQTs7NEZEUGEsaUJBQWlCO2tCQUo3QixTQUFTOytCQUNFLGVBQWU7c0lBSWhCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJQ3JlZGVudGlhbHMsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9naW5WaWV3cyB9IGZyb20gJy4vbG9naW4ubW9kZWwnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4vZ2V0dGV4dCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS10b3RwLWF1dGgnLFxuICB0ZW1wbGF0ZVVybDogJy4vdG90cC1hdXRoLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBUb3RwQXV0aENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGNyZWRlbnRpYWxzOiBJQ3JlZGVudGlhbHM7XG4gIEBJbnB1dCgpIHZpZXc6IExvZ2luVmlld3M7XG4gIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgTE9HSU5fVklFV1MgPSBMb2dpblZpZXdzO1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIGhhc0Vycm9yID0gZmFsc2U7XG4gIGlzU2V0dXAgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbG9naW5TZXJ2aWNlOiBMb2dpblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogSW4gY2FzZSBvZiBhIHNldHVwIHdlIG5lZWQgdGhlIHVzZXIgdG8gYmUgYXV0aG9yaXplZFxuICAgKiBmaXJzdC5cbiAgICovXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnZpZXcgPT09IHRoaXMuTE9HSU5fVklFV1MuVG90cFNldHVwKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvZ2luU2VydmljZS5zd2l0Y2hMb2dpbk1vZGUodGhpcy5jcmVkZW50aWFscyk7XG4gICAgICB0aGlzLmlzU2V0dXAgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uVG90cFN1Y2Nlc3MoY29kZSkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgICAgdGhpcy5jcmVkZW50aWFscy50ZmEgPSBjb2RlO1xuICAgICAgaWYgKHRoaXMuaXNTZXR1cCkge1xuICAgICAgICBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLmFjdGl2YXRlVG90cCgpO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5sb2dpblNlcnZpY2Uuc3dpdGNoTG9naW5Nb2RlKHRoaXMuY3JlZGVudGlhbHMpO1xuICAgICAgYXdhaXQgdGhpcy5sb2dpblNlcnZpY2UudmVyaWZ5QXBwQWNjZXNzKCk7XG4gICAgICBhd2FpdCB0aGlzLmxvZ2luU2VydmljZS5hdXRoRnVsZmlsbGVkKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5hbGVydC5yZW1vdmVMYXN0RGFuZ2VyKCk7XG4gICAgICBpZiAoZS5kYXRhICYmIGUuZGF0YS5tZXNzYWdlID09PSAnQXV0aGVudGljYXRpb24gZmFpbGVkISA6IFVzZXIgYWNjb3VudCBpcyBsb2NrZWQnKSB7XG4gICAgICAgIHRoaXMuYWxlcnQud2FybmluZyhnZXR0ZXh0KCdBdXRoZW50aWNhdGlvbiBmYWlsZWQgZHVlIHRvOiB1c2VyIGFjY291bnQgaXMgbG9ja2VkLicpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShlKTtcbiAgICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrIGNlbnRlclwiXG4gIHRyYW5zbGF0ZVxuPlxuICBUd28tZmFjdG9yIGF1dGhlbnRpY2F0aW9uXG48L2Rpdj5cblxuPGM4eS10b3RwLXNldHVwICpuZ0lmPVwiaXNTZXR1cFwiPlxuPC9jOHktdG90cC1zZXR1cD5cbjxjOHktdG90cC1jaGFsbGVuZ2VcbiAgW2lzTW9kYWxdPVwiZmFsc2VcIlxuICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgW2hhc0Vycm9yXT1cImhhc0Vycm9yXCJcbiAgW3ZlcmlmeV09XCJ2aWV3ID09PSBMT0dJTl9WSUVXUy5Ub3RwU2V0dXBcIlxuICAob25TdWNjZXNzKT1cIm9uVG90cFN1Y2Nlc3MoJGV2ZW50KVwiXG4gICh0b3RwVW5jb25maXJtZWRFbWl0dGVyKT1cIm9uQ2FuY2VsLmVtaXQoKVwiXG4+PC9jOHktdG90cC1jaGFsbGVuZ2U+XG5cbiJdfQ==