UNPKG

@choerodon/master

Version:
93 lines (78 loc) 2.88 kB
import { getMessage } from "./intl"; export default function checkPassword(passwordPolicy, value, callback, userName) { if (passwordPolicy) { var check = passwordPolicy.enablePassword, minLength = passwordPolicy.minLength, maxLength = passwordPolicy.maxLength, upcount = passwordPolicy.uppercaseCount, spcount = passwordPolicy.specialCharCount, lowcount = passwordPolicy.lowercaseCount, notEqualsUsername = passwordPolicy.notUsername, regexCheck = passwordPolicy.regularExpression; if (value && check) { var len = 0; var rs = ''; var sp; var up = 0; var low = 0; for (var i = 0; i < value.length; i += 1) { var a = value.charAt(i); if (a.match(/[^\x00-\xff]/ig) != null) { len += 2; } else { len += 1; } } var pattern = new RegExp('[-~`@#$%^&*_=+|/()<>,.;:!]'); for (var _i = 0; _i < value.length; _i += 1) { rs += value.substr(_i, 1).replace(pattern, ''); sp = value.length - rs.length; } if (/[A-Z]/i.test(value)) { var ups = value.match(/[A-Z]/g); up = ups ? ups.length : 0; } if (/[a-z]/i.test(value)) { var lows = value.match(/[a-z]/g); low = lows ? lows.length : 0; } if (minLength && len < minLength) { callback(getMessage("\u5BC6\u7801\u957F\u5EA6\u81F3\u5C11\u4E3A".concat(minLength), "Password length is at least ".concat(minLength))); return; } if (maxLength && len > maxLength) { callback(getMessage("\u5BC6\u7801\u957F\u5EA6\u6700\u591A\u4E3A".concat(maxLength), "Password length is upto ".concat(maxLength))); return; } if (upcount && up < upcount) { callback(getMessage("\u5927\u5199\u5B57\u6BCD\u81F3\u5C11\u4E3A".concat(upcount), "At least for a capital letter ".concat(upcount))); return; } if (lowcount && low < lowcount) { callback(getMessage("\u5C0F\u5199\u5B57\u6BCD\u81F3\u5C11\u4E3A".concat(lowcount), "At least for a lower-case letters ".concat(lowcount))); return; } if (notEqualsUsername && value === userName) { callback(getMessage('密码不能与账号相同', 'password can not equal with the userName')); return; } if (regexCheck) { var regex = new RegExp(regexCheck); if (regex.test(value)) { callback(); } else { callback(getMessage('正则不匹配', 'can not test regex')); } } if (spcount && sp < spcount) { callback(getMessage("\u7279\u6B8A\u5B57\u7B26\u81F3\u5C11\u4E3A".concat(spcount), "At least for special characters ".concat(spcount))); } else { callback(); } } else { callback(); } } else { callback(); } }