Browse Source
Merge branch 'main' of https://gitlab.cs.hs-fulda.de/fdai7332/java-chat
remotes/origin/server
Merge branch 'main' of https://gitlab.cs.hs-fulda.de/fdai7332/java-chat
remotes/origin/server
Valentin Spiroski
11 months ago
3 changed files with 170 additions and 8 deletions
@ -0,0 +1,122 @@ |
|||
import javax.swing.*; |
|||
import java.awt.event.ActionEvent; |
|||
import java.awt.event.ActionListener; |
|||
import java.util.List; |
|||
import java.awt.event.KeyEvent; |
|||
import java.awt.event.KeyListener; |
|||
|
|||
public class LoginGUI extends JFrame implements ActionListener { |
|||
private JTextField usernameField; |
|||
private JPasswordField passwordField; |
|||
private JButton loginButton; |
|||
private JCheckBox stayLoggedInCheckbox; |
|||
|
|||
public LoginGUI() { |
|||
setTitle("Login"); |
|||
setSize(300, 180); |
|||
setDefaultCloseOperation(EXIT_ON_CLOSE); |
|||
setLayout(null); |
|||
|
|||
JLabel usernameLabel = new JLabel("Username:"); |
|||
usernameLabel.setBounds(20, 20, 80, 25); |
|||
add(usernameLabel); |
|||
|
|||
usernameField = new JTextField(); |
|||
usernameField.setBounds(100, 20, 160, 25); |
|||
add(usernameField); |
|||
|
|||
JLabel passwordLabel = new JLabel("Password:"); |
|||
passwordLabel.setBounds(20, 50, 80, 25); |
|||
add(passwordLabel); |
|||
|
|||
passwordField = new JPasswordField(); |
|||
passwordField.setBounds(100, 50, 160, 25); |
|||
add(passwordField); |
|||
|
|||
stayLoggedInCheckbox = new JCheckBox("Stay Logged In"); |
|||
stayLoggedInCheckbox.setBounds(20, 80, 150, 25); |
|||
add(stayLoggedInCheckbox); |
|||
|
|||
loginButton = new JButton("Login"); |
|||
loginButton.setBounds(100, 110, 100, 25); |
|||
loginButton.addActionListener(this); |
|||
add(loginButton); |
|||
|
|||
getRootPane().setDefaultButton(loginButton); |
|||
|
|||
passwordField.addKeyListener(new EnterKeyListener()); |
|||
|
|||
stayLoggedInCheckbox.addActionListener(new ActionListener() { |
|||
@Override |
|||
public void actionPerformed(ActionEvent e) { |
|||
boolean stayLoggedIn = stayLoggedInCheckbox.isSelected(); |
|||
String username = usernameField.getText(); |
|||
updateStayLoggedIn(username, stayLoggedIn); |
|||
} |
|||
}); |
|||
|
|||
} |
|||
|
|||
@Override |
|||
public void actionPerformed(ActionEvent e) { |
|||
if (e.getSource() == loginButton) { |
|||
login(); |
|||
} |
|||
} |
|||
|
|||
private void login() { |
|||
String username = usernameField.getText(); |
|||
String password = new String(passwordField.getPassword()); |
|||
boolean stayLoggedIn = stayLoggedInCheckbox.isSelected(); // Get checkbox state |
|||
|
|||
if (authenticateUser(username, password)) { |
|||
JOptionPane.showMessageDialog(this, "Login successful!"); |
|||
// Perform actions after successful login |
|||
|
|||
dispose(); |
|||
} else { |
|||
JOptionPane.showMessageDialog(this, "Invalid username or password", "Login Error", JOptionPane.ERROR_MESSAGE); |
|||
} |
|||
} |
|||
|
|||
private void updateStayLoggedIn(String username, boolean stayLoggedIn) { |
|||
// Update stayLoggedIn in the JSON file for the user |
|||
CreateUser.updateStayLoggedIn("user.json", username, stayLoggedIn); |
|||
} |
|||
|
|||
// Function to authenticate the user by comparing the entered username and password with the saved user data |
|||
private boolean authenticateUser(String username, String password) { |
|||
List<CreateUser> userList = CreateUser.readUserListFromJsonFile("user.json"); |
|||
if (userList != null) { |
|||
for (CreateUser user : userList) { |
|||
if (user.getUserName().equals(username) && user.getPassword().equals(password)) { |
|||
return true; //Success |
|||
} |
|||
} |
|||
} |
|||
return false; // Fail |
|||
} |
|||
|
|||
|
|||
private class EnterKeyListener implements KeyListener { |
|||
@Override |
|||
public void keyTyped(KeyEvent e) {} |
|||
|
|||
@Override |
|||
public void keyPressed(KeyEvent e) { |
|||
if (e.getKeyCode() == KeyEvent.VK_ENTER) { |
|||
login(); |
|||
} |
|||
} |
|||
|
|||
@Override |
|||
public void keyReleased(KeyEvent e) {} |
|||
} |
|||
|
|||
public static void main(String[] args) { |
|||
SwingUtilities.invokeLater(() -> { |
|||
LoginGUI loginGUI = new LoginGUI(); |
|||
loginGUI.setVisible(true); |
|||
}); |
|||
} |
|||
} |
@ -1,14 +1,23 @@ |
|||
[ |
|||
{ |
|||
"id": "961ca202-ecbd-4dfc-ac0b-28f367618aa1", |
|||
"userName": "asd", |
|||
"password": "123456", |
|||
"birthday": "1" |
|||
"id": "a2864d79-1079-4cbb-8d77-f5f84995580d", |
|||
"userName": "Another Test User", |
|||
"password": "TestPasswort123", |
|||
"birthday": "01.01.2000", |
|||
"stayLoggedIn": false |
|||
}, |
|||
{ |
|||
"id": "d563a466-753b-4a5e-8b6c-e7e4756c7397", |
|||
"userName": "asd1", |
|||
"id": "3690702d-9c7e-48fb-8a01-ef89b3b76268", |
|||
"userName": "TestUser2", |
|||
"password": "123456", |
|||
"birthday": "1" |
|||
"birthday": "01.01.2000", |
|||
"stayLoggedIn": false |
|||
}, |
|||
{ |
|||
"id": "685bc3a6-e706-4214-a5e1-8443d1a5258e", |
|||
"userName": "Test User", |
|||
"password": "Test", |
|||
"birthday": "01.01.2000", |
|||
"stayLoggedIn": true |
|||
} |
|||
] |
Write
Preview
Loading…
Cancel
Save
Reference in new issue