lomavuokraus/scripts/reset-admin-password.js
2025-11-24 17:15:20 +02:00

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);
});