@alexisanzieu/passense
Version:
SOLID password to ensure robust security
37 lines (36 loc) • 1.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Validator_1 = require("./Validator");
const defaultConfig = {
minimum: 1,
iteration: 0,
};
class UpperCaseValidator extends Validator_1.Validator {
constructor(config) {
super();
const mergedConfig = this.mergeConfig(config, defaultConfig);
this.minimum = this.ensureTyping(mergedConfig.minimum, 'number');
this.iteration = this.ensureTyping(mergedConfig.iteration, 'number');
}
isValid(password) {
if (!this.isStringUpperCased(password)) {
throw new Error(`You must to include at least ${this.minimum} uppercase letter`);
}
return true;
}
isStringUpperCased(s) {
for (let i = 0; i < s.length; i++) {
if (this.isCharUpperCase(s[i])) {
if (++this.iteration === this.minimum) {
return true;
}
}
}
return false;
}
isCharUpperCase(s) {
// number and unexpected characters are not allowed
return s === s.toUpperCase() && s != s.toLowerCase();
}
}
exports.default = UpperCaseValidator;