78 lines
2.0 KiB
Java
78 lines
2.0 KiB
Java
package dev.service;
|
|
|
|
import dev.dao.UserDao;
|
|
import dev.model.User;
|
|
|
|
import java.security.MessageDigest;
|
|
import java.security.NoSuchAlgorithmException;
|
|
|
|
public class AuthService {
|
|
|
|
private final UserDao userDao = new UserDao();
|
|
|
|
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;
|
|
}
|
|
|
|
if (userDao.findByUsername(username) != null) {
|
|
System.out.println("Username already exists.");
|
|
return false;
|
|
}
|
|
|
|
User user = new User(0, username, hashPassword(password), email);
|
|
|
|
return userDao.save(user);
|
|
}
|
|
|
|
public User login(String username, String password) {
|
|
|
|
// TODO:
|
|
// Authenticate user
|
|
|
|
User user = userDao.findByUsername(username);
|
|
|
|
if (user == null) {
|
|
System.out.println("Invalid username or password.");
|
|
return null;
|
|
}
|
|
|
|
if (!user.getPassword().equals(hashPassword(password))) {
|
|
System.out.println("Invalid username or password.");
|
|
return null;
|
|
}
|
|
|
|
return user;
|
|
}
|
|
|
|
private String hashPassword(String password) {
|
|
|
|
try {
|
|
MessageDigest digest = MessageDigest.getInstance("SHA-256");
|
|
byte[] hashedBytes = digest.digest(password.getBytes());
|
|
|
|
StringBuilder hexString = new StringBuilder();
|
|
|
|
for (byte b : hashedBytes) {
|
|
String hex = Integer.toHexString(0xff & b);
|
|
|
|
if (hex.length() == 1) {
|
|
hexString.append('0');
|
|
}
|
|
|
|
hexString.append(hex);
|
|
}
|
|
|
|
return hexString.toString();
|
|
|
|
} catch (NoSuchAlgorithmException e) {
|
|
throw new RuntimeException(e);
|
|
}
|
|
}
|
|
|
|
} |