diff --git a/src/main/java/org/operaton/fitpub/controller/WebFingerController.java b/src/main/java/org/operaton/fitpub/controller/WebFingerController.java index 4083325..beec57d 100644 --- a/src/main/java/org/operaton/fitpub/controller/WebFingerController.java +++ b/src/main/java/org/operaton/fitpub/controller/WebFingerController.java @@ -50,8 +50,8 @@ public class WebFingerController { return ResponseEntity.badRequest().build(); } - // Look up user - Optional userOpt = userRepository.findByUsername(username); + // Look up user (case-insensitive) + Optional userOpt = userRepository.findByUsernameIgnoreCase(username); if (userOpt.isEmpty()) { log.warn("User not found for WebFinger request: {}", username); return ResponseEntity.notFound().build(); diff --git a/src/main/java/org/operaton/fitpub/repository/UserRepository.java b/src/main/java/org/operaton/fitpub/repository/UserRepository.java index ac0a715..cd937a3 100644 --- a/src/main/java/org/operaton/fitpub/repository/UserRepository.java +++ b/src/main/java/org/operaton/fitpub/repository/UserRepository.java @@ -28,6 +28,15 @@ public interface UserRepository extends JpaRepository { */ Optional findByUsername(String username); + /** + * Finds a user by username (case-insensitive). + * Used for WebFinger discovery to allow case-insensitive lookups. + * + * @param username the username + * @return optional user + */ + Optional findByUsernameIgnoreCase(String username); + /** * Finds a user by email. * Used for login and duplicate email checking.