Skip to content

UserDebugService 사용법 #49

@dusdjhyeon

Description

@dusdjhyeon
package com.fs.filemarket.api.domain.user.service;

import com.fs.filemarket.api.domain.user.User;
import com.fs.filemarket.api.domain.user.repository.UserRepository;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.http.HttpStatus;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.web.server.ResponseStatusException;

@Service
public class UserDebugService extends UserService{
    private final HttpServletRequest request;

    public UserDebugService(UserRepository userRepository, PasswordEncoder passwordEncoder, HttpServletRequest request) {
        super(userRepository, passwordEncoder);
        this.request = request;
    }

    private Integer getUserIdInHeader() {
        String userIdString = request.getHeader("userId");

        if (userIdString == null)
            throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Unauthorized");
        try {
            return Integer.parseInt(userIdString);
        } catch (NumberFormatException e) {
            throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "userID를 파싱할 수 없습니다.");
        }
    }

    @Override
    public User getCurrentUser() {
        return userRepository.getById(getUserIdInHeader());
    }
}

해당 코드 파일(UserDebugService.java를 commit, push하지 마세요)

repository에서의 코드는 UserService.java만 존재해야 하며, @service 어노테이션 역시 UserService에 붙어 있어야 합니다.

  1. user의 service 폴더 안에 UserDebugService 자바 파일을 만듭니다.
  2. 해당 코드를 복붙합니다.
  3. UserSerivce.java 파일의 @service 어노테이션을 제거 합니다.

이렇게 하면, PostMan에서 Hedars에 userId 값을 통해 현재 유저 설정이 가능합니다.

image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions