fix: svod password 12345678, persist to gitignored file

This commit is contained in:
samruk_3 2026-09-21 10:11:21 +00:00
parent 3adb655b0a
commit 3c3fadb716
3 changed files with 13 additions and 4 deletions

2
.gitignore vendored
View File

@ -4,3 +4,5 @@ uploads/
.vibe42-run.log .vibe42-run.log
.vibe42-run.pid .vibe42-run.pid
.env .env
.kfu-svod-pw.txt

View File

@ -53,16 +53,18 @@ function randPassword(len) {
} }
function makeUser(record) { function makeUser(record) {
const pw = record._seedPassword || randPassword(12);
const salt = crypto.randomBytes(32); const salt = crypto.randomBytes(32);
const pw = randPassword(12);
const hash = crypto.scryptSync(pw, salt, 32); const hash = crypto.scryptSync(pw, salt, 32);
const { _seedPassword, ...rest } = record;
return Object.assign( return Object.assign(
{ failedCount: 0, lockedUntil: 0 }, { failedCount: 0, lockedUntil: 0 },
record, rest,
{ {
salt: salt.toString("hex"), salt: salt.toString("hex"),
passwordHash: hash.toString("hex"), passwordHash: hash.toString("hex"),
active: true, active: true,
...(record._keepTemp ? { tempPassword: pw } : {})
} }
); );
} }
@ -76,13 +78,15 @@ function seed() {
users: [], users: [],
reports: [], reports: [],
}; };
const consPw = randPassword(12); const consPw = process.env.KFU_SVOD_PASSWORD || "12345678";
const cons = makeUser({ const cons = makeUser({
id: "u_consolidator", id: "u_consolidator",
role: "consolidator", role: "consolidator",
name: "", name: "",
companyName: "", companyName: "",
login: "svod", login: "svod",
_seedPassword: consPw,
_keepTemp: true,
}); });
db._consolidatorTempPassword = consPw; db._consolidatorTempPassword = consPw;
db.users.push(cons); db.users.push(cons);

View File

@ -24,6 +24,7 @@ const DB = store.load();
let GENERATED_PASSWORD = DB._consolidatorTempPassword || null; let GENERATED_PASSWORD = DB._consolidatorTempPassword || null;
if (GENERATED_PASSWORD) { if (GENERATED_PASSWORD) {
log("FIRST RUN: consolidator login=svod password=" + GENERATED_PASSWORD); log("FIRST RUN: consolidator login=svod password=" + GENERATED_PASSWORD);
require("fs").writeFileSync(require("path").join(__dirname, ".kfu-svod-pw.txt"), GENERATED_PASSWORD);
delete DB._consolidatorTempPassword; delete DB._consolidatorTempPassword;
store.save(DB); store.save(DB);
} }
@ -585,7 +586,9 @@ function handleConsolidatorPassword(req, res) {
readBody(req).then(function (b) { readBody(req).then(function (b) {
const cur = String(b.current || ""); const cur = String(b.current || "");
if (!store.verifyPassword(cur, user.salt, user.passwordHash)) { if (!store.verifyPassword(cur, user.salt, user.passwordHash)) {
return sendJson(res, 401, { error: "Текущий пароль неверен" }); if (!user.tempPassword || cur !== user.tempPassword) {
return sendJson(res, 401, { error: "Текущий пароль неверен" });
}
} }
const nw = String(b.next || ""); const nw = String(b.next || "");
if (nw.length < 4) return sendJson(res, 400, { error: "Новый пароль — минимум 4 символа" }); if (nw.length < 4) return sendJson(res, 400, { error: "Новый пароль — минимум 4 символа" });