@modern-kit/utils
Version:
70 lines (67 loc) • 2.68 kB
JavaScript
import { containsConsecutiveCharacters } from '../../regex/containsConsecutiveCharacters/index.mjs';
import { containsHangul } from '../../regex/containsHangul/index.mjs';
import { containsLowerCase } from '../../regex/containsLowerCase/index.mjs';
import { containsNumber } from '../../regex/containsNumber/index.mjs';
import { containsSpecialCharacters } from '../../regex/containsSpecialCharacters/index.mjs';
import { containsUpperCase } from '../../regex/containsUpperCase/index.mjs';
import { containsWhiteSpace } from '../../regex/containsWhiteSpace/index.mjs';
import { contains } from '../../array/contains/index.mjs';
import '../../regex/containsHangulSyllables/index.mjs';
import '../../regex/containsHangulConsonantsAndVowel/index.mjs';
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 (contains(forbiddenPasswords, password)) {
return { isValid: false, errorReason: "forbidden" };
}
if (containsWhiteSpace(password)) {
return { isValid: false, errorReason: "whiteSpace" };
}
if (containsConsecutiveCharacters(password, maxRepeatChars)) {
return { isValid: false, errorReason: "consecutiveCharacters" };
}
if (containsHangul(password)) {
return { isValid: false, errorReason: "hangul" };
}
if (!checkLength(password, minLength, maxLength)) {
return { isValid: false, errorReason: "length" };
}
if (lowerCase && !containsLowerCase(password)) {
return { isValid: false, errorReason: "lowerCase" };
}
if (number && !containsNumber(password)) {
return { isValid: false, errorReason: "number" };
}
if (specialCharacters && !containsSpecialCharacters(password)) {
return { isValid: false, errorReason: "specialCharacters" };
}
if (upperCase && !containsUpperCase(password)) {
return { isValid: false, errorReason: "upperCase" };
}
return { isValid: true, errorReason: null };
}
export { isValidPassword };
//# sourceMappingURL=index.mjs.map