diff --git a/src/main/java/ru/sup/userservice/controller/UserController.java b/src/main/java/ru/sup/userservice/controller/UserController.java index 1aa5318..1539c9f 100644 --- a/src/main/java/ru/sup/userservice/controller/UserController.java +++ b/src/main/java/ru/sup/userservice/controller/UserController.java @@ -21,6 +21,7 @@ import ru.sup.userservice.dto.response.AvatarAccessUrlResponse; import ru.sup.userservice.dto.response.AuthResponse; import ru.sup.userservice.dto.response.AvatarUploadUrlResponse; +import ru.sup.userservice.dto.response.UserProfileResponse; import ru.sup.userservice.entity.User; import ru.sup.userservice.kafka.UserEventProducer; import ru.sup.userservice.service.AvatarStorageService; @@ -271,4 +272,42 @@ public ResponseEntity createAvatarAccessUrl(Authenticat return ResponseEntity.ok(new AvatarAccessUrlResponse(accessUrl, avatarStorageService.getDownloadUrlExpirySeconds())); } + // ============================== + // GET MY PROFILE + // ============================== + @Operation( + summary = "Получить профиль текущего пользователя", + description = "Возвращает всю информацию о пользователе, отправившем запрос.", + security = @SecurityRequirement(name = "bearerAuth") + ) + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "Профиль успешно получен", + content = @Content(mediaType = "application/json", + schema = @Schema(implementation = UserProfileResponse.class))), + @ApiResponse(responseCode = "401", description = "Пользователь не авторизован"), + @ApiResponse(responseCode = "404", description = "Пользователь не найден") + }) + @GetMapping("/me") + public ResponseEntity getMyProfile(Authentication authentication) { + String currentUsername = authentication.getName(); + User user = userService.findByUsername(currentUsername) + .orElseThrow(() -> new UsernameNotFoundException("User not found")); + + String avatarUrl = null; + if (user.getAvatarURL() != null && !user.getAvatarURL().isBlank()) { + avatarUrl = avatarStorageService.createAvatarAccessUrl(user.getAvatarURL()); + } + + UserProfileResponse profile = new UserProfileResponse( + user.getId(), + user.getUsername(), + user.getEmail(), + user.getPhone(), + user.isEmailVerification(), + avatarUrl + ); + + return ResponseEntity.ok(profile); + } + } diff --git a/src/main/java/ru/sup/userservice/dto/response/UserProfileResponse.java b/src/main/java/ru/sup/userservice/dto/response/UserProfileResponse.java new file mode 100644 index 0000000..a63a2a3 --- /dev/null +++ b/src/main/java/ru/sup/userservice/dto/response/UserProfileResponse.java @@ -0,0 +1,19 @@ +package ru.sup.userservice.dto.response; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class UserProfileResponse { + private Long id; + private String username; + private String email; + private String phone; + private boolean emailVerification; + private String avatarUrl; +}