@walletpack/core
Version:
> TODO: description
59 lines (52 loc) • 1.95 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var PasswordService =
/*#__PURE__*/
function () {
function PasswordService() {
(0, _classCallCheck2["default"])(this, PasswordService);
}
(0, _createClass2["default"])(PasswordService, null, [{
key: "isLongEnough",
value: function isLongEnough(password) {
var suggested = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 8;
return password.length >= suggested;
}
}, {
key: "uppercaseCount",
value: function uppercaseCount(password) {
return password.split('').filter(function (x) {
return x === x.toUpperCase();
}).length;
}
}, {
key: "lowercaseCount",
value: function lowercaseCount(password) {
return password.split('').filter(function (x) {
return x !== x.toUpperCase();
}).length;
}
}, {
key: "specialCharCount",
value: function specialCharCount(password) {
return password.replace(/[0-9a-zA-Z]/gi, '').length;
}
}, {
key: "hasError",
value: function hasError(password) {
if (!this.isLongEnough(password)) return 'Your password is not long enough (8 characters)';
if (this.uppercaseCount(password) < 2) return "Passwords must have at least two uppercase letters";
if (this.lowercaseCount(password) < 2) return "Passwords must have at least two lowercase letters";
if (this.specialCharCount(password) < 2) return "Passwords must have at least two special characters (like # or @)";
return false;
}
}]);
return PasswordService;
}();
exports["default"] = PasswordService;