Files
itinova-budget-si/scripts/seed-admin.mjs

61 lines
1.6 KiB
JavaScript

/**
* Seed — Crée le compte administrateur par défaut Itinova
* Login : adminItinova
* Mot de passe : Itinova69!
* Profil : admin
*/
import { drizzle } from "drizzle-orm/mysql2";
import mysql from "mysql2/promise";
import bcrypt from "bcryptjs";
import dotenv from "dotenv";
dotenv.config();
const DATABASE_URL = process.env.DATABASE_URL;
if (!DATABASE_URL) {
console.error("DATABASE_URL not set");
process.exit(1);
}
const connection = await mysql.createConnection(DATABASE_URL);
const db = drizzle(connection);
const ADMIN_LOGIN = "adminItinova";
const ADMIN_PASSWORD = "Itinova69!";
try {
// Vérifier si l'admin existe déjà
const [existing] = await connection.execute(
"SELECT id FROM users WHERE login = ?",
[ADMIN_LOGIN]
);
if (existing.length > 0) {
console.log(`✓ Le compte administrateur "${ADMIN_LOGIN}" existe déjà.`);
} else {
const passwordHash = await bcrypt.hash(ADMIN_PASSWORD, 10);
await connection.execute(
`INSERT INTO users (login, email, passwordHash, firstName, lastName, role, isActive, createdAt, updatedAt)
VALUES (?, ?, ?, ?, ?, ?, ?, NOW(), NOW())`,
[
ADMIN_LOGIN,
"adminItinova@santinova-soft.org",
passwordHash,
"Admin",
"Itinova",
"admin",
1,
]
);
console.log(`✓ Compte administrateur "${ADMIN_LOGIN}" créé avec succès.`);
console.log(` Login : ${ADMIN_LOGIN}`);
console.log(` Password : ${ADMIN_PASSWORD}`);
console.log(` Profil : admin`);
}
} catch (error) {
console.error("Erreur lors du seed :", error);
process.exit(1);
} finally {
await connection.end();
}