@modern-kit/utils
Version:
72 lines (68 loc) • 2.93 kB
JavaScript
;
var regexContainsConsecutiveCharacters = require('../../regex/containsConsecutiveCharacters/index.cjs');
var regexContainsHangul = require('../../regex/containsHangul/index.cjs');
var regexContainsLowerCase = require('../../regex/containsLowerCase/index.cjs');
var regexContainsNumber = require('../../regex/containsNumber/index.cjs');
var regexContainsSpecialCharacters = require('../../regex/containsSpecialCharacters/index.cjs');
var regexContainsUpperCase = require('../../regex/containsUpperCase/index.cjs');
var regexContainsWhiteSpace = require('../../regex/containsWhiteSpace/index.cjs');
var arrayContains = require('../../array/contains/index.cjs');
require('../../regex/containsHangulSyllables/index.cjs');
require('../../regex/containsHangulConsonantsAndVowel/index.cjs');
const checkInValidLengthOptions = (minLength, maxLength) => {
if (minLength < 1 || maxLength < 1 || minLength > maxLength) {
return true;
}
return !Number.isInteger(minLength) || !Number.isInteger(maxLength);
};
const checkLength = (password, minLength, maxLength) => {
return password.length >= minLength && password.length <= maxLength;
};
function isValidPassword(password, options = {}) {
const {
containsOptions = {},
minLength = 8,
maxLength = 24,
maxRepeatChars = maxLength + 1,
forbiddenPasswords = []
} = options;
const {
lowerCase = false,
number = false,
specialCharacters = false,
upperCase = false
} = containsOptions;
if (checkInValidLengthOptions(minLength, maxLength)) {
throw new Error("Invalid length option value");
}
if (arrayContains.contains(forbiddenPasswords, password)) {
return { isValid: false, errorReason: "forbidden" };
}
if (regexContainsWhiteSpace.containsWhiteSpace(password)) {
return { isValid: false, errorReason: "whiteSpace" };
}
if (regexContainsConsecutiveCharacters.containsConsecutiveCharacters(password, maxRepeatChars)) {
return { isValid: false, errorReason: "consecutiveCharacters" };
}
if (regexContainsHangul.containsHangul(password)) {
return { isValid: false, errorReason: "hangul" };
}
if (!checkLength(password, minLength, maxLength)) {
return { isValid: false, errorReason: "length" };
}
if (lowerCase && !regexContainsLowerCase.containsLowerCase(password)) {
return { isValid: false, errorReason: "lowerCase" };
}
if (number && !regexContainsNumber.containsNumber(password)) {
return { isValid: false, errorReason: "number" };
}
if (specialCharacters && !regexContainsSpecialCharacters.containsSpecialCharacters(password)) {
return { isValid: false, errorReason: "specialCharacters" };
}
if (upperCase && !regexContainsUpperCase.containsUpperCase(password)) {
return { isValid: false, errorReason: "upperCase" };
}
return { isValid: true, errorReason: null };
}
exports.isValidPassword = isValidPassword;
//# sourceMappingURL=index.cjs.map