Initialisation du projet Bolsa

This commit is contained in:
2026-07-01 10:56:55 +00:00
commit 849d7f1350
107 changed files with 14835 additions and 0 deletions
+116
View File
@@ -0,0 +1,116 @@
<?php
declare(strict_types=1);
session_start();
require_once __DIR__ . '/../vendor/autoload.php';
require_once __DIR__ . '/db.php';
use App\Database\Database;
use App\Database\LoginManager;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\PHPMailer;
$errors = [];
$successMessage = '';
$email = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$email = trim((string) filter_input(INPUT_POST, 'mail', FILTER_SANITIZE_EMAIL));
if ($email === '' || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = 'Veuillez saisir une adresse e-mail valide.';
} else {
try {
$database = new Database();
$loginManager = new LoginManager($database);
if (!$loginManager->existsByEmail($email)) {
$errors[] = 'Aucun compte nest associé à cette adresse e-mail.';
} else {
$resetToken = bin2hex(random_bytes(32));
if (!$loginManager->setResetTokenByEmail($email, $resetToken)) {
$errors[] = 'Erreur interne : impossible de générer le token de réinitialisation.';
} else {
$resetLink = sprintf(
'https://www.giraud-finance.com/php/reset_password.php?token=%s',
urlencode($resetToken)
);
try {
$mailer = new PHPMailer(true);
$mailer->isSMTP();
$mailer->Host = 'mx.giraud-finance.com';
$mailer->SMTPAuth = true;
$mailer->Username = 'jfgiraud@giraud-finance.com';
$mailer->Password = 'azertyQSDFGH123456+-';
$mailer->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mailer->Port = 587;
$mailer->CharSet = 'UTF-8';
$mailer->Encoding = 'base64';
$mailer->setFrom('postmaster@giraud-finance.com', 'Giraud Finance');
$mailer->addAddress($email);
$mailer->Subject = 'Réinitialisation de votre mot de passe - Giraud Finance';
$mailer->isHTML(true);
$mailer->Body = sprintf(
'<p>Bonjour,</p><p>Pour réinitialiser votre mot de passe, veuillez cliquer sur le lien suivant :</p><p><a href="%1$s">%1$s</a></p><p>Ce lien est valide pendant 30 minutes.</p><p>Si vous n\'avez pas demandé cette réinitialisation, ignorez ce message.</p>',
htmlspecialchars($resetLink, ENT_QUOTES, 'UTF-8')
);
$mailer->AltBody = "Bonjour,\n\nPour réinitialiser votre mot de passe, veuillez utiliser ce lien : $resetLink\n\nCe lien est valide pendant 30 minutes.\n\nSi vous n\'avez pas demandé cette réinitialisation, ignorez ce message.";
$mailer->send();
$successMessage = 'Nous avons bien pris en compte votre demande. Un lien de réinitialisation a été envoyé si votre adresse existe.';
} catch (Exception $mailException) {
$errors[] = 'Impossible d\'envoyer l\'e-mail de réinitialisation : ' . $mailException->getMessage();
}
}
}
} catch (Throwable $exception) {
$errors[] = 'Erreur interne : impossible de traiter la demande pour le moment.';
}
}
}
?>
<?php require_once __DIR__ . '/header.php'; ?>
<div class="login-container">
<div class="login-box">
<h2 class="login-title">Mot de passe oublié</h2>
<p class="login-subtitle">Renseignez votre adresse e-mail pour réinitialiser votre mot de passe.</p>
<?php if (!empty($errors)): ?>
<div class="alert alert-error">
<ul>
<?php foreach ($errors as $error): ?>
<li><?php echo htmlspecialchars($error, ENT_QUOTES, 'UTF-8'); ?></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<?php if ($successMessage): ?>
<div class="alert alert-success"><?php echo htmlspecialchars($successMessage, ENT_QUOTES, 'UTF-8'); ?></div>
<?php endif; ?>
<form action="forgot_password.php" method="POST" class="login-form">
<div class="form-group">
<label for="mail" class="form-label">Adresse e-mail</label>
<input type="email" id="mail" name="mail" class="form-input" placeholder="exemple@email.com" required autocomplete="email" value="<?php echo htmlspecialchars($email, ENT_QUOTES, 'UTF-8'); ?>">
</div>
<button type="submit" class="btn-submit">Envoyer la demande</button>
</form>
<div class="login-footer">
<span class="separator">•</span>
<a href="../index.php" class="signup-link">Retour à la connexion</a>
</div>
</div>
</div>
<?php require_once __DIR__ . '/footer.php'; ?>