Profile
package com.b1aboa.wedug.controller;
import com.b1aboa.wedug.entity.NationInfo;
import com.b1aboa.wedug.service.NationInfoService;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/api")
public class NationInfoController {
private final NationInfoService nationInfoService;
public NationInfoController(NationInfoService nationInfoService) {
this.nationInfoService = nationInfoService;
}
@GetMapping("/nation-code")
public ResponseEntity<List<NationInfo>> getNationCodes() {
List<NationInfo> nations = nationInfoService.getAllNations();
return ResponseEntity.ok(nations);
}
}
컨트롤러 추가
서비스 추가
package com.b1aboa.wedug.service;
import com.b1aboa.wedug.entity.NationInfo;
import java.util.List;
public interface NationInfoService {
List<NationInfo> getAllNations();
}
서비스 impl 추가
package com.b1aboa.wedug.service.impl;
import com.b1aboa.wedug.entity.NationInfo;
import com.b1aboa.wedug.repository.NationInfoRepository;
import com.b1aboa.wedug.service.NationInfoService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class NationInfoServiceImpl implements NationInfoService {
private final NationInfoRepository nationInfoRepository;
public NationInfoServiceImpl(NationInfoRepository nationInfoRepository) {
this.nationInfoRepository = nationInfoRepository;
}
@Override
public List<NationInfo> getAllNations() {
return nationInfoRepository.findAll();
}
}
수정
package com.b1aboa.wedug.service;
import com.b1aboa.wedug.entity.User;
public interface UserService {
User getUserByUserId(String userId);
void updateUser(User user);
}
package com.b1aboa.wedug.service.impl;
import com.b1aboa.wedug.entity.User;
import com.b1aboa.wedug.repository.UserRepository;
import com.b1aboa.wedug.service.UserService;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
public UserServiceImpl(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Override
public User getUserByUserId(String userId) {
return userRepository.findByUserId(userId)
.orElseThrow(() -> new RuntimeException("User not found"));
}
@Override
public void updateUser(User user) {
userRepository.save(user);
}
}
package com.b1aboa.wedug.controller;
import com.b1aboa.wedug.entity.User;
import com.b1aboa.wedug.service.UserService;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/user")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/info")
public ResponseEntity<User> getUserInfo() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
String userId = authentication.getName(); // 현재 인증된 사용자 ID를 가져옴
User user = userService.getUserByUserId(userId);
return ResponseEntity.ok(user);
}
@PostMapping("/update")
public ResponseEntity<String> updateUserInfo(@RequestBody User userUpdateDto) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
String userId = authentication.getName(); // 현재 인증된 사용자 ID를 가져옴
User existingUser = userService.getUserByUserId(userId);
// 기존 사용자 정보 업데이트
existingUser.setNickname(userUpdateDto.getNickname());
existingUser.setGender(userUpdateDto.getGender());
existingUser.setBirthYear(userUpdateDto.getBirthYear());
existingUser.setCountry(userUpdateDto.getCountry());
userService.updateUser(existingUser);
return ResponseEntity.ok("User info updated successfully");
}
}
토큰 재발급해서 보내는 로직 짜기