ad_login/wwwroot/assets/javascript/custom/Signin.js

79 lines
2.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

$(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
}