import 'dotenv/config'; import express from 'express'; import mongoose from 'mongoose'; import cors from 'cors'; import bcrypt from 'bcryptjs'; import jwt from 'jsonwebtoken'; import nodemailer from 'nodemailer'; import crypto from 'crypto'; import path from 'path'; import fs from 'fs'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const app = express(); app.use(cors()); app.use(express.json()); // --- CONNEXION MONGODB --- mongoose.connect(process.env.MONGO_URI) .then(() => console.log('✅ MongoDB Connecté')) .catch(err => console.error('❌ Erreur DB:', err)); // --- CONFIGURATION NODEMAILER (CORRIGÉE) --- const transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 465, secure: true, // Utilisation du port SSL 465 auth: { user: process.env.EMAIL_USER, pass: process.env.EMAIL_PASS }, tls: { rejectUnauthorized: false // Aide à passer outre certains blocages réseau } }); // Vérification immédiate transporter.verify((error) => { if (error) { console.error('❌ Erreur SMTP Persistante:', error.message); } else { console.log('📧 Serveur SMTP authentifié avec succès !'); } }); const User = mongoose.model('User', new mongoose.Schema({ email: { type: String, unique: true, required: true }, password: { type: String, required: true }, otp: String, otpExpires: Date })); // --- ROUTE REGISTER --- app.post('/api/auth/register', async (req, res) => { const { email, password } = req.body; const otp = Math.floor(100000 + Math.random() * 900000).toString(); try { let user = await User.findOne({ email }); if (!user) { const hashedPassword = await bcrypt.hash(password, 10); user = new User({ email, password: hashedPassword, otp, otpExpires: Date.now() + 600000 }); } else { user.otp = otp; user.otpExpires = Date.now() + 600000; } await user.save(); await transporter.sendMail({ from: `"Kibali AI" <${process.env.EMAIL_USER}>`, to: email, subject: `Code de vérification : ${otp}`, html: `

Votre code Kibali

${otp}

` }); res.json({ message: "OTP envoyé" }); } catch (err) { console.error("Erreur lors du register:", err); res.status(500).json({ error: "Erreur serveur ou SMTP" }); } }); const PORT = process.env.PORT || 5000; app.listen(PORT, () => console.log(`🚀 Serveur actif sur le port ${PORT}`));