@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
62 lines • 6.79 kB
JavaScript
import { Injectable } from '@angular/core';
import { PasswordStrength } from '@c8y/client';
import { filter } from 'lodash-es';
import { gettext } from '../i18n/gettext';
import * as i0 from "@angular/core";
export class PasswordStrengthCheckerService {
constructor() {
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
};
}
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;
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PasswordStrengthCheckerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PasswordStrengthCheckerService }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PasswordStrengthCheckerService, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtc3RyZW5ndGgtY2hlY2tlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9hdXRoZW50aWNhdGlvbi9wYXNzd29yZC1zdHJlbmd0aC1jaGVja2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRzFDLE1BQU0sT0FBTyw4QkFBOEI7SUFEM0M7UUFFVSxVQUFLLEdBQTBCO1lBQ3JDLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLEtBQUssRUFBRSxnQkFBZ0I7WUFDdkIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDOUIsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsS0FBSztTQUN6QyxDQUFDO1FBQ00sV0FBTSxHQUEwQjtZQUN0QyxTQUFTLEVBQUUsUUFBUTtZQUNuQixLQUFLLEVBQUUsbUJBQW1CO1lBQzFCLFdBQVcsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQzlCLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLE1BQU07U0FDMUMsQ0FBQztRQUNNLFFBQUcsR0FBMEI7WUFDbkMsU0FBUyxFQUFFLEtBQUs7WUFDaEIsS0FBSyxFQUFFLGlCQUFpQjtZQUN4QixXQUFXLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUM1QixnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHO1NBQ3ZDLENBQUM7S0FrQ0g7SUFoQ0MsWUFBWSxDQUFDLFFBQWdCO1FBQzNCLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsWUFBWSxDQUFDLFFBQWdCO1FBQzNCLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQWdCO1FBQ3pCLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsZUFBZSxDQUFDLFFBQWdCO1FBQzlCLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsUUFBZ0I7UUFDL0IsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUM7WUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUM7U0FDL0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUVWLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BCLENBQUM7YUFBTSxJQUFJLGdCQUFnQixJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQzsrR0FuRFUsOEJBQThCO21IQUE5Qiw4QkFBOEI7OzRGQUE5Qiw4QkFBOEI7a0JBRDFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYXNzd29yZFN0cmVuZ3RoIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFBhc3N3b3JkU3RyZW5ndGhDb2xvciB9IGZyb20gJy4vcGFzc3dvcmQubW9kZWwnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4vZ2V0dGV4dCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQYXNzd29yZFN0cmVuZ3RoQ2hlY2tlclNlcnZpY2Uge1xuICBwcml2YXRlIEdSRUVOOiBQYXNzd29yZFN0cmVuZ3RoQ29sb3IgPSB7XG4gICAgY29sb3JOYW1lOiAnZ3JlZW4nLFxuICAgIGNvbG9yOiAncmdiKDAsIDEyOCwgMCknLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdzdHJvbmcnKSxcbiAgICBwYXNzd29yZFN0cmVuZ3RoOiBQYXNzd29yZFN0cmVuZ3RoLkdSRUVOXG4gIH07XG4gIHByaXZhdGUgWUVMTE9XOiBQYXNzd29yZFN0cmVuZ3RoQ29sb3IgPSB7XG4gICAgY29sb3JOYW1lOiAneWVsbG93JyxcbiAgICBjb2xvcjogJ3JnYigyNTUsIDIwNCwgNTEpJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnbWVkaXVtJyksXG4gICAgcGFzc3dvcmRTdHJlbmd0aDogUGFzc3dvcmRTdHJlbmd0aC5ZRUxMT1dcbiAgfTtcbiAgcHJpdmF0ZSBSRUQ6IFBhc3N3b3JkU3RyZW5ndGhDb2xvciA9IHtcbiAgICBjb2xvck5hbWU6ICdyZWQnLFxuICAgIGNvbG9yOiAncmdiKDE3MCwgMCwgNTEpJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnd2VhaycpLFxuICAgIHBhc3N3b3JkU3RyZW5ndGg6IFBhc3N3b3JkU3RyZW5ndGguUkVEXG4gIH07XG5cbiAgaGFzTG93ZXJDYXNlKHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcGFzc3dvcmQuc2VhcmNoKC9bYS16XS8pICE9PSAtMTtcbiAgfVxuXG4gIGhhc1VwcGVyQ2FzZShwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHBhc3N3b3JkLnNlYXJjaCgvW0EtWl0vKSAhPT0gLTE7XG4gIH1cblxuICBoYXNOdW1iZXJzKHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcGFzc3dvcmQuc2VhcmNoKC9bMC05XS8pICE9PSAtMTtcbiAgfVxuXG4gIGhhc1NwZWNpYWxDaGFycyhwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHBhc3N3b3JkLnNlYXJjaCgvW14wLTlhLXpBLVpdKy8pICE9PSAtMTtcbiAgfVxuXG4gIGdldFN0cmVuZ3RoQ29sb3IocGFzc3dvcmQ6IHN0cmluZyk6IFBhc3N3b3JkU3RyZW5ndGhDb2xvciB7XG4gICAgY29uc3QgcGFzc3dvcmRTdHJlbmd0aCA9IGZpbHRlcihbXG4gICAgICB0aGlzLmhhc0xvd2VyQ2FzZShwYXNzd29yZCksXG4gICAgICB0aGlzLmhhc1VwcGVyQ2FzZShwYXNzd29yZCksXG4gICAgICB0aGlzLmhhc051bWJlcnMocGFzc3dvcmQpLFxuICAgICAgdGhpcy5oYXNTcGVjaWFsQ2hhcnMocGFzc3dvcmQpXG4gICAgXSkubGVuZ3RoO1xuXG4gICAgaWYgKHBhc3N3b3JkU3RyZW5ndGggPiAzKSB7XG4gICAgICByZXR1cm4gdGhpcy5HUkVFTjtcbiAgICB9IGVsc2UgaWYgKHBhc3N3b3JkU3RyZW5ndGggPj0gMykge1xuICAgICAgcmV0dXJuIHRoaXMuWUVMTE9XO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5SRUQ7XG4gICAgfVxuICB9XG59XG4iXX0=