Add username and password
This commit is contained in:
parent
931e34bcaa
commit
1e24c3aba1
6 changed files with 85 additions and 47 deletions
|
@ -22,8 +22,8 @@ import java.util.List;
|
||||||
public class Client {
|
public class Client {
|
||||||
private final int port;
|
private final int port;
|
||||||
private final String address;
|
private final String address;
|
||||||
private final String username;
|
protected final String username;
|
||||||
private final String password;
|
protected final String password;
|
||||||
protected final Socket socket;
|
protected final Socket socket;
|
||||||
protected final ObjectOutputStream out;
|
protected final ObjectOutputStream out;
|
||||||
private ObjectInputStream in;
|
private ObjectInputStream in;
|
||||||
|
|
|
@ -5,13 +5,15 @@ import org.jetbrains.annotations.NotNull;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
public record ServerConfiguration(@NotNull String address, int port) {
|
public record ServerConfiguration(@NotNull String address, int port, @NotNull String pseudo, @NotNull String password) {
|
||||||
@NotNull
|
@NotNull
|
||||||
private static final File file = new File("connection.properties");
|
private static final File file = new File("connection.properties");
|
||||||
|
|
||||||
public ServerConfiguration(@NotNull String address, int port) {
|
public ServerConfiguration(@NotNull String address, int port, @NotNull String pseudo, @NotNull String password) {
|
||||||
this.address = address;
|
this.address = address;
|
||||||
this.port = port;
|
this.port = port;
|
||||||
|
this.pseudo = pseudo;
|
||||||
|
this.password = password;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ServerConfiguration load() throws IOException, NumberFormatException {
|
public static ServerConfiguration load() throws IOException, NumberFormatException {
|
||||||
|
@ -23,13 +25,15 @@ public record ServerConfiguration(@NotNull String address, int port) {
|
||||||
|
|
||||||
@NotNull final Properties properties = new Properties();
|
@NotNull final Properties properties = new Properties();
|
||||||
properties.load(new FileReader(file));
|
properties.load(new FileReader(file));
|
||||||
return new ServerConfiguration(properties.getProperty("address"), Integer.parseInt(properties.getProperty("port")));
|
return new ServerConfiguration(properties.getProperty("address"), Integer.parseInt(properties.getProperty("port")), properties.getProperty("pseudo"), properties.getProperty("password"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void save() throws IOException {
|
public void save() throws IOException {
|
||||||
@NotNull final Properties properties = new Properties();
|
@NotNull final Properties properties = new Properties();
|
||||||
properties.setProperty("address", this.address);
|
properties.setProperty("address", this.address);
|
||||||
properties.setProperty("port", String.valueOf(this.port));
|
properties.setProperty("port", String.valueOf(this.port));
|
||||||
|
properties.setProperty("pseudo", this.pseudo);
|
||||||
|
properties.setProperty("password", this.password);
|
||||||
properties.store(new FileWriter(file), "Information needed to connect to the server");
|
properties.store(new FileWriter(file), "Information needed to connect to the server");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,4 +44,12 @@ public record ServerConfiguration(@NotNull String address, int port) {
|
||||||
public int getPort() {
|
public int getPort() {
|
||||||
return port;
|
return port;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getPseudo() {
|
||||||
|
return pseudo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return password;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,9 @@ package fr.univ.lyon1.gui;
|
||||||
|
|
||||||
import fr.univ.lyon1.client.Client;
|
import fr.univ.lyon1.client.Client;
|
||||||
import fr.univ.lyon1.client.ClientReceive;
|
import fr.univ.lyon1.client.ClientReceive;
|
||||||
import fr.univ.lyon1.common.Message;
|
import fr.univ.lyon1.common.command.Command;
|
||||||
import fr.univ.lyon1.common.command.CommandType;
|
import fr.univ.lyon1.common.command.CommandType;
|
||||||
import fr.univ.lyon1.gui.handlers.MainHandler;
|
import fr.univ.lyon1.gui.handlers.MainHandler;
|
||||||
import fr.univ.lyon1.common.command.Command;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -13,8 +12,8 @@ import java.util.List;
|
||||||
public class ClientGUI extends Client {
|
public class ClientGUI extends Client {
|
||||||
private final MainHandler gui;
|
private final MainHandler gui;
|
||||||
|
|
||||||
public ClientGUI(MainHandler handler, String address, int port) throws IOException {
|
public ClientGUI(MainHandler handler, String address, int port, String pseudo, String password) throws IOException {
|
||||||
super(address, port, null, null);
|
super(address, port, pseudo, password);
|
||||||
this.gui = handler;
|
this.gui = handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,7 +30,7 @@ public class ClientGUI extends Client {
|
||||||
Thread clientReceiveThread = new Thread(new ClientReceive(this, super.socket));
|
Thread clientReceiveThread = new Thread(new ClientReceive(this, super.socket));
|
||||||
clientReceiveThread.start();
|
clientReceiveThread.start();
|
||||||
|
|
||||||
out.writeObject(new Command(CommandType.login, List.of("test", "test"))); // ToDo: Setup login
|
out.writeObject(new Command(CommandType.login, List.of(this.username, this.password))); // ToDo: Setup login
|
||||||
out.flush();
|
out.flush();
|
||||||
|
|
||||||
started = true;
|
started = true;
|
||||||
|
|
|
@ -17,6 +17,10 @@ public class ConnectGuiController {
|
||||||
@FXML
|
@FXML
|
||||||
public TextField portTextField;
|
public TextField portTextField;
|
||||||
@FXML
|
@FXML
|
||||||
|
public TextField pseudoTextField;
|
||||||
|
@FXML
|
||||||
|
public TextField passwordTextField;
|
||||||
|
@FXML
|
||||||
public Button connectButton;
|
public Button connectButton;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -29,7 +33,13 @@ public class ConnectGuiController {
|
||||||
final String address = this.addressTextField.getText();
|
final String address = this.addressTextField.getText();
|
||||||
@NotNull
|
@NotNull
|
||||||
final String port = this.portTextField.getText();
|
final String port = this.portTextField.getText();
|
||||||
|
@NotNull
|
||||||
|
final String pseudo = this.pseudoTextField.getText();
|
||||||
|
@NotNull
|
||||||
|
final String password = this.passwordTextField.getText();
|
||||||
|
|
||||||
|
System.out.println("Checking if all text fields is not empty");
|
||||||
|
if (!address.isEmpty() && !port.isEmpty() && !pseudo.isEmpty() && !password.isEmpty()) {
|
||||||
System.out.println("Checking if port is valid...");
|
System.out.println("Checking if port is valid...");
|
||||||
// Check if the port is a number and if it's an available port
|
// Check if the port is a number and if it's an available port
|
||||||
if (this.isNumber(port) && this.isAvailablePort(Integer.parseInt(port))) {
|
if (this.isNumber(port) && this.isAvailablePort(Integer.parseInt(port))) {
|
||||||
|
@ -43,8 +53,8 @@ public class ConnectGuiController {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Save server configuration
|
// Save server configuration
|
||||||
new ServerConfiguration(address, iPort).save();
|
new ServerConfiguration(address, iPort, pseudo, password).save();
|
||||||
// Dialog.showSuccessDialog("Connecté", "Vous êtes bien connecté au serveur");
|
Dialog.showSuccessDialog("Connecté", "Vous êtes bien connecté au serveur");
|
||||||
System.out.println("File saved, next step...");
|
System.out.println("File saved, next step...");
|
||||||
|
|
||||||
System.out.println("Get scene...");
|
System.out.println("Get scene...");
|
||||||
|
@ -68,6 +78,10 @@ public class ConnectGuiController {
|
||||||
Dialog.showErrorDialog("Erreur", "Veuillez saisir un numéro de port valide");
|
Dialog.showErrorDialog("Erreur", "Veuillez saisir un numéro de port valide");
|
||||||
this.connectButton.setDisable(false);
|
this.connectButton.setDisable(false);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
Dialog.showErrorDialog("Erreur", "Veuillez renseigner tout les champs");
|
||||||
|
this.connectButton.setDisable(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isNumber(String text) {
|
private boolean isNumber(String text) {
|
||||||
|
|
|
@ -22,7 +22,7 @@ public class MainHandler implements Handler {
|
||||||
@NotNull
|
@NotNull
|
||||||
final ServerConfiguration serverConfiguration = ServerConfiguration.load();
|
final ServerConfiguration serverConfiguration = ServerConfiguration.load();
|
||||||
System.out.println("Launch Client GUI...");
|
System.out.println("Launch Client GUI...");
|
||||||
this.client = new ClientGUI(this, serverConfiguration.getAddress(), serverConfiguration.getPort());
|
this.client = new ClientGUI(this, serverConfiguration.getAddress(), serverConfiguration.getPort(), serverConfiguration.getPseudo(), serverConfiguration.getPassword());
|
||||||
|
|
||||||
System.out.println("Set...");
|
System.out.println("Set...");
|
||||||
stage.setTitle("Chat client");
|
stage.setTitle("Chat client");
|
||||||
|
|
|
@ -5,34 +5,47 @@
|
||||||
<?import javafx.scene.layout.*?>
|
<?import javafx.scene.layout.*?>
|
||||||
<?import javafx.scene.text.*?>
|
<?import javafx.scene.text.*?>
|
||||||
|
|
||||||
<VBox alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity"
|
<VBox alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/16" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fr.univ.lyon1.gui.controller.ConnectGuiController">
|
||||||
prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.2" xmlns:fx="http://javafx.com/fxml/1"
|
|
||||||
fx:controller="fr.univ.lyon1.gui.controller.ConnectGuiController">
|
|
||||||
<Label text="Connexion">
|
<Label text="Connexion">
|
||||||
<font>
|
<font>
|
||||||
<Font name="System Bold" size="18.0"/>
|
<Font name="System Bold" size="18.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<StackPane prefHeight="10.0" prefWidth="200.0"/>
|
<StackPane prefHeight="10.0" prefWidth="200.0" />
|
||||||
<HBox alignment="CENTER" prefHeight="50.0" prefWidth="200.0">
|
<HBox alignment="CENTER" prefHeight="50.0" prefWidth="200.0">
|
||||||
<Label text="Adresse :"/>
|
<Label text="Adresse :" />
|
||||||
<TextField fx:id="addressTextField">
|
<TextField fx:id="addressTextField">
|
||||||
<HBox.margin>
|
<HBox.margin>
|
||||||
<Insets left="10.0"/>
|
<Insets left="10.0" />
|
||||||
</HBox.margin>
|
</HBox.margin>
|
||||||
</TextField>
|
</TextField>
|
||||||
</HBox>
|
</HBox>
|
||||||
<HBox alignment="CENTER" layoutX="10.0" layoutY="174.0" prefHeight="50.0" prefWidth="200.0">
|
<HBox alignment="CENTER" layoutX="10.0" layoutY="174.0" prefHeight="50.0" prefWidth="200.0">
|
||||||
<Label text="Port :"/>
|
<Label text="Port :" />
|
||||||
<TextField fx:id="portTextField">
|
<TextField fx:id="portTextField">
|
||||||
|
<HBox.margin>
|
||||||
|
<Insets left="10.0" />
|
||||||
|
</HBox.margin>
|
||||||
|
</TextField>
|
||||||
|
</HBox>
|
||||||
|
<HBox alignment="CENTER" prefHeight="50.0" prefWidth="200.0">
|
||||||
|
<Label text="Pseudonyme :"/>
|
||||||
|
<TextField fx:id="pseudoTextField">
|
||||||
|
<HBox.margin>
|
||||||
|
<Insets left="10.0"/>
|
||||||
|
</HBox.margin>
|
||||||
|
</TextField>
|
||||||
|
<StackPane prefHeight="50.0" prefWidth="90.0"/>
|
||||||
|
<Label text="Mot de passe :"/>
|
||||||
|
<TextField fx:id="passwordTextField" cache="true">
|
||||||
<HBox.margin>
|
<HBox.margin>
|
||||||
<Insets left="10.0"/>
|
<Insets left="10.0"/>
|
||||||
</HBox.margin>
|
</HBox.margin>
|
||||||
</TextField>
|
</TextField>
|
||||||
</HBox>
|
</HBox>
|
||||||
<Button mnemonicParsing="false" text="Se connecter" onAction="#connect" fx:id="connectButton">
|
<Button fx:id="connectButton" mnemonicParsing="false" onAction="#connect" text="Se connecter">
|
||||||
<VBox.margin>
|
<VBox.margin>
|
||||||
<Insets top="20.0"/>
|
<Insets top="20.0" />
|
||||||
</VBox.margin>
|
</VBox.margin>
|
||||||
</Button>
|
</Button>
|
||||||
</VBox>
|
</VBox>
|
||||||
|
|
Reference in a new issue