48 lines
1.4 KiB
JavaScript
48 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);
|
|
});
|