Restaurant Database Management System

This commit is contained in:
2026-07-18 00:02:30 +03:30
parent 00f990c653
commit de5b97a295
20 changed files with 896 additions and 159 deletions
+63 -7
View File
@@ -1,23 +1,79 @@
package dev.service;
import dev.dao.UserDao;
import dev.model.User;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class AuthService {
private final UserDao userDao = new UserDao();
/**
* Registers a new user. Checks the username is free and that the fields
* are not empty, then stores the password as a SHA-256 hash.
* Returns true only if the account was actually created.
*/
public boolean register(String username, String password, String email) {
// TODO:
// Validate and register user
if (username == null || username.isBlank()
|| password == null || password.isBlank()) {
System.out.println("Username and password are required.");
return false;
}
return false;
// Username must be unique.
if (userDao.findByUsername(username) != null) {
System.out.println("That username is already taken.");
return false;
}
User user = new User();
user.setUsername(username);
user.setPassword(hash(password)); // never store plain text
user.setEmail(email == null || email.isBlank() ? null : email);
return userDao.save(user);
}
/**
* Checks the given credentials against the database.
* Returns the User on success, or null if the username does not exist
* or the password is wrong.
*/
public User login(String username, String password) {
// TODO:
// Authenticate user
User user = userDao.findByUsername(username);
if (user == null) {
return null; // no such username
}
return null;
// Hash the entered password and compare with the stored hash.
if (user.getPassword().equals(hash(password))) {
return user;
}
return null; // wrong password
}
}
/** Hashes text with SHA-256 and returns it as a lowercase hex string. */
private String hash(String text) {
try {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] bytes = digest.digest(text.getBytes(StandardCharsets.UTF_8));
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02x", b));
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
// SHA-256 is always available, so this should never happen.
throw new RuntimeException("SHA-256 not available", e);
}
}
}