package ui; import models.User; import repository.UserRepository; import service.UserService; import util.Session; import javax.swing.*; import java.awt.*; import java.util.Optional; import java.util.function.Consumer; public class LoginPanel extends BasePanel { public LoginPanel(Consumer changePanel) { super(changePanel); JTextField username = new JTextField("Login"); JPasswordField password = new JPasswordField("Password"); add(username, BorderLayout.NORTH); add(password, BorderLayout.CENTER); JButton loginButton = new JButton("Login"); loginButton.addActionListener(e -> { try { String usernameText = username.getText(); String passwordText = new String(password.getPassword()); UserRepository userRepository = Session.getUserRepository(); UserService service = new UserService(userRepository); Optional user = service.login(usernameText, passwordText); if (user.isPresent()) { Session.getInstance().setUser(user.get()); changePanel.accept("home"); } else { JOptionPane.showMessageDialog(this, "User not found"); } } catch (Exception ex) { ex.printStackTrace(); JOptionPane.showMessageDialog(this, ex.getMessage()); } }); add(loginButton, BorderLayout.SOUTH); JButton returnButton = new JButton("Return"); returnButton.addActionListener(e -> { changePanel.accept("auth"); }); add(returnButton, BorderLayout.EAST); } }