Files
NoteAI/scripts/init-settings.js
T
2026-02-24 09:53:19 +08:00

34 lines
1004 B
JavaScript

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 count = await prisma.globalSettings.count();
if (count === 0) {
console.log("Initializing default settings...");
const hashedPassword = await hashPassword("admin");
await prisma.globalSettings.create({
data: {
id: "default",
password: hashedPassword,
},
});
console.log("Done.");
} else {
console.log("Settings already exist.");
}
}
main()
.catch(e => console.error(e))
.finally(async () => await prisma.$disconnect());