/* 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());