Spaces:
Configuration error
Configuration error
| import javax.swing.*; | |
| import java.awt.*; | |
| import java.awt.event.*; | |
| import java.io.*; | |
| public class LoginPage extends JPanel { | |
| private JTextField usernameField; | |
| private JPasswordField passwordField; | |
| private JButton loginButton, signupButton; | |
| private JLabel statusLabel; | |
| private boolean isSignUpMode = false; | |
| private ClearPassAIGUI controller; | |
| public LoginPage(ClearPassAIGUI controller) { | |
| this.controller = controller; | |
| setLayout(new GridBagLayout()); | |
| GridBagConstraints gbc = new GridBagConstraints(); | |
| gbc.insets = new Insets(10, 10, 10, 10); | |
| gbc.fill = GridBagConstraints.HORIZONTAL; | |
| JLabel titleLabel = new JLabel("Welcome to ClearPass AI", SwingConstants.CENTER); | |
| titleLabel.setFont(new Font("Arial", Font.BOLD, 24)); | |
| gbc.gridx = 0; | |
| gbc.gridy = 0; | |
| gbc.gridwidth = 2; | |
| add(titleLabel, gbc); | |
| gbc.gridy++; | |
| gbc.gridwidth = 1; | |
| add(new JLabel("Username:"), gbc); | |
| gbc.gridx = 1; | |
| usernameField = new JTextField(15); | |
| add(usernameField, gbc); | |
| gbc.gridx = 0; | |
| gbc.gridy++; | |
| add(new JLabel("Password:"), gbc); | |
| gbc.gridx = 1; | |
| passwordField = new JPasswordField(15); | |
| add(passwordField, gbc); | |
| gbc.gridx = 0; | |
| gbc.gridy++; | |
| gbc.gridwidth = 2; | |
| loginButton = new JButton("Login"); | |
| signupButton = new JButton("Sign Up"); | |
| JPanel buttonPanel = new JPanel(new FlowLayout()); | |
| buttonPanel.add(loginButton); | |
| buttonPanel.add(signupButton); | |
| add(buttonPanel, gbc); | |
| gbc.gridy++; | |
| statusLabel = new JLabel("", SwingConstants.CENTER); | |
| add(statusLabel, gbc); | |
| loginButton.addActionListener(e -> { | |
| if (isSignUpMode) | |
| handleSignUp(); | |
| else | |
| handleLogin(); | |
| }); | |
| signupButton.addActionListener(e -> toggleMode()); | |
| } | |
| private void toggleMode() { | |
| isSignUpMode = !isSignUpMode; | |
| loginButton.setText(isSignUpMode ? "Create Account" : "Login"); | |
| signupButton.setText(isSignUpMode ? "Back to Login" : "Sign Up"); | |
| statusLabel.setText(""); | |
| } | |
| private void handleLogin() { | |
| String username = usernameField.getText().trim(); | |
| String password = new String(passwordField.getPassword()); | |
| if (username.isEmpty() || password.isEmpty()) { | |
| showMessage("Please enter both fields", Color.RED); | |
| return; | |
| } | |
| if (authenticate(username, password)) { | |
| controller.setCurrentUser(username); | |
| controller.showScreen("Welcome"); | |
| } else { | |
| showMessage("Invalid credentials", Color.RED); | |
| } | |
| } | |
| private void handleSignUp() { | |
| String username = usernameField.getText().trim(); | |
| String password = new String(passwordField.getPassword()); | |
| if (username.isEmpty() || password.isEmpty()) { | |
| showMessage("Please fill all fields", Color.RED); | |
| return; | |
| } | |
| File file = new File("users.txt"); | |
| try { | |
| file.createNewFile(); | |
| BufferedReader reader = new BufferedReader(new FileReader(file)); | |
| String line; | |
| while ((line = reader.readLine()) != null) { | |
| if (line.startsWith(username + ":")) { | |
| reader.close(); | |
| showMessage("Username already exists", Color.RED); | |
| return; | |
| } | |
| } | |
| reader.close(); | |
| BufferedWriter writer = new BufferedWriter(new FileWriter(file, true)); | |
| writer.write(username + ":" + password); | |
| writer.newLine(); | |
| writer.close(); | |
| JOptionPane.showMessageDialog(this, "Account created successfully!"); | |
| toggleMode(); | |
| } catch (IOException ex) { | |
| showMessage("Error accessing file", Color.RED); | |
| } | |
| } | |
| private boolean authenticate(String username, String password) { | |
| File file = new File("users.txt"); | |
| try (BufferedReader reader = new BufferedReader(new FileReader(file))) { | |
| String line; | |
| while ((line = reader.readLine()) != null) { | |
| String[] parts = line.split(":"); | |
| if (parts.length == 2 && parts[0].equals(username) && parts[1].equals(password)) { | |
| return true; | |
| } | |
| } | |
| } catch (IOException e) { | |
| showMessage("Error reading file", Color.RED); | |
| } | |
| return false; | |
| } | |
| private void showMessage(String message, Color color) { | |
| statusLabel.setText(message); | |
| statusLabel.setForeground(color); | |
| } | |
| } | |