PDLA_24/src/main/java/controller/LoginPage.java
2024-11-04 01:12:07 +01:00

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);
}
}