@yoyoboot/l-52abp-ng
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.13.
72 lines • 9.12 kB
JavaScript
import { Directive, forwardRef, Input } from '@angular/core';
import { NG_VALIDATORS } from '@angular/forms';
import * as i0 from "@angular/core";
export class PasswordComplexityValidator {
validate(control) {
const givenPassword = control.value;
let validationResult = null;
const requireDigit = this.requireDigit;
if (requireDigit && givenPassword && !/[0-9]/.test(givenPassword)) {
validationResult = validationResult || {};
validationResult.requireDigit = true;
}
const requireUppercase = this.requireUppercase;
if (requireUppercase && givenPassword && !/[A-Z]/.test(givenPassword)) {
validationResult = validationResult || {};
validationResult.requireUppercase = true;
}
const requireLowercase = this.requireLowercase;
if (requireLowercase && givenPassword && !/[a-z]/.test(givenPassword)) {
validationResult = validationResult || {};
validationResult.requireLowercase = true;
}
const requiredLength = this.requiredLength;
if (requiredLength &&
givenPassword &&
givenPassword.length < requiredLength) {
validationResult = validationResult || {};
validationResult.requiredLength = true;
}
// use upperCaseLetters
const requireNonAlphanumeric = this.requireNonAlphanumeric;
if (requireNonAlphanumeric &&
givenPassword &&
/^[0-9a-zA-Z]+$/.test(givenPassword)) {
validationResult = validationResult || {};
validationResult.requireNonAlphanumeric = true;
}
return validationResult;
}
}
PasswordComplexityValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PasswordComplexityValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
PasswordComplexityValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: PasswordComplexityValidator, selector: "[requireDigit],[requireLowercase],[requireNonAlphanumeric],[requireUppercase],[requiredLength]", inputs: { requireDigit: "requireDigit", requireUppercase: "requireUppercase", requireLowercase: "requireLowercase", requireNonAlphanumeric: "requireNonAlphanumeric", requiredLength: "requiredLength" }, providers: [
{
provide: NG_VALIDATORS,
useExisting: forwardRef(() => PasswordComplexityValidator),
multi: true,
},
], ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PasswordComplexityValidator, decorators: [{
type: Directive,
args: [{
selector: '[requireDigit],[requireLowercase],[requireNonAlphanumeric],[requireUppercase],[requiredLength]',
providers: [
{
provide: NG_VALIDATORS,
useExisting: forwardRef(() => PasswordComplexityValidator),
multi: true,
},
],
}]
}], propDecorators: { requireDigit: [{
type: Input
}], requireUppercase: [{
type: Input
}], requireLowercase: [{
type: Input
}], requireNonAlphanumeric: [{
type: Input
}], requiredLength: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtY29tcGxleGl0eS12YWxpZGF0b3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbC01MmFicC1uZy9zcmMvZGlyZWN0aXZlcy92YWxpZGF0aW9uL3Bhc3N3b3JkLWNvbXBsZXhpdHktdmFsaWRhdG9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBYSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUE4QixhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFZM0UsTUFBTSxPQUFPLDJCQUEyQjtJQVl0QyxRQUFRLENBQUMsT0FBd0I7UUFDL0IsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUNwQyxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUU1QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLElBQUksWUFBWSxJQUFJLGFBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDakUsZ0JBQWdCLEdBQUcsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1lBQzFDLGdCQUFnQixDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7U0FDdEM7UUFFRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQyxJQUFJLGdCQUFnQixJQUFJLGFBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDckUsZ0JBQWdCLEdBQUcsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1lBQzFDLGdCQUFnQixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztTQUMxQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQy9DLElBQUksZ0JBQWdCLElBQUksYUFBYSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNyRSxnQkFBZ0IsR0FBRyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7WUFDMUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1NBQzFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzQyxJQUNFLGNBQWM7WUFDZCxhQUFhO1lBQ2IsYUFBYSxDQUFDLE1BQU0sR0FBRyxjQUFjLEVBQ3JDO1lBQ0EsZ0JBQWdCLEdBQUcsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1lBQzFDLGdCQUFnQixDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7U0FDeEM7UUFFRCx1QkFBdUI7UUFDdkIsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7UUFDM0QsSUFDRSxzQkFBc0I7WUFDdEIsYUFBYTtZQUNiLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDcEM7WUFDQSxnQkFBZ0IsR0FBRyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7WUFDMUMsZ0JBQWdCLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1NBQ2hEO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDOzt5SEF4RFUsMkJBQTJCOzZHQUEzQiwyQkFBMkIsbVVBUjNCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsYUFBYTtZQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDO1lBQzFELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRjs0RkFFVSwyQkFBMkI7a0JBVnZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdHQUFnRztvQkFDMUcsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSw0QkFBNEIsQ0FBQzs0QkFDMUQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7OEJBR1UsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBmb3J3YXJkUmVmLCBBdHRyaWJ1dGUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3IsIEFic3RyYWN0Q29udHJvbCwgTkdfVkFMSURBVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3JlcXVpcmVEaWdpdF0sW3JlcXVpcmVMb3dlcmNhc2VdLFtyZXF1aXJlTm9uQWxwaGFudW1lcmljXSxbcmVxdWlyZVVwcGVyY2FzZV0sW3JlcXVpcmVkTGVuZ3RoXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQYXNzd29yZENvbXBsZXhpdHlWYWxpZGF0b3IpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRDb21wbGV4aXR5VmFsaWRhdG9yIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcblxuICBASW5wdXQoKSByZXF1aXJlRGlnaXQ6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgcmVxdWlyZVVwcGVyY2FzZTogYm9vbGVhbjtcblxuICBASW5wdXQoKSByZXF1aXJlTG93ZXJjYXNlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHJlcXVpcmVOb25BbHBoYW51bWVyaWM6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgcmVxdWlyZWRMZW5ndGg6IG51bWJlcjtcblxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCBnaXZlblBhc3N3b3JkID0gY29udHJvbC52YWx1ZTtcbiAgICBsZXQgdmFsaWRhdGlvblJlc3VsdCA9IG51bGw7XG5cbiAgICBjb25zdCByZXF1aXJlRGlnaXQgPSB0aGlzLnJlcXVpcmVEaWdpdDtcbiAgICBpZiAocmVxdWlyZURpZ2l0ICYmIGdpdmVuUGFzc3dvcmQgJiYgIS9bMC05XS8udGVzdChnaXZlblBhc3N3b3JkKSkge1xuICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRpb25SZXN1bHQgfHwge307XG4gICAgICB2YWxpZGF0aW9uUmVzdWx0LnJlcXVpcmVEaWdpdCA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWlyZVVwcGVyY2FzZSA9IHRoaXMucmVxdWlyZVVwcGVyY2FzZTtcbiAgICBpZiAocmVxdWlyZVVwcGVyY2FzZSAmJiBnaXZlblBhc3N3b3JkICYmICEvW0EtWl0vLnRlc3QoZ2l2ZW5QYXNzd29yZCkpIHtcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSB2YWxpZGF0aW9uUmVzdWx0IHx8IHt9O1xuICAgICAgdmFsaWRhdGlvblJlc3VsdC5yZXF1aXJlVXBwZXJjYXNlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCByZXF1aXJlTG93ZXJjYXNlID0gdGhpcy5yZXF1aXJlTG93ZXJjYXNlO1xuICAgIGlmIChyZXF1aXJlTG93ZXJjYXNlICYmIGdpdmVuUGFzc3dvcmQgJiYgIS9bYS16XS8udGVzdChnaXZlblBhc3N3b3JkKSkge1xuICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRpb25SZXN1bHQgfHwge307XG4gICAgICB2YWxpZGF0aW9uUmVzdWx0LnJlcXVpcmVMb3dlcmNhc2UgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVpcmVkTGVuZ3RoID0gdGhpcy5yZXF1aXJlZExlbmd0aDtcbiAgICBpZiAoXG4gICAgICByZXF1aXJlZExlbmd0aCAmJlxuICAgICAgZ2l2ZW5QYXNzd29yZCAmJlxuICAgICAgZ2l2ZW5QYXNzd29yZC5sZW5ndGggPCByZXF1aXJlZExlbmd0aFxuICAgICkge1xuICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRpb25SZXN1bHQgfHwge307XG4gICAgICB2YWxpZGF0aW9uUmVzdWx0LnJlcXVpcmVkTGVuZ3RoID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyB1c2UgdXBwZXJDYXNlTGV0dGVyc1xuICAgIGNvbnN0IHJlcXVpcmVOb25BbHBoYW51bWVyaWMgPSB0aGlzLnJlcXVpcmVOb25BbHBoYW51bWVyaWM7XG4gICAgaWYgKFxuICAgICAgcmVxdWlyZU5vbkFscGhhbnVtZXJpYyAmJlxuICAgICAgZ2l2ZW5QYXNzd29yZCAmJlxuICAgICAgL15bMC05YS16QS1aXSskLy50ZXN0KGdpdmVuUGFzc3dvcmQpXG4gICAgKSB7XG4gICAgICB2YWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGlvblJlc3VsdCB8fCB7fTtcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQucmVxdWlyZU5vbkFscGhhbnVtZXJpYyA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRpb25SZXN1bHQ7XG4gIH1cbn1cbiJdfQ==