Files
website-secure/scripts/reset-admin-password.js
T
2026-06-01 15:36:16 +01:00

37 lines
1.7 KiB
JavaScript

import bcrypt from "bcryptjs";
import { neon } from "@neondatabase/serverless";
const sql = neon(process.env.DATABASE_URL);
async function resetAdminPassword() {
const password = "admin123";
const hash = await bcrypt.hash(password, 10);
console.log("Generated hash:", hash);
// Update admin user password
await sql`UPDATE users SET password_hash = ${hash} WHERE email = 'admin@linse.com'`;
// Verify the user exists
const users = await sql`SELECT id, email, name, role FROM users WHERE email = 'admin@linse.com'`;
if (users.length > 0) {
console.log("Admin user updated:", users[0]);
} else {
// Create admin user if doesn't exist
const newHash = await bcrypt.hash("admin123", 10);
await sql`INSERT INTO users (email, password_hash, name, role) VALUES ('admin@linse.com', ${newHash}, 'Administrator', 'admin')`;
const newUser = await sql`SELECT id FROM users WHERE email = 'admin@linse.com'`;
if (newUser.length > 0) {
await sql`INSERT INTO user_permissions (user_id, can_view_dashboard, can_view_components, can_view_products, can_view_production, can_view_suppliers, can_view_customers, can_view_stock_history, can_view_stock_take, can_view_logistics, can_view_settings, can_view_financial, can_create, can_edit, can_delete, can_download, sections)
VALUES (${newUser[0].id}, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, ARRAY['dashboard', 'components', 'products', 'production', 'suppliers', 'customers', 'stock-history', 'stock-take', 'logistics', 'settings'])`;
console.log("Admin user created with permissions");
}
}
console.log("Done!");
}
resetAdminPassword().catch(console.error);