UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

94 lines 11.3 kB
import { Injectable } from '@angular/core'; import { PasswordStrength } from '@c8y/client'; import { filter } from 'lodash-es'; import { gettext } from '../i18n/gettext'; import { PasswordConfirmModalComponent } from './password-confirm-modal.component'; import { BsModalService } from 'ngx-bootstrap/modal'; import { take } from 'rxjs/operators'; import { CurrentPasswordModalComponent } from './current-password-modal.component'; import * as i0 from "@angular/core"; import * as i1 from "ngx-bootstrap/modal"; export class PasswordService { constructor(modalService) { this.modalService = modalService; this.DEFAULT_PASSWORD_MIN_LENGTH = 8; this.GREEN = { colorName: 'green', color: 'rgb(0, 128, 0)', description: gettext('strong'), passwordStrength: PasswordStrength.GREEN }; this.YELLOW = { colorName: 'yellow', color: 'rgb(255, 204, 51)', description: gettext('medium'), passwordStrength: PasswordStrength.YELLOW }; this.RED = { colorName: 'red', color: 'rgb(170, 0, 51)', description: gettext('weak'), passwordStrength: PasswordStrength.RED }; } confirmPassword() { const modalInstance = this.modalService.show(PasswordConfirmModalComponent, { ariaDescribedby: 'modal-body', ariaLabelledBy: 'modal-title' }); const passwordConfirmedEmitter = modalInstance.content.passwordConfirmedEmitter; return passwordConfirmedEmitter.pipe(take(1)); } /** * Returns an observable with the password provided by user: * - `string` when user provided a value * - `null` when user cancelled the modal */ currentPassword() { const modalInstance = this.modalService.show(CurrentPasswordModalComponent, { class: 'modal-sm', ariaDescribedby: 'modal-body', ariaLabelledBy: 'modal-title' }); const currentPasswordEmitter = modalInstance.content.currentPasswordEmitter; return currentPasswordEmitter.pipe(take(1)); } hasLowerCase(password) { return password.search(/[a-z]/) !== -1; } hasUpperCase(password) { return password.search(/[A-Z]/) !== -1; } hasNumbers(password) { return password.search(/[0-9]/) !== -1; } hasSpecialChars(password) { return password.search(/[^0-9a-zA-Z]+/) !== -1; } getStrengthColor(password) { const passwordStrength = filter([ this.hasLowerCase(password), this.hasUpperCase(password), this.hasNumbers(password), this.hasSpecialChars(password) ]).length; if (passwordStrength > 3) { return this.GREEN; } else if (passwordStrength >= 3) { return this.YELLOW; } else { return this.RED; } } getDefaultPasswordMinLength() { return this.DEFAULT_PASSWORD_MIN_LENGTH; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PasswordService, deps: [{ token: i1.BsModalService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PasswordService }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PasswordService, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i1.BsModalService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvYXV0aGVudGljYXRpb24vcGFzc3dvcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBR25GLE1BQU0sT0FBTyxlQUFlO0lBc0IxQixZQUFvQixZQUE0QjtRQUE1QixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFyQnhDLGdDQUEyQixHQUFHLENBQUMsQ0FBQztRQUVoQyxVQUFLLEdBQTBCO1lBQ3JDLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLEtBQUssRUFBRSxnQkFBZ0I7WUFDdkIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDOUIsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsS0FBSztTQUN6QyxDQUFDO1FBQ00sV0FBTSxHQUEwQjtZQUN0QyxTQUFTLEVBQUUsUUFBUTtZQUNuQixLQUFLLEVBQUUsbUJBQW1CO1lBQzFCLFdBQVcsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQzlCLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLE1BQU07U0FDMUMsQ0FBQztRQUNNLFFBQUcsR0FBMEI7WUFDbkMsU0FBUyxFQUFFLEtBQUs7WUFDaEIsS0FBSyxFQUFFLGlCQUFpQjtZQUN4QixXQUFXLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUM1QixnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHO1NBQ3ZDLENBQUM7SUFFaUQsQ0FBQztJQUVwRCxlQUFlO1FBQ2IsTUFBTSxhQUFhLEdBQVEsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUU7WUFDL0UsZUFBZSxFQUFFLFlBQVk7WUFDN0IsY0FBYyxFQUFFLGFBQWE7U0FDOUIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSx3QkFBd0IsR0FDNUIsYUFBYSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQztRQUNqRCxPQUFPLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGVBQWU7UUFDYixNQUFNLGFBQWEsR0FBUSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRTtZQUMvRSxLQUFLLEVBQUUsVUFBVTtZQUNqQixlQUFlLEVBQUUsWUFBWTtZQUM3QixjQUFjLEVBQUUsYUFBYTtTQUM5QixDQUFDLENBQUM7UUFDSCxNQUFNLHNCQUFzQixHQUMxQixhQUFhLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDO1FBQy9DLE9BQU8sc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBZ0I7UUFDM0IsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBZ0I7UUFDM0IsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxVQUFVLENBQUMsUUFBZ0I7UUFDekIsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxlQUFlLENBQUMsUUFBZ0I7UUFDOUIsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUMvQixNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztZQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQztTQUMvQixDQUFDLENBQUMsTUFBTSxDQUFDO1FBRVYsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsQ0FBQzthQUFNLElBQUksZ0JBQWdCLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3JCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRUQsMkJBQTJCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDO0lBQzFDLENBQUM7K0dBckZVLGVBQWU7bUhBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGFzc3dvcmRTdHJlbmd0aCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBQYXNzd29yZFN0cmVuZ3RoQ29sb3IgfSBmcm9tICcuL3Bhc3N3b3JkLm1vZGVsJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi9pMThuL2dldHRleHQnO1xuaW1wb3J0IHsgUGFzc3dvcmRDb25maXJtTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL3Bhc3N3b3JkLWNvbmZpcm0tbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ3VycmVudFBhc3N3b3JkTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2N1cnJlbnQtcGFzc3dvcmQtbW9kYWwuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFBhc3N3b3JkU2VydmljZSB7XG4gIHByaXZhdGUgREVGQVVMVF9QQVNTV09SRF9NSU5fTEVOR1RIID0gODtcblxuICBwcml2YXRlIEdSRUVOOiBQYXNzd29yZFN0cmVuZ3RoQ29sb3IgPSB7XG4gICAgY29sb3JOYW1lOiAnZ3JlZW4nLFxuICAgIGNvbG9yOiAncmdiKDAsIDEyOCwgMCknLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdzdHJvbmcnKSxcbiAgICBwYXNzd29yZFN0cmVuZ3RoOiBQYXNzd29yZFN0cmVuZ3RoLkdSRUVOXG4gIH07XG4gIHByaXZhdGUgWUVMTE9XOiBQYXNzd29yZFN0cmVuZ3RoQ29sb3IgPSB7XG4gICAgY29sb3JOYW1lOiAneWVsbG93JyxcbiAgICBjb2xvcjogJ3JnYigyNTUsIDIwNCwgNTEpJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnbWVkaXVtJyksXG4gICAgcGFzc3dvcmRTdHJlbmd0aDogUGFzc3dvcmRTdHJlbmd0aC5ZRUxMT1dcbiAgfTtcbiAgcHJpdmF0ZSBSRUQ6IFBhc3N3b3JkU3RyZW5ndGhDb2xvciA9IHtcbiAgICBjb2xvck5hbWU6ICdyZWQnLFxuICAgIGNvbG9yOiAncmdiKDE3MCwgMCwgNTEpJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnd2VhaycpLFxuICAgIHBhc3N3b3JkU3RyZW5ndGg6IFBhc3N3b3JkU3RyZW5ndGguUkVEXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlKSB7fVxuXG4gIGNvbmZpcm1QYXNzd29yZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBtb2RhbEluc3RhbmNlOiBhbnkgPSB0aGlzLm1vZGFsU2VydmljZS5zaG93KFBhc3N3b3JkQ29uZmlybU1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBhcmlhRGVzY3JpYmVkYnk6ICdtb2RhbC1ib2R5JyxcbiAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnbW9kYWwtdGl0bGUnXG4gICAgfSk7XG4gICAgY29uc3QgcGFzc3dvcmRDb25maXJtZWRFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgbW9kYWxJbnN0YW5jZS5jb250ZW50LnBhc3N3b3JkQ29uZmlybWVkRW1pdHRlcjtcbiAgICByZXR1cm4gcGFzc3dvcmRDb25maXJtZWRFbWl0dGVyLnBpcGUodGFrZSgxKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHdpdGggdGhlIHBhc3N3b3JkIHByb3ZpZGVkIGJ5IHVzZXI6XG4gICAqIC0gYHN0cmluZ2Agd2hlbiB1c2VyIHByb3ZpZGVkIGEgdmFsdWVcbiAgICogLSBgbnVsbGAgd2hlbiB1c2VyIGNhbmNlbGxlZCB0aGUgbW9kYWxcbiAgICovXG4gIGN1cnJlbnRQYXNzd29yZCgpOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcbiAgICBjb25zdCBtb2RhbEluc3RhbmNlOiBhbnkgPSB0aGlzLm1vZGFsU2VydmljZS5zaG93KEN1cnJlbnRQYXNzd29yZE1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBjbGFzczogJ21vZGFsLXNtJyxcbiAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZSdcbiAgICB9KTtcbiAgICBjb25zdCBjdXJyZW50UGFzc3dvcmRFbWl0dGVyOiBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4gPVxuICAgICAgbW9kYWxJbnN0YW5jZS5jb250ZW50LmN1cnJlbnRQYXNzd29yZEVtaXR0ZXI7XG4gICAgcmV0dXJuIGN1cnJlbnRQYXNzd29yZEVtaXR0ZXIucGlwZSh0YWtlKDEpKTtcbiAgfVxuXG4gIGhhc0xvd2VyQ2FzZShwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHBhc3N3b3JkLnNlYXJjaCgvW2Etel0vKSAhPT0gLTE7XG4gIH1cblxuICBoYXNVcHBlckNhc2UocGFzc3dvcmQ6IHN0cmluZykge1xuICAgIHJldHVybiBwYXNzd29yZC5zZWFyY2goL1tBLVpdLykgIT09IC0xO1xuICB9XG5cbiAgaGFzTnVtYmVycyhwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHBhc3N3b3JkLnNlYXJjaCgvWzAtOV0vKSAhPT0gLTE7XG4gIH1cblxuICBoYXNTcGVjaWFsQ2hhcnMocGFzc3dvcmQ6IHN0cmluZykge1xuICAgIHJldHVybiBwYXNzd29yZC5zZWFyY2goL1teMC05YS16QS1aXSsvKSAhPT0gLTE7XG4gIH1cblxuICBnZXRTdHJlbmd0aENvbG9yKHBhc3N3b3JkOiBzdHJpbmcpOiBQYXNzd29yZFN0cmVuZ3RoQ29sb3Ige1xuICAgIGNvbnN0IHBhc3N3b3JkU3RyZW5ndGggPSBmaWx0ZXIoW1xuICAgICAgdGhpcy5oYXNMb3dlckNhc2UocGFzc3dvcmQpLFxuICAgICAgdGhpcy5oYXNVcHBlckNhc2UocGFzc3dvcmQpLFxuICAgICAgdGhpcy5oYXNOdW1iZXJzKHBhc3N3b3JkKSxcbiAgICAgIHRoaXMuaGFzU3BlY2lhbENoYXJzKHBhc3N3b3JkKVxuICAgIF0pLmxlbmd0aDtcblxuICAgIGlmIChwYXNzd29yZFN0cmVuZ3RoID4gMykge1xuICAgICAgcmV0dXJuIHRoaXMuR1JFRU47XG4gICAgfSBlbHNlIGlmIChwYXNzd29yZFN0cmVuZ3RoID49IDMpIHtcbiAgICAgIHJldHVybiB0aGlzLllFTExPVztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuUkVEO1xuICAgIH1cbiAgfVxuXG4gIGdldERlZmF1bHRQYXNzd29yZE1pbkxlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5ERUZBVUxUX1BBU1NXT1JEX01JTl9MRU5HVEg7XG4gIH1cbn1cbiJdfQ==