diff --git a/.gitignore b/.gitignore
index 159ea20..27f0ec7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,4 +38,5 @@ build/
### Mac OS ###
.DS_Store
-*.log
\ No newline at end of file
+*.log
+*.db
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 8e9ca13..f8de71c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,12 +33,19 @@
test
+
org.xerial
sqlite-jdbc
3.51.3.0
+
+
+ com.googlecode.lanterna
+ lanterna
+ 3.1.2
+
\ No newline at end of file
diff --git a/src/main/java/user/UserController.java b/src/main/java/user/UserController.java
index f40363f..242168d 100644
--- a/src/main/java/user/UserController.java
+++ b/src/main/java/user/UserController.java
@@ -10,11 +10,17 @@ public class UserController {
this.service = service;
}
- public Optional loginIntoUser(
+ public Optional createUser(
String username,
String password
) {
- return service.loginIntoUser(username, password);
+ return service.createUser(username, password);
}
+ public Optional getUser(
+ String username,
+ String password
+ ) {
+ return service.getUser(username, password);
+ }
}
diff --git a/src/main/java/user/UserDao.java b/src/main/java/user/UserDao.java
index 1d370dd..02f02ce 100644
--- a/src/main/java/user/UserDao.java
+++ b/src/main/java/user/UserDao.java
@@ -1,6 +1,103 @@
package user;
+import java.sql.*;
+import java.util.Optional;
+
public class UserDao {
+ public static final String DRIVER = "org.sqlite.JDBC";
+ public static final String DB_URL = "jdbc:sqlite:chat.db";
+ private Connection conn;
+ private Statement stat;
+
+ public UserDao() {
+ try {
+ conn = DriverManager.getConnection(DB_URL);
+ stat = conn.createStatement();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+
+ createTables();
+ }
+
+ public boolean createTables() {
+ String createUsers = "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR(255) UNIQUE, password VARCHAR(255) )";
+ try {
+ stat.execute(createUsers);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ return false;
+ }
+
+ return true;
+ }
+
+ public Boolean checkIfUsernameExists(String username) {
+ try {
+ PreparedStatement preparedStatement = conn.prepareStatement(
+ "SELECT * FROM users WHERE username=(?);"
+ );
+
+ preparedStatement.setString(1, username);
+ ResultSet result = preparedStatement.executeQuery();
+
+ while (result.next()) {
+ return true;
+ }
+
+ return false;
+ } catch (SQLException e) {
+ e.printStackTrace();
+ return true;
+ }
+ }
+
+
+ public Optional insertUser(String username, String password) {
+ try {
+ PreparedStatement preparedStatement = conn.prepareStatement(
+ "INSERT INTO users VALUES (NULL, ?, ?);"
+ );
+
+ preparedStatement.setString(1, username);
+ preparedStatement.setString(2, password); // FIXME, later hash or smth..
+ preparedStatement.execute();
+
+ User user = new User(username);
+ return Optional.of(user);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ return Optional.empty();
+ }
+ }
+
+ public Optional getUser(String username, String password) {
+ try {
+ PreparedStatement preparedStatement = conn.prepareStatement(
+ "SELECT * FROM users WHERE username=(?);"
+ );
+
+ preparedStatement.setString(1, username);
+ ResultSet result = preparedStatement.executeQuery();
+
+ // FIXME: Hasło tu też ogarnąć
+ String passwordFromDB;
+
+ while (result.next()) {
+ passwordFromDB = result.getString("password");
+
+ if (password.equals(passwordFromDB)) {
+ return Optional.of(new User(username));
+ } else {
+ return Optional.empty();
+ }
+ }
+ return Optional.empty();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ return Optional.empty();
+ }
+ }
}
diff --git a/src/main/java/user/UserService.java b/src/main/java/user/UserService.java
index 6ec5a83..78a665e 100644
--- a/src/main/java/user/UserService.java
+++ b/src/main/java/user/UserService.java
@@ -14,12 +14,29 @@ public class UserService {
this.userDao = userDao;
}
- public Optional loginIntoUser(
+ public Optional createUser(
String username,
String pass
) {
try {
+
+ if (!userDao.checkIfUsernameExists(username)) {
+ return userDao.insertUser(username, pass);
+ }
+
return Optional.empty();
+ } catch (Exception e) {
+ logger.error("Error creating user: {}", e.toString());
+ return Optional.empty();
+ }
+ }
+
+ public Optional getUser(
+ String username,
+ String pass
+ ) {
+ try {
+ return userDao.getUser(username, pass);
} catch (Exception e) {
logger.error("Error while login into user: {}", e.toString());
return Optional.empty();