$(document).ready(function () { $('#chgBtn').on('click', function () { var user_name = $('#inputUser').val(); var old_pwd = $('#inputOldPassword').val(); var new_pwd = $('#inputNewPassword').val(); var chk_pwd = $('#inputChkPassword').val(); if (pwdStrengthChecke(new_pwd, 6, 2) === false) { alert("新密碼強度不足,請至少包含英文小寫、英文大寫、阿拉伯數字、特殊符號四項中的2項,且長度至少為6個字元!"); return; } if (!confirm('請注意,Windows的密碼與公槽密碼是連動的,更改後登入Windows與登入公槽的密碼會跟著一起改!')) { return; } if (new_pwd != chk_pwd) { alert("新密碼與新密碼再確認不一致!"); return; } var formData = { user_name: user_name, old_password: old_pwd, new_password: new_pwd } $.ajax({ url: "/Api/ChangeADPassword", type: "POST", data: formData, success: function (data, textStatus, jqXHR) { if (data.ret === "yes") { alert("密碼修改成功!"); $('#inputUser').val(''); $('#inputOldPassword').val(''); $('#inputNewPassword').val(''); $('#inputChkPassword').val(''); } else { alert(data.message); } }, error: function (jqXHR, textStatus, errorThrown) { alert('網路或伺服器發生錯誤,請稍後重試!'); } }); }); }); /** * 檢查輸入的密碼強度,先檢查密碼是否達到指定的長度, * 再檢查是否有達成包含「英文小寫、英文大寫、阿拉伯數字、特殊符號」四個項目,可透過`strength`設定至少要符合多少項。 * https://klab.tw/2023/01/check-password-strength-using-java-and-javascript/ * @param {string} str - 要檢測的密碼文字 * @param {number} length - 需要的密碼長度 * @param {number} strength - 需要符合的項目數量,0到4 * @returns 如果符合強度需求返回true */ function pwdStrengthChecke(str, length, strength) { if (!str || str.length < length) { return false } let n = 0 const regex = [ /[a-z]/, /[A-Z]/, /[0-9]/, /[`~!@#$%^&*()_+=,<>\-\[\]\{\}\:;\.'"\/\\?\|]/ ] for (const r of regex) { if (str.match(r)) { n++ } } return n >= strength }