105 lines
3.8 KiB
Java
105 lines
3.8 KiB
Java
package controller;
|
|
|
|
import database.DatabaseConnection;
|
|
|
|
import javax.swing.*;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.sql.Connection;
|
|
import java.sql.PreparedStatement;
|
|
import java.sql.ResultSet;
|
|
import java.sql.SQLException;
|
|
|
|
public class LoginPage extends JFrame {
|
|
public JTextField emailField;
|
|
public JButton loginButton;
|
|
public JButton createAccountButton;
|
|
|
|
public LoginPage() {
|
|
setTitle("Page de connexion");
|
|
setSize(400, 200);
|
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
setLocationRelativeTo(null);
|
|
|
|
// Création des champs et boutons
|
|
JLabel emailLabel = new JLabel("Email :");
|
|
emailField = new JTextField(20);
|
|
loginButton = new JButton("Se connecter");
|
|
createAccountButton = new JButton("Créer un compte");
|
|
|
|
JPanel panel = new JPanel();
|
|
panel.add(emailLabel);
|
|
panel.add(emailField);
|
|
panel.add(loginButton);
|
|
panel.add(createAccountButton);
|
|
|
|
getContentPane().add(panel);
|
|
|
|
// ActionListener pour se connecter
|
|
loginButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
loginUser();
|
|
}
|
|
});
|
|
|
|
// ActionListener pour créer un compte
|
|
createAccountButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
CreateAccountPage createAccountPage = new CreateAccountPage();
|
|
createAccountPage.setVisible(true);
|
|
dispose(); // Fermer la page de login après ouverture de la page création de compte
|
|
}
|
|
});
|
|
}
|
|
|
|
// Méthode pour gérer la connexion de l'utilisateur
|
|
private void loginUser() {
|
|
String email = emailField.getText();
|
|
|
|
if (email.isEmpty()) {
|
|
JOptionPane.showMessageDialog(this, "Veuillez entrer votre email.");
|
|
return;
|
|
}
|
|
|
|
try (Connection connection = DatabaseConnection.getConnection()) {
|
|
String sql = "SELECT id, role FROM utilisateur WHERE email = ?";
|
|
PreparedStatement statement = connection.prepareStatement(sql);
|
|
statement.setString(1, email);
|
|
ResultSet resultSet = statement.executeQuery();
|
|
|
|
if (resultSet.next()) {
|
|
int utilisateurId = resultSet.getInt("id");
|
|
String role = resultSet.getString("role");
|
|
|
|
// Rediriger vers la bonne page selon le rôle
|
|
if (role.equalsIgnoreCase("benevole")) {
|
|
BenevoleDemandesPage benevoleDemandesPage = new BenevoleDemandesPage(utilisateurId);
|
|
benevoleDemandesPage.setVisible(true);
|
|
dispose();
|
|
} else if (role.equalsIgnoreCase("personne_besoin")) {
|
|
SoumettreDemande soumettreDemandePage = new SoumettreDemande(utilisateurId);
|
|
soumettreDemandePage.setVisible(true);
|
|
dispose();
|
|
} else if (role.equalsIgnoreCase("validateur")) {
|
|
Validateur validateurPage = new Validateur(utilisateurId);
|
|
validateurPage.setVisible(true);
|
|
dispose();
|
|
} else {
|
|
JOptionPane.showMessageDialog(this, "Rôle non reconnu.");
|
|
}
|
|
} else {
|
|
JOptionPane.showMessageDialog(this, "Email non trouvé. Veuillez créer un compte.");
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
JOptionPane.showMessageDialog(this, "Erreur lors de la connexion.");
|
|
}
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
LoginPage loginPage = new LoginPage();
|
|
loginPage.setVisible(true);
|
|
}
|
|
}
|