im-angular-validators
Version:
This library will help you with lots of already written mostly used validators for Angular 2+ applications.
30 lines • 7.26 kB
JavaScript
import { IMPasswordOperatorEnum } from '../enums/password-operator.enum';
export class IMPasswordValidatorConfigModel {
}
export const IMPasswordValidator = (config = new IMPasswordValidatorConfigModel()) => {
return (control) => {
if (control.value) {
const operator = passwordValidatorErrorResolver(control.value, config);
if (!!operator) {
return {
passwordValidatorError: {
isInvalid: true,
operator: IMPasswordOperatorEnum[operator],
comparingValue: config[operator]
}
};
}
}
};
};
const passwordValidatorErrorResolver = (control_value, configs) => {
return Object.keys(configs).find(key => configs[key] && operatorCheckResolver[IMPasswordOperatorEnum[key]](control_value, configs[key]));
};
const operatorCheckResolver = {
[IMPasswordOperatorEnum.minLength]: (value, required_password_length) => value.length < required_password_length,
[IMPasswordOperatorEnum.minNumberQuantity]: (value, required_numbers_quantity) => (value.match(/[0-9]/g)?.length || 0) < required_numbers_quantity,
[IMPasswordOperatorEnum.minCapitalLettersQuantity]: (value, required_cap_letters_quantity) => (value.match(/[A-Z]/g)?.length || 0) < required_cap_letters_quantity,
[IMPasswordOperatorEnum.minSmallLettersQuantity]: (value, required_small_letters_quantity) => (value.match(/[a-z]/g)?.length || 0) < required_small_letters_quantity,
[IMPasswordOperatorEnum.minSpecialCharactersQuantity]: (value, required_special_char_quantity) => (value.match(/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/g)?.length || 0) < required_special_char_quantity
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci12YWxpZGF0b3JzL3NyYy9saWIvdmFsaWRhdG9ycy9wYXNzd29yZC52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFHdkUsTUFBTSxPQUFPLDhCQUE4QjtDQU0xQztBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsU0FBeUMsSUFBSSw4QkFBOEIsRUFBRSxFQUFlLEVBQUU7SUFDaEksT0FBTyxDQUFDLE9BQXdCLEVBQW9CLEVBQUU7UUFDcEQsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2pCLE1BQU0sUUFBUSxHQUFHLDhCQUE4QixDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFdkUsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO2dCQUNkLE9BQU87b0JBQ0wsc0JBQXNCLEVBQUU7d0JBQ3RCLFNBQVMsRUFBRSxJQUFJO3dCQUNmLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7d0JBQzFDLGNBQWMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDO3FCQUNMO2lCQUM5QixDQUFDO2FBQ0g7U0FDRjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxhQUFxQixFQUFFLE9BQXVDLEVBQVUsRUFBRTtJQUNoSCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0ksQ0FBQyxDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBYSxFQUFFLHdCQUFnQyxFQUFFLEVBQUUsQ0FDdEYsS0FBSyxDQUFDLE1BQU0sR0FBRyx3QkFBd0I7SUFDekMsQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsS0FBYSxFQUFFLHlCQUFpQyxFQUFFLEVBQUUsQ0FDL0YsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyx5QkFBeUI7SUFDbEUsQ0FBQyxzQkFBc0IsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUMsS0FBYSxFQUFFLDZCQUE2QixFQUFFLEVBQUUsQ0FDbkcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyw2QkFBNkI7SUFDdEUsQ0FBQyxzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsS0FBYSxFQUFFLCtCQUErQixFQUFFLEVBQUUsQ0FDbkcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRywrQkFBK0I7SUFDeEUsQ0FBQyxzQkFBc0IsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLENBQUMsS0FBYSxFQUFFLDhCQUE4QixFQUFFLEVBQUUsQ0FDdkcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxDQUFDLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLDhCQUE4QjtDQUN4RyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7SU1QYXNzd29yZE9wZXJhdG9yRW51bX0gZnJvbSAnLi4vZW51bXMvcGFzc3dvcmQtb3BlcmF0b3IuZW51bSc7XHJcbmltcG9ydCB7SU1QYXNzd29yZEVycm9ySW50ZXJmYWNlfSBmcm9tICcuLi9pbnRlcmZhY2VzL3Bhc3N3b3JkLWVycm9yLmludGVyZmFjZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgSU1QYXNzd29yZFZhbGlkYXRvckNvbmZpZ01vZGVsIHtcclxuICBwdWJsaWMgbWluTGVuZ3RoOiBudW1iZXI7XHJcbiAgcHVibGljIG1pbk51bWJlclF1YW50aXR5PzogbnVtYmVyO1xyXG4gIHB1YmxpYyBtaW5DYXBpdGFsTGV0dGVyc1F1YW50aXR5PzogbnVtYmVyO1xyXG4gIHB1YmxpYyBtaW5TbWFsbExldHRlcnNRdWFudGl0eT86IG51bWJlcjtcclxuICBwdWJsaWMgbWluU3BlY2lhbENoYXJhY3RlcnNRdWFudGl0eT86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IElNUGFzc3dvcmRWYWxpZGF0b3IgPSAoY29uZmlnOiBJTVBhc3N3b3JkVmFsaWRhdG9yQ29uZmlnTW9kZWwgPSBuZXcgSU1QYXNzd29yZFZhbGlkYXRvckNvbmZpZ01vZGVsKCkpOiBWYWxpZGF0b3JGbiA9PiB7XHJcbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzID0+IHtcclxuICAgIGlmIChjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IG9wZXJhdG9yID0gcGFzc3dvcmRWYWxpZGF0b3JFcnJvclJlc29sdmVyKGNvbnRyb2wudmFsdWUsIGNvbmZpZyk7XHJcblxyXG4gICAgICBpZiAoISFvcGVyYXRvcikge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBwYXNzd29yZFZhbGlkYXRvckVycm9yOiB7XHJcbiAgICAgICAgICAgIGlzSW52YWxpZDogdHJ1ZSxcclxuICAgICAgICAgICAgb3BlcmF0b3I6IElNUGFzc3dvcmRPcGVyYXRvckVudW1bb3BlcmF0b3JdLFxyXG4gICAgICAgICAgICBjb21wYXJpbmdWYWx1ZTogY29uZmlnW29wZXJhdG9yXVxyXG4gICAgICAgICAgfSBhcyBJTVBhc3N3b3JkRXJyb3JJbnRlcmZhY2VcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxufTtcclxuXHJcbmNvbnN0IHBhc3N3b3JkVmFsaWRhdG9yRXJyb3JSZXNvbHZlciA9IChjb250cm9sX3ZhbHVlOiBzdHJpbmcsIGNvbmZpZ3M6IElNUGFzc3dvcmRWYWxpZGF0b3JDb25maWdNb2RlbCk6IHN0cmluZyA9PiB7XHJcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGNvbmZpZ3MpLmZpbmQoa2V5ID0+IGNvbmZpZ3Nba2V5XSAmJiBvcGVyYXRvckNoZWNrUmVzb2x2ZXJbSU1QYXNzd29yZE9wZXJhdG9yRW51bVtrZXldXShjb250cm9sX3ZhbHVlLCBjb25maWdzW2tleV0pKTtcclxufTtcclxuXHJcbmNvbnN0IG9wZXJhdG9yQ2hlY2tSZXNvbHZlciA9IHtcclxuICBbSU1QYXNzd29yZE9wZXJhdG9yRW51bS5taW5MZW5ndGhdOiAodmFsdWU6IHN0cmluZywgcmVxdWlyZWRfcGFzc3dvcmRfbGVuZ3RoOiBudW1iZXIpID0+XHJcbiAgICB2YWx1ZS5sZW5ndGggPCByZXF1aXJlZF9wYXNzd29yZF9sZW5ndGgsXHJcbiAgW0lNUGFzc3dvcmRPcGVyYXRvckVudW0ubWluTnVtYmVyUXVhbnRpdHldOiAodmFsdWU6IHN0cmluZywgcmVxdWlyZWRfbnVtYmVyc19xdWFudGl0eTogbnVtYmVyKSA9PlxyXG4gICAgKHZhbHVlLm1hdGNoKC9bMC05XS9nKT8ubGVuZ3RoIHx8IDApIDwgcmVxdWlyZWRfbnVtYmVyc19xdWFudGl0eSxcclxuICBbSU1QYXNzd29yZE9wZXJhdG9yRW51bS5taW5DYXBpdGFsTGV0dGVyc1F1YW50aXR5XTogKHZhbHVlOiBzdHJpbmcsIHJlcXVpcmVkX2NhcF9sZXR0ZXJzX3F1YW50aXR5KSA9PlxyXG4gICAgKHZhbHVlLm1hdGNoKC9bQS1aXS9nKT8ubGVuZ3RoIHx8IDApIDwgcmVxdWlyZWRfY2FwX2xldHRlcnNfcXVhbnRpdHksXHJcbiAgW0lNUGFzc3dvcmRPcGVyYXRvckVudW0ubWluU21hbGxMZXR0ZXJzUXVhbnRpdHldOiAodmFsdWU6IHN0cmluZywgcmVxdWlyZWRfc21hbGxfbGV0dGVyc19xdWFudGl0eSkgPT5cclxuICAgICh2YWx1ZS5tYXRjaCgvW2Etel0vZyk/Lmxlbmd0aCB8fCAwKSA8IHJlcXVpcmVkX3NtYWxsX2xldHRlcnNfcXVhbnRpdHksXHJcbiAgW0lNUGFzc3dvcmRPcGVyYXRvckVudW0ubWluU3BlY2lhbENoYXJhY3RlcnNRdWFudGl0eV06ICh2YWx1ZTogc3RyaW5nLCByZXF1aXJlZF9zcGVjaWFsX2NoYXJfcXVhbnRpdHkpID0+XHJcbiAgICAodmFsdWUubWF0Y2goL1shQCMkJV4mKigpXytcXC09XFxbXFxde307JzpcIlxcXFx8LC48PlxcLz9dL2cpPy5sZW5ndGggfHwgMCkgPCByZXF1aXJlZF9zcGVjaWFsX2NoYXJfcXVhbnRpdHlcclxufTtcclxuIl19