79 lines
2.6 KiB
JavaScript
79 lines
2.6 KiB
JavaScript
$(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
|
||
} |