50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
/* Reset admin password for thallaa@gmail.com to a known value.
|
|
Usage: node scripts/reset-admin-password.js
|
|
*/
|
|
const path = require("path");
|
|
require("dotenv").config({ path: path.join(__dirname, "..", ".env") });
|
|
const { PrismaClient, Role, UserStatus } = require("@prisma/client");
|
|
const { PrismaPg } = require("@prisma/adapter-pg");
|
|
const { Pool } = require("pg");
|
|
const bcrypt = require("bcryptjs");
|
|
|
|
async function main() {
|
|
const email = process.env.ADMIN_EMAIL || "thallaa@gmail.com";
|
|
const newPassword = process.env.ADMIN_INITIAL_PASSWORD;
|
|
if (!newPassword) throw new Error("ADMIN_INITIAL_PASSWORD not set in env");
|
|
if (!process.env.DATABASE_URL) throw new Error("DATABASE_URL not set");
|
|
|
|
const prisma = new PrismaClient({
|
|
adapter: new PrismaPg(
|
|
new Pool({ connectionString: process.env.DATABASE_URL }),
|
|
),
|
|
});
|
|
|
|
const hash = await bcrypt.hash(newPassword, 12);
|
|
const user = await prisma.user.upsert({
|
|
where: { email },
|
|
update: {
|
|
passwordHash: hash,
|
|
role: Role.ADMIN,
|
|
status: UserStatus.ACTIVE,
|
|
emailVerifiedAt: new Date(),
|
|
approvedAt: new Date(),
|
|
},
|
|
create: {
|
|
email,
|
|
passwordHash: hash,
|
|
role: Role.ADMIN,
|
|
status: UserStatus.ACTIVE,
|
|
emailVerifiedAt: new Date(),
|
|
approvedAt: new Date(),
|
|
},
|
|
});
|
|
|
|
console.log("Password reset for", user.email);
|
|
await prisma.$disconnect();
|
|
}
|
|
|
|
main().catch((err) => {
|
|
console.error(err);
|
|
process.exit(1);
|
|
});
|