perf(user): cambio en UpdateUserController solo deja actualizar usuario propio

parent 3f85146c
package com.example.apprecetas.user.infrastructure.controller;
import com.example.apprecetas.exception.UnprocessableEntityException;
import com.example.apprecetas.user.application.ReadUserUseCase;
import com.example.apprecetas.user.application.UpdateUserUseCase;
import com.example.apprecetas.user.domain.entity.User;
import com.example.apprecetas.user.infrastructure.controller.dto.UserInputDto;
import com.example.apprecetas.user.infrastructure.controller.dto.UserOutputDto;
import com.example.apprecetas.user.infrastructure.mapper.UserMapper;
......@@ -9,8 +11,12 @@ import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.mapstruct.factory.Mappers;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.stream.Collectors;
......@@ -21,17 +27,21 @@ public class UpdateUserController {
private final UpdateUserUseCase service;
private final ReadUserUseCase readUserUseCase;
private final UserMapper mapper = Mappers.getMapper(UserMapper.class);
@PutMapping("/{id}")
public ResponseEntity<UserOutputDto> update(@PathVariable String id, @Valid @RequestBody UserInputDto userInputDto, BindingResult result) {
@PutMapping
public ResponseEntity<UserOutputDto> update(@Valid @RequestBody UserInputDto userInputDto, BindingResult result) {
if (result.hasErrors()) {
String errorMsg = result.getFieldErrors().stream()
.map(fieldError -> fieldError.getField() + ": " + fieldError.getDefaultMessage())
.collect(Collectors.joining("; "));
throw new UnprocessableEntityException(errorMsg);
}
return ResponseEntity.ok().body(mapper.map(service.updateById(id, mapper.map(userInputDto))));
String email = SecurityContextHolder.getContext().getAuthentication().getName();
User user = readUserUseCase.readByEmail(email);
return ResponseEntity.ok().body(mapper.map(service.updateById(user.getId(), mapper.map(userInputDto))));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment