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");
    }
}

토큰 재발급해서 보내는 로직 짜기