Checkpoint: Le panneau d'affectations des établissements dans la page Admin est désormais disponible pour tous les utilisateurs (référents et adhérents), pas uniquement les adhérents. Ajout d'une barre de recherche dans le panneau, affichage du numéro FINESS, et composant AffectationsPanel réutilisable. Zéro erreur TypeScript.
This commit is contained in:
73
scripts/set-local-password.mjs
Normal file
73
scripts/set-local-password.mjs
Normal file
@@ -0,0 +1,73 @@
|
||||
import { drizzle } from "drizzle-orm/mysql2";
|
||||
import mysql from "mysql2/promise";
|
||||
import bcrypt from "bcryptjs";
|
||||
import { eq } from "drizzle-orm";
|
||||
import * as schema from "../drizzle/schema.ts";
|
||||
import dotenv from "dotenv";
|
||||
|
||||
dotenv.config();
|
||||
|
||||
const { users, localCredentials } = schema;
|
||||
|
||||
// ─── Paramètres ───────────────────────────────────────────────────────────────
|
||||
const TARGET_EMAIL = "o.pareige@itinova.org";
|
||||
const NEW_PASSWORD = "Itinova69!";
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
async function main() {
|
||||
if (!process.env.DATABASE_URL) {
|
||||
console.error("DATABASE_URL manquant");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const connection = await mysql.createConnection(process.env.DATABASE_URL);
|
||||
const db = drizzle(connection);
|
||||
|
||||
// Trouver l'utilisateur par email
|
||||
const result = await db
|
||||
.select()
|
||||
.from(users)
|
||||
.where(eq(users.email, TARGET_EMAIL))
|
||||
.limit(1);
|
||||
|
||||
if (!result.length) {
|
||||
console.error(`Aucun utilisateur trouvé avec l'email : ${TARGET_EMAIL}`);
|
||||
await connection.end();
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const user = result[0];
|
||||
console.log(`Utilisateur trouvé : ${user.name} (id=${user.id}, rôle=${user.sonumRole})`);
|
||||
|
||||
// Hasher le mot de passe
|
||||
const passwordHash = await bcrypt.hash(NEW_PASSWORD, 12);
|
||||
|
||||
// Insérer ou mettre à jour les credentials locaux
|
||||
const existingCreds = await db
|
||||
.select()
|
||||
.from(localCredentials)
|
||||
.where(eq(localCredentials.userId, user.id))
|
||||
.limit(1);
|
||||
|
||||
if (existingCreds.length > 0) {
|
||||
await db
|
||||
.update(localCredentials)
|
||||
.set({ passwordHash, updatedAt: new Date() })
|
||||
.where(eq(localCredentials.userId, user.id));
|
||||
console.log("Mot de passe mis à jour.");
|
||||
} else {
|
||||
await db.insert(localCredentials).values({ userId: user.id, passwordHash });
|
||||
console.log("Credentials locaux créés.");
|
||||
}
|
||||
|
||||
console.log(`\n✅ Connexion locale activée pour ${TARGET_EMAIL}`);
|
||||
console.log(` Login : ${TARGET_EMAIL}`);
|
||||
console.log(` Rôle : ${user.sonumRole}`);
|
||||
|
||||
await connection.end();
|
||||
}
|
||||
|
||||
main().catch((err) => {
|
||||
console.error("Erreur :", err);
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user