Files
NoteAI/scripts/reset-password.js
2026-02-24 11:33:08 +08:00

41 lines
1.3 KiB
JavaScript

/* eslint-disable @typescript-eslint/no-require-imports */
const { PrismaClient } = require('@prisma/client');
const { scrypt, randomBytes } = require('crypto');
const { promisify } = require('util');
const prisma = new PrismaClient();
const scryptAsync = promisify(scrypt);
async function hashPassword(password) {
const salt = randomBytes(16).toString("hex");
const derivedKey = await scryptAsync(password, salt, 64);
return `${salt}:${derivedKey.toString("hex")}`;
}
async function main() {
const password = process.argv[2] || process.env.INIT_DEFAULT_PASSWORD || "admin";
console.log("Resetting password...");
const hashedPassword = await hashPassword(password);
const settings = await prisma.globalSettings.findFirst();
if (settings) {
await prisma.globalSettings.update({
where: { id: settings.id },
data: { password: hashedPassword }
});
console.log("Password reset successfully.");
} else {
await prisma.globalSettings.create({
data: {
id: "default",
password: hashedPassword,
},
});
console.log("Settings created with default password.");
}
}
main()
.catch(e => console.error(e))
.finally(async () => await prisma.$disconnect());