Fixed structure of UI, Added some logic to Auth

This commit is contained in:
maciejrusek
2026-04-28 20:33:08 +02:00
parent f306606b34
commit 54c7bb47b5
9 changed files with 150 additions and 53 deletions

View File

@@ -6,6 +6,7 @@ import java.util.Optional;
public interface UserRepository { public interface UserRepository {
Optional<User> getUser(String username, String password); Optional<User> getUser(String username, String password);
Boolean userExists(String username);
Optional<User> saveUser(String username, String email, String password); Optional<User> saveUser(String username, String email, String password);
boolean deleteUser(int userId); boolean deleteUser(int userId);
} }

View File

@@ -27,6 +27,9 @@ public class UserRepositoryJdbc implements UserRepository {
preparedStatement.setString(1, username); preparedStatement.setString(1, username);
ResultSet resultSet = preparedStatement.executeQuery(); ResultSet resultSet = preparedStatement.executeQuery();
if (!resultSet.next()) {
return Optional.empty();
}
String passwordFromDB = resultSet.getString("password"); String passwordFromDB = resultSet.getString("password");
String emailFromDB = resultSet.getString("email"); String emailFromDB = resultSet.getString("email");
@@ -43,6 +46,28 @@ public class UserRepositoryJdbc implements UserRepository {
} }
} }
@Override
public Boolean userExists(String username) {
try {
PreparedStatement preparedStatement = connection.prepareStatement(
"SELECT * FROM users WHERE name=(?);"
);
preparedStatement.setString(1, username);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
return true;
}
return false;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
@Override @Override
public Optional<User> saveUser(String username, String email, String password) { public Optional<User> saveUser(String username, String email, String password) {
try { try {

View File

@@ -15,10 +15,7 @@ public class UserService {
public Optional<User> login(String username, String password) { public Optional<User> login(String username, String password) {
try { try {
return userRepository.getUser(username, password);
return Optional.empty();
} catch (Exception e) { } catch (Exception e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());
return Optional.empty(); return Optional.empty();
@@ -27,6 +24,10 @@ public class UserService {
public Optional<User> register(String username, String email, String password) { public Optional<User> register(String username, String email, String password) {
try { try {
if (userRepository.userExists(username)) {
return Optional.empty();
}
return userRepository.saveUser(username, email, password); return userRepository.saveUser(username, email, password);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();

View File

@@ -0,0 +1,28 @@
package ui;
import javax.swing.*;
import java.awt.*;
import java.util.function.Consumer;
public class AuthPanel extends BasePanel {
public AuthPanel(Consumer<String> changePanel) {
super(changePanel);
// Login
JButton loginButton = new JButton("Login");
loginButton.addActionListener(e -> {
changePanel.accept("login");
});
// Registry
JButton registryButton = new JButton("Registry");
registryButton.addActionListener(e -> {
changePanel.accept("registry");
});
add(loginButton);
add(registryButton);
}
}

View File

@@ -0,0 +1,13 @@
package ui;
import javax.swing.*;
import java.util.function.Consumer;
public abstract class BasePanel extends JPanel {
protected Consumer<String> changePanel;
public BasePanel(Consumer<String> changePanel) {
this.changePanel = changePanel;
}
}

View File

@@ -0,0 +1,30 @@
package ui;
import models.User;
import util.Session;
import javax.swing.*;
import java.util.function.Consumer;
public class HomePanel extends BasePanel {
public HomePanel(Consumer<String> changePanel) {
super(changePanel);
User user = Session.getInstance().getUser();
if (user == null) {
// Log, user is not logged.
changePanel.accept("auth");
}
JButton logoutButton = new JButton("Logout");
logoutButton.addActionListener(e -> {
Session.getInstance().logout();
changePanel.accept("auth");
});
add(logoutButton);
}
}

View File

@@ -8,17 +8,18 @@ import util.Session;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.util.Optional; import java.util.Optional;
import java.util.function.Consumer;
public class LoginPanel { public class LoginPanel extends BasePanel {
public static JPanel getLoginPanel(){ public LoginPanel(Consumer<String> changePanel) {
JPanel panel = new JPanel(); super(changePanel);
JTextField username = new JTextField("Login"); JTextField username = new JTextField("Login");
JPasswordField password = new JPasswordField("Password"); JPasswordField password = new JPasswordField("Password");
panel.add(username, BorderLayout.NORTH); add(username, BorderLayout.NORTH);
panel.add(password, BorderLayout.CENTER); add(password, BorderLayout.CENTER);
JButton loginButton = new JButton("Login"); JButton loginButton = new JButton("Login");
loginButton.addActionListener(e -> { loginButton.addActionListener(e -> {
@@ -32,18 +33,22 @@ public class LoginPanel {
Optional<User> user = service.login(usernameText, passwordText); Optional<User> user = service.login(usernameText, passwordText);
if (user.isPresent()) { if (user.isPresent()) {
Session.getInstance().setUser(user.get()); Session.getInstance().setUser(user.get());
changePanel.accept("home");
} else { } else {
JOptionPane.showMessageDialog(panel, "User not found"); JOptionPane.showMessageDialog(this, "User not found");
} }
} catch (Exception ex) { } catch (Exception ex) {
JOptionPane.showMessageDialog(panel, "Error"); ex.printStackTrace();
JOptionPane.showMessageDialog(this, ex.getMessage());
} }
}); });
add(loginButton, BorderLayout.SOUTH);
panel.add(loginButton, BorderLayout.SOUTH); JButton returnButton = new JButton("Return");
returnButton.addActionListener(e -> {
return panel; changePanel.accept("auth");
});
add(returnButton, BorderLayout.EAST);
} }
} }

View File

@@ -7,9 +7,18 @@ public class MyFrame extends JFrame {
JPanel mainPanel = new JPanel(new CardLayout()); JPanel mainPanel = new JPanel(new CardLayout());
public void changePanel(String panel) { public void changePanel(String panel) {
CardLayout cardLayout = (CardLayout) mainPanel.getLayout();
cardLayout.show(mainPanel, panel);
} }
public void init(JPanel mainPanel) {
mainPanel.add(new AuthPanel(this::changePanel), "auth");
mainPanel.add(new LoginPanel(this::changePanel), "login");
mainPanel.add(new RegistryPanel(this::changePanel), "registry");
mainPanel.add(new HomePanel(this::changePanel), "home");
}
public MyFrame() { public MyFrame() {
super("Todo App"); super("Todo App");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
@@ -17,26 +26,7 @@ public class MyFrame extends JFrame {
setLocation(50, 50); setLocation(50, 50);
setLayout(new CardLayout()); setLayout(new CardLayout());
JPanel startPanel = new JPanel(); init(mainPanel);
JButton loginButton = new JButton("Login");
JButton registryButton = new JButton("Registry");
startPanel.add(loginButton);
startPanel.add(registryButton);
mainPanel.add(startPanel, "start");
mainPanel.add(LoginPanel.getLoginPanel(), "login");
mainPanel.add(RegistryPanel.getRegistryPanel(), "registry");
loginButton.addActionListener(e -> {
CardLayout cl = (CardLayout)mainPanel.getLayout();
cl.show(mainPanel, "login");
});
registryButton.addActionListener(e -> {
CardLayout cl = (CardLayout)mainPanel.getLayout();
cl.show(mainPanel, "registry");
});
add(mainPanel); add(mainPanel);
setVisible(true); setVisible(true);
} }

View File

@@ -8,22 +8,23 @@ import util.Session;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.util.Optional; import java.util.Optional;
import java.util.function.Consumer;
public class RegistryPanel { public class RegistryPanel extends BasePanel {
public static JPanel getRegistryPanel(){ public RegistryPanel(Consumer<String> changePanel){
JPanel panel = new JPanel(); super(changePanel);
JTextField username = new JTextField("Login"); JTextField username = new JTextField("Login");
JTextField email = new JTextField("email@email.com"); JTextField email = new JTextField("email@email.com");
JPasswordField password = new JPasswordField("Password"); JPasswordField password = new JPasswordField("Password");
panel.add(username, BorderLayout.NORTH); add(username, BorderLayout.NORTH);
panel.add(email, BorderLayout.NORTH); add(email, BorderLayout.NORTH);
panel.add(password, BorderLayout.CENTER); add(password, BorderLayout.CENTER);
JButton loginButton = new JButton("Registry"); JButton registryButton = new JButton("Registry");
loginButton.addActionListener(e -> { registryButton.addActionListener(e -> {
try { try {
String usernameText = username.getText(); String usernameText = username.getText();
String emailText = email.getText(); String emailText = email.getText();
@@ -35,21 +36,24 @@ public class RegistryPanel {
Optional<User> user = service.register(usernameText, emailText, passwordText); Optional<User> user = service.register(usernameText, emailText, passwordText);
if (user.isPresent()) { if (user.isPresent()) {
Session.getInstance().setUser(user.get()); Session.getInstance().setUser(user.get());
changePanel.accept("home");
} else { } else {
JOptionPane.showMessageDialog(panel, "User not found"); JOptionPane.showMessageDialog(this, "User not found");
} }
} catch (Exception ex) { } catch (Exception ex) {
JOptionPane.showMessageDialog(panel, "Error"); ex.printStackTrace();
JOptionPane.showMessageDialog(this, ex.getMessage());
} }
}); });
add(registryButton, BorderLayout.SOUTH);
panel.add(loginButton, BorderLayout.SOUTH); JButton returnButton = new JButton("Return");
returnButton.addActionListener(e -> {
return panel; changePanel.accept("auth");
});
add(returnButton, BorderLayout.SOUTH);
} }
} }