ForeverSmiYngEcologyKit/批量更新用户密码

457 lines
10 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 一键修改密码
async function changePasswordBatch(users) {
// RSA加密
function encryptPassword(password, publicKey) {
const jsencrypt = new JSEncrypt();
jsencrypt.setPublicKey(publicKey);
const encrypted = jsencrypt.encrypt(password);
if (!encrypted) throw new Error("密码加密失败");
return encrypted;
}
// 给单个用户改密(带重试)
async function updateUserPassword(user, retry = 3) {
try {
// 1. 获取验证码
const ts1 = Date.now();
const imgRes = await fetch(
`https://oa.zwgczx.com/weaver/weaver.file.MakeValidateCode?isView=1&validatetype=0&validatenum=4&seriesnum_=${ts1}`,
{ credentials: "include" }
);
const buf = await imgRes.arrayBuffer();
const base64 = btoa(
new Uint8Array(buf).reduce((data, byte) => data + String.fromCharCode(byte), "")
);
// 2. OCR 识别验证码
const ocrRes = await fetch("https://nest.zwgczx.com/api/v1/tmp-redis/test", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ base64 })
});
const { data: validatecode } = await ocrRes.json();
console.log("识别验证码:", validatecode);
// 3. 获取RSA公钥
const ts2 = Date.now();
const { rsa_pub, rsa_flag, rsa_code } = await (
await fetch(`https://oa.zwgczx.com/rsa/weaver.rsa.GetRsaInfo?ts=${ts2}`, {
credentials: "include"
})
).json();
const encPwd = encryptPassword(user.password + rsa_code, rsa_pub) + rsa_flag;
const ts3 = Date.now();
const { rsa_pub: rsa_pub1, rsa_flag: rsa_flag1, rsa_code: rsa_code1 } = await (
await fetch(`https://oa.zwgczx.com/rsa/weaver.rsa.GetRsaInfo?ts=${ts3}`, {
credentials: "include"
})
).json();
const encPwd1 = encryptPassword(user.password + rsa_code1, rsa_pub1) + rsa_flag1;
// 4. 提交改密
const body = new URLSearchParams({
id: user.id,
loginid: user.loginid,
password: encPwd,
password1: encPwd1,
usbstate: "0",
isADAccount: "0",
validatecode,
seclevel: 0,
useSecondaryPwd: 0,
passwordlock: 0,
needauto: 0,
enableDate: "2025-09-10",
enableUsbType: 0
});
const saveRes = await fetch("https://oa.zwgczx.com/api/hrm/systeminfo/save", {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=utf-8",
"x-requested-with": "XMLHttpRequest"
},
body,
credentials: "include"
});
const resultText = await saveRes.text();
let result = {};
try {
result = JSON.parse(resultText);
} catch {
// 如果不是标准JSON就简单返回原始文本
result = { raw: resultText };
}
if (result.status === "-1") {
if (retry > 0) {
console.warn(
`用户 ${user.loginid} 验证码失败,重试剩余 ${retry} 次...`
);
return await updateUserPassword(user, retry - 1);
} else {
throw new Error(`用户 ${user.loginid} 改密失败(验证码多次失败)`);
}
}
console.log(`用户 ${user.loginid} 改密结果:`, result);
} catch (err) {
console.error(`用户 ${user.loginid} 改密失败:`, err);
}
}
// 遍历用户批量处理
for (const user of users) {
await updateUserPassword(user);
}
}
// 示例调用id需要是hrmresource的id密码需要符合系统安全设置
changePasswordBatch([
{
"id": 523,
"loginid": "CUS-CDYH",
"password": "RY.42281"
},
{
"id": 524,
"loginid": "CUS-GYYH",
"password": "RY.13953"
},
{
"id": 525,
"loginid": "CUS-JTYH",
"password": "RY.98457"
},
{
"id": 526,
"loginid": "CUS-LLT",
"password": "RY.11517"
},
{
"id": 527,
"loginid": "CUS-NDYH",
"password": "RY.20880"
},
{
"id": 304,
"loginid": "RY-BSFGS",
"password": "RY.48137"
},
{
"id": 343,
"loginid": "RY-CHGS",
"password": "RY.93925"
},
{
"id": 315,
"loginid": "RY-CSHX",
"password": "RY.78478"
},
{
"id": 330,
"loginid": "RY-CZGLZX",
"password": "RY.41274"
},
{
"id": 347,
"loginid": "RY-DCGS",
"password": "RY.55742"
},
{
"id": 349,
"loginid": "RY-DYFGS",
"password": "RY.71620"
},
{
"id": 309,
"loginid": "RY-EGFGS",
"password": "RY.20707"
},
{
"id": 351,
"loginid": "RY-FKFGS",
"password": "RY.64596"
},
{
"id": 350,
"loginid": "RY-GFGS",
"password": "RY.05010"
},
{
"id": 306,
"loginid": "RY-GFZGS",
"password": "RY.86999"
},
{
"id": 308,
"loginid": "RY-GHFGS",
"password": "RY.63878"
},
{
"id": 337,
"loginid": "RY-GHGS",
"password": "RY.45039"
},
{
"id": 340,
"loginid": "RY-GLGS",
"password": "RY.59570"
},
{
"id": 310,
"loginid": "RY-GSFGS",
"password": "RY.81003"
},
{
"id": 302,
"loginid": "RY-GSZGS",
"password": "RY.44099"
},
{
"id": 299,
"loginid": "RY-GZXX",
"password": "RY.05592"
},
{
"id": 328,
"loginid": "RY-HHGGLZX",
"password": "RY.90622"
},
{
"id": 303,
"loginid": "RY-HMDQ",
"password": "RY.81619"
},
{
"id": 301,
"loginid": "RY-HMEWFGS",
"password": "RY.25967"
},
{
"id": 311,
"loginid": "RY-HQGS",
"password": "RY.89632"
},
{
"id": 318,
"loginid": "RY-HZGLC",
"password": "RY.92680"
},
{
"id": 320,
"loginid": "RY-JGGLC",
"password": "RY.29439"
},
{
"id": 329,
"loginid": "RY-JHGLZX",
"password": "RY.83392"
},
{
"id": 293,
"loginid": "RY-JLFGS",
"password": "RY.00699"
},
{
"id": 354,
"loginid": "RY-JS",
"password": "RY.53500"
},
{
"id": 353,
"loginid": "RY-JTJT",
"password": "RY.10700"
},
{
"id": 338,
"loginid": "RY-JZB",
"password": "RY.31698"
},
{
"id": 319,
"loginid": "RY-JZGLZX",
"password": "RY.43983"
},
{
"id": 298,
"loginid": "RY-JZGS",
"password": "RY.91799"
},
{
"id": 297,
"loginid": "RY-JZGSGZBD",
"password": "RY.35764"
},
{
"id": 296,
"loginid": "RY-JZGSGZD",
"password": "RY.40224"
},
{
"id": 335,
"loginid": "RY-KYGS",
"password": "RY.40975"
},
{
"id": 313,
"loginid": "RY-LDFGS",
"password": "RY.43105"
},
{
"id": 327,
"loginid": "RY-LLGLC",
"password": "RY.50593"
},
{
"id": 355,
"loginid": "RY-LQ",
"password": "RY.37570"
},
{
"id": 348,
"loginid": "RY-MPGS",
"password": "RY.39292"
},
{
"id": 333,
"loginid": "RY-MZGS",
"password": "RY.14628"
},
{
"id": 300,
"loginid": "RY-NHDFGS",
"password": "RY.50066"
},
{
"id": 314,
"loginid": "RY-NHGS",
"password": "RY.14002"
},
{
"id": 356,
"loginid": "RY-NY",
"password": "RY.35568"
},
{
"id": 325,
"loginid": "RY-NYLYGLC",
"password": "RY.81717"
},
{
"id": 321,
"loginid": "RY-QYGLZX",
"password": "RY.12508"
},
{
"id": 324,
"loginid": "RY-RXGLC",
"password": "RY.38510"
},
{
"id": 345,
"loginid": "RY-SFGS",
"password": "RY.55017"
},
{
"id": 357,
"loginid": "RY-SG",
"password": "RY.98997"
},
{
"id": 323,
"loginid": "RY-SGGLZX",
"password": "RY.16123"
},
{
"id": 339,
"loginid": "RY-SGGQFGS",
"password": "RY.55621"
},
{
"id": 332,
"loginid": "RY-SGZJFGS",
"password": "RY.94912"
},
{
"id": 342,
"loginid": "RY-SSXFGS",
"password": "RY.23889"
},
{
"id": 312,
"loginid": "RY-SZFGS",
"password": "RY.63003"
},
{
"id": 522,
"loginid": "RY-SZTD",
"password": "RY.33575"
},
{
"id": 358,
"loginid": "RY-TZ",
"password": "RY.84725"
},
{
"id": 334,
"loginid": "RY-TZFGS",
"password": "RY.21588"
},
{
"id": 326,
"loginid": "RY-XBGLC",
"password": "RY.13156"
},
{
"id": 346,
"loginid": "RY-XBYHFGS",
"password": "RY.04216"
},
{
"id": 336,
"loginid": "RY-YANGMAOGS",
"password": "RY.38286"
},
{
"id": 341,
"loginid": "RY-YGFGS",
"password": "RY.06696"
},
{
"id": 359,
"loginid": "RY-YGS",
"password": "RY.12380"
},
{
"id": 316,
"loginid": "RY-YHGLC",
"password": "RY.92641"
},
{
"id": 322,
"loginid": "RY-YHGLCH",
"password": "RY.86731"
},
{
"id": 295,
"loginid": "RY-YUNMAOGS",
"password": "RY.56787"
},
{
"id": 305,
"loginid": "RY-YWFGS",
"password": "RY.61043"
},
{
"id": 307,
"loginid": "RY-YZGS",
"password": "RY.33185"
}
]);