diff --git a/.gitignore b/.gitignore index ed2d46e..142b6d5 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ src/frontend/tsconfig.node.tsbuildinfo *.iml .DS_Store *.log +build-output/ diff --git a/src/main/java/com/l2/shots/auth/AuthService.java b/src/main/java/com/l2/shots/auth/AuthService.java index 395d94e..64b03c0 100644 --- a/src/main/java/com/l2/shots/auth/AuthService.java +++ b/src/main/java/com/l2/shots/auth/AuthService.java @@ -67,9 +67,17 @@ public class AuthService { @Transactional public Optional authenticate(String username, String password) { if (username == null || password == null) return Optional.empty(); - User user = User.findByUsernameCaseInsensitive(username.trim()); - if (user == null) return Optional.empty(); - if (!BcryptUtil.matches(password, user.passwordHash)) return Optional.empty(); + String trimmed = username.trim(); + LOG.infof("authenticate: username=%s trimmed=%s pw.len=%d", trimmed, trimmed, password.length()); + User user = User.findByUsernameCaseInsensitive(trimmed); + if (user == null) { + LOG.warnf("authenticate: user '%s' NOT FOUND in DB", trimmed); + return Optional.empty(); + } + LOG.infof("authenticate: found user id=%s hash.len=%d hash.prefix=%s", user.id, user.passwordHash == null ? -1 : user.passwordHash.length(), user.passwordHash == null ? "null" : user.passwordHash.substring(0, Math.min(7, user.passwordHash.length()))); + boolean matches = BcryptUtil.matches(password, user.passwordHash); + LOG.infof("authenticate: bcrypt.matches=%s for user=%s", matches, trimmed); + if (!matches) return Optional.empty(); user.lastLoginAt = Instant.now(); user.persist(); return Optional.of(user);