Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions src/main/java/ru/sup/userservice/controller/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -271,4 +272,42 @@ public ResponseEntity<AvatarAccessUrlResponse> 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<UserProfileResponse> 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);
}

}
Original file line number Diff line number Diff line change
@@ -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;
}
Loading