From 5a8347058799da5be53143f3c3350d4f7c7e243d Mon Sep 17 00:00:00 2001 From: Daniel Arroyo Date: Sat, 15 Aug 2026 01:59:08 -0400 Subject: [PATCH] debug(auth): trace de login en AuthService + SQL log en app props MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Para diagnosticar por qué el login devuelve 401 con la password correcta del bootstrap admin. Imprime: - username/pw.length al entrar - si la busqueda del user en la DB da null - hash.len y hash.prefix para confirmar que el user esta bien almacenado - bcrypt.matches(true/false) Tambien activamos quarkus.hibernate-orm.log.sql=true y quarkus.log.category.'com.l2.shots.auth'.level=DEBUG. --- .gitignore | 1 + src/main/java/com/l2/shots/auth/AuthService.java | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) 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);