40 lines
942 B
JavaScript
40 lines
942 B
JavaScript
import pkg from 'pg';
|
|
import dotenv from 'dotenv';
|
|
import bcrypt from 'bcryptjs';
|
|
|
|
dotenv.config();
|
|
|
|
const { Client } = pkg;
|
|
|
|
async function main() {
|
|
const client = new Client({
|
|
connectionString: process.env.DATABASE_URL,
|
|
});
|
|
await client.connect();
|
|
|
|
const username = 'admin';
|
|
const plainPassword = 'password123';
|
|
const passwordHash = await bcrypt.hash(plainPassword, 10);
|
|
|
|
try {
|
|
// Delete existing admin if any
|
|
await client.query('DELETE FROM "users" WHERE "username" = $1', [username]);
|
|
|
|
await client.query(`
|
|
INSERT INTO "users" ("username", "password_hash", "role")
|
|
VALUES ($1, $2, $3)
|
|
`, [username, passwordHash, 'admin']);
|
|
|
|
console.log(`Successfully created admin user: ${username} / ${plainPassword}`);
|
|
} catch (e) {
|
|
console.error('Error creating admin:', e.message);
|
|
} finally {
|
|
await client.end();
|
|
}
|
|
}
|
|
|
|
main().catch(e => {
|
|
console.error(e);
|
|
process.exit(1);
|
|
});
|