47 lines
1.8 KiB
JavaScript
47 lines
1.8 KiB
JavaScript
/**
|
|
* Seed : crée le compte administrateur par défaut si inexistant.
|
|
* Login : adminItinova | Mot de passe : Itinova69!
|
|
*/
|
|
import mysql from 'mysql2/promise';
|
|
import bcrypt from 'bcrypt';
|
|
import { randomUUID } from 'crypto';
|
|
|
|
const conn = await mysql.createConnection(process.env.DATABASE_URL);
|
|
|
|
// Vérifier si adminItinova existe déjà
|
|
const [rows] = await conn.execute("SELECT id, openId FROM users WHERE login = 'adminItinova' LIMIT 1");
|
|
if (rows.length > 0) {
|
|
const existing = rows[0];
|
|
// Si openId est null, le corriger pour permettre la connexion JWT
|
|
if (!existing.openId) {
|
|
const openId = `local:adminItinova:${randomUUID()}`;
|
|
await conn.execute("UPDATE users SET openId = ? WHERE id = ?", [openId, existing.id]);
|
|
console.log(`Compte adminItinova : openId corrigé (id=${existing.id})`);
|
|
} else {
|
|
console.log('Compte adminItinova déjà existant, seed ignoré.');
|
|
}
|
|
await conn.end();
|
|
process.exit(0);
|
|
}
|
|
|
|
// Créer l'utilisateur adminItinova avec un openId local unique
|
|
const openId = `local:adminItinova:${randomUUID()}`;
|
|
|
|
const [result] = await conn.execute(
|
|
`INSERT INTO users (login, email, firstName, lastName, name, openId, role, sonumRole, isActive, loginMethod, cguAccepted, lastSignedIn, createdAt, updatedAt)
|
|
VALUES (?, ?, ?, ?, ?, ?, 'admin', 'gestionnaire', 1, 'local', 1, NOW(), NOW(), NOW())`,
|
|
['adminItinova', 'adminItinova@santinova-soft.org', 'Admin', 'SONUM', 'Admin SONUM', openId]
|
|
);
|
|
|
|
const userId = result.insertId;
|
|
|
|
// Hasher le mot de passe Itinova69!
|
|
const hash = await bcrypt.hash('Itinova69!', 10);
|
|
await conn.execute(
|
|
`INSERT INTO local_credentials (userId, passwordHash, createdAt, updatedAt) VALUES (?, ?, NOW(), NOW())`,
|
|
[userId, hash]
|
|
);
|
|
|
|
console.log(`Compte adminItinova créé avec succès (id=${userId}, openId=${openId})`);
|
|
await conn.end();
|