From d3d1d93592ebc31d2ce7ebd27acc938545f60e71 Mon Sep 17 00:00:00 2001 From: SovereignX Date: Wed, 23 Sep 2026 17:42:09 +0200 Subject: [PATCH] =?UTF-8?q?V=C3=A9rification=20par=20mot=20de=20passe=20(s?= =?UTF-8?q?ans=20hash)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/views/PrimaryWindow.java | 54 ++++++++++++++++--- .../src/main/java/views/QuestionPanel.java | 26 ++++++++- 2 files changed, 72 insertions(+), 8 deletions(-) diff --git a/ProjetJava/src/main/java/views/PrimaryWindow.java b/ProjetJava/src/main/java/views/PrimaryWindow.java index 07b0ce4..e0271b6 100644 --- a/ProjetJava/src/main/java/views/PrimaryWindow.java +++ b/ProjetJava/src/main/java/views/PrimaryWindow.java @@ -1,13 +1,16 @@ package views; +import db.DbConnection; import java.awt.BorderLayout; import java.awt.Color; +import java.util.Properties; import javax.swing.ButtonGroup; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; +import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButtonMenuItem; import javax.swing.JTabbedPane; @@ -29,6 +32,9 @@ public class PrimaryWindow extends JFrame { // Création de la barre de menu JMenuBar menuBar = new JMenuBar(); + // Création de la zone centrale avec les onglets + JTabbedPane tabbedPane = new JTabbedPane(); + // Activité JMenu menuActivite = new JMenu("Activité"); menuActivite.add(new JMenuItem("Dessin")); @@ -45,25 +51,58 @@ public class PrimaryWindow extends JFrame { menuNiveau.add(niveau1); menuNiveau.add(niveau2); - // Administration + // Administration [TEST] JMenu menuAdmin = new JMenu("Administration"); - menuAdmin.add(new JMenuItem("S'authentifier")); + JMenuItem authPart = new JMenuItem("S'authentifier"); + menuAdmin.add(authPart); + + authPart.addActionListener(e -> { + String test = JOptionPane.showInputDialog(this, "Message mdp"); + + if (test != null) { + try { + Properties props = new Properties(); + props.load(DbConnection.class.getClassLoader().getResourceAsStream("database_config.properties")); + + String testMdp = props.getProperty("password"); + + if (test.equals(testMdp)) { + // Vérification si l'onglet est déjà ouvert + if (tabbedPane.indexOfTab("Administration") == -1) { + // Création du panel Administration [PROVISOIRE TANT QUE LA PAGE ADMIN N'EXISTE PAS ENCORE !] + JPanel panelAdmin = new JPanel(); + panelAdmin.setBackground(Color.LIGHT_GRAY); + panelAdmin.add(new JLabel("Zone Administrateur")); + + // Ajout et focus sur l'onglet Administration + tabbedPane.addTab("Administration", panelAdmin); + tabbedPane.setSelectedIndex(tabbedPane.getTabCount() - 1); + } + } else { + // Si le mot de passe n'est pas le bon + JOptionPane.showMessageDialog(this, "Mot de passe incorrect !", "Erreur authentification", JOptionPane.ERROR_MESSAGE); + } + + } catch (Exception ex) { + // Si je fichier properties n'est pas trouvé + JOptionPane.showMessageDialog(this, "Erreur properties.", "Erreur properties", JOptionPane.ERROR_MESSAGE); + } + } + + }); + // menuAdmin.add(new JMenuItem("S'authentifier")); menuBar.add(menuActivite); menuBar.add(menuNiveau); menuBar.add(menuAdmin); setJMenuBar(menuBar); // Ajout du menu à la fenêtre - // Création de la zone centrale avec les onglets - JTabbedPane tabbedPane = new JTabbedPane(); - // Création des panneaux [activités] // Ardoise MagicSlate ardoise = new MagicSlate(); // Calcul //JPanel CalculPanel p = new CalculPanel(); - // Question QuestionPanel panelQuestion = new QuestionPanel(); @@ -72,11 +111,14 @@ public class PrimaryWindow extends JFrame { //tabbedPane.addTab("Calcul", panelCalcul); tabbedPane.addTab("Question", panelQuestion); + // Admin /* * Onglet Administration (quatrième onglet) * invisible par défaut. Il ne sera ajouté au tabbedPane * qu'après la validation du mot de passe. */ + Properties props = new Properties(); + // Ajout du gestionnaire d'onglets au centre de la fenêtre add(tabbedPane, BorderLayout.CENTER); } diff --git a/ProjetJava/src/main/java/views/QuestionPanel.java b/ProjetJava/src/main/java/views/QuestionPanel.java index 3b66e0c..f35c368 100644 --- a/ProjetJava/src/main/java/views/QuestionPanel.java +++ b/ProjetJava/src/main/java/views/QuestionPanel.java @@ -7,6 +7,7 @@ import java.awt.FlowLayout; import java.awt.Font; import java.awt.GridBagLayout; import java.awt.GridLayout; +import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; @@ -58,7 +59,7 @@ public final class QuestionPanel extends JPanel { labelValidator = new JLabel("Placeholder Validateur"); labelValidator.setFont(new Font("Arial", Font.BOLD, 36)); panelValidator.add(labelValidator); - + panelResponse.add(labelReponse); panelResponse.add(textResponse); @@ -101,7 +102,7 @@ public final class QuestionPanel extends JPanel { // Initialise une question au lancement loadNewQuestion(); - + // ActionListener afin de faire en sorte que le bouton "Autre question" change la question en lançant la fonction loadNewQuestion btnNewQuestion.addActionListener(e -> loadNewQuestion()); // ActionListener permet de récupérer la réponse (en base de données) et de l'ajouter dans l'input @@ -112,7 +113,27 @@ public final class QuestionPanel extends JPanel { }); // ActionLister pour comparer la valeur entré par l'utilisateur et la valeur réelle de la question actuelle btnCheck.addActionListener(e -> { + if (currentQuestion == null) { + return; + } + boolean okay = service.validateAnswer(textResponse.getText(), currentQuestion.getAnswer()); + + if (okay) { + labelValidator.setText("C'est une bonne réponse, bien joué !"); + labelValidator.setForeground(Color.GREEN); + textResponse.setBackground(new Color(180, 230, 180)); + textResponse.setBorder(BorderFactory.createLineBorder(Color.GREEN)); + //loadNewQuestion(); + } else { + labelValidator.setText("C'est une mauvaise réponse, recommence !"); + labelValidator.setForeground(Color.RED); + textResponse.setBackground(new Color(245, 190, 190)); + textResponse.setBorder(BorderFactory.createLineBorder(Color.RED)); + + // Récupère le focus + textResponse.requestFocusInWindow(); + } }); } @@ -130,6 +151,7 @@ public final class QuestionPanel extends JPanel { } else { labelQuestion.setText("Pas de question récupérée"); } + labelValidator.setText(""); } } -- GitLab