Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[bug] SuccessResponse 로직 수정 #204

Closed
1 task done
hoonyworld opened this issue Aug 31, 2024 · 0 comments · Fixed by #205
Closed
1 task done

[bug] SuccessResponse 로직 수정 #204

hoonyworld opened this issue Aug 31, 2024 · 0 comments · Fixed by #205
Assignees
Labels
bug Something isn't working 동훈🐻

Comments

@hoonyworld
Copy link
Member

hoonyworld commented Aug 31, 2024

Bug/Fix Issue 📌

situation

  • 제네릭 타입을 명시하지 않은 메서드
    • of 메서드는 제네릭 타입을 받아들여 SuccessResponse 객체를 반환합니다. 하지만, 반환 타입이 원시 타입(raw type)으로 정의되어 있습니다.
    • from 메서드는 data 필드가 null인 SuccessResponse 객체를 반환하지만, 이 메서드 역시 반환 타입을 원시 타입으로 정의하고 있습니다.
  • 기존에 경고가 발생했어도 문제가 없었기에 코드를 변경하지 않았습니다. 하지만 경고를 제거하고 코드의 품질을 높이기 위해서는 제네릭 타입을 명시하고자 합니다.

why

  • 타입 안전성 : 제네릭 클래스를 사용하는 주된 이유 중 하나는 타입 안전성을 확보하기 위함입니다. 원시 타입을 사용할 경우 컴파일러는 제네릭 타입과 관련된 검사를 하지 않으므로, 런타임에 타입 오류가 발생할 수 있습니다. 제네릭 타입을 명시적으로 지정함으로써, 이러한 문제를 사전에 방지하고자 합니다.

how

  • SuccessReponse의 from, of 메서드에 제네릭 타입을 명시합니다.

Todo ✔️

  • SuccessReponse의 from, of 메서드에 제네릭 타입 명시
@hoonyworld hoonyworld added bug Something isn't working 동훈🐻 labels Aug 31, 2024
@hoonyworld hoonyworld self-assigned this Aug 31, 2024
hoonyworld added a commit that referenced this issue Sep 2, 2024
* [#204] fix(SuccessResponse): 메서드에 제네릭 타입 명시

* [#204] fix(BookingController): 회원 예매 조회 response 타입 일치하도록 수정
hoonyworld added a commit that referenced this issue Sep 5, 2024
* [#204] fix(SuccessResponse): 메서드에 제네릭 타입 명시

* [#204] fix(BookingController): 회원 예매 조회 response 타입 일치하도록 수정
hoonyworld added a commit that referenced this issue Sep 10, 2024
* [#190] chore(Booking): 공백 제거

* [#190] feat(FileSuccessCode): S3 관련 성공 메시지를 관리하는 열거형 생성

* [#190] feat(PresignedUrlFindAllResponse): 공연 생성 관련 presignedUrl 응답 DTO 구현

* [#190] refactor(FileService): 메서드 명 변경 및 정적 팩토리 메서드로 반환하도록 변경

* [#190] feat(FileApi): Performance PreSigned Url 스웨거 명세서 작성

* [#190] feat(FileController): FileApi 인터페이스를 구현하도록 리팩토링 및 SuccessResponse로 반환하도록 변경

* [#190] refactor(SecurityConfig): AUTH_WHITELIST에 /error url 추가

* [#190] refactor(SwaggerConfig): 릴리즈 버전 수정

* [#190] refactor: 폴더 변경 및 이동

* [feat] #200 - 공연회차 등록 10회까지 가능하도록 수정 (#201)

* [#200] fix(ScheduleNumber): 10회차까지 추가

* [#200] fix(PerformanceModifyService): 공연 회차 수정 중 회차 추가 시 검증 로직 10회차까지 허용 가능하도록 변경

* [#200] feat(PerformanceErrorCode): MAX_SCHEDULE_LIMIT_EXCEEDED message 수정

* feat #202 - allowedMethods에 PATCH 메서드 추가 및 allowedOriginPatterns에 도메인 명시 (#203)

* [#202] feat(WebConfig): PATCH 메서드 추가 및 allowedOriginPatterns에 도메인 명시

* [#202] feat(WebConfig): 클라이언트 localhost 주소 추가

* [#202] fix(WebConfig): 문자열 오타 수정

* [fix] #204 - SuccessReponse 메서드 타입 수정 및 회원 예매 조회 타입 일치 완료 (#205)

* [#204] fix(SuccessResponse): 메서드에 제네릭 타입 명시

* [#204] fix(BookingController): 회원 예매 조회 response 타입 일치하도록 수정

* [#206] fix(TokenErrorCode): 토큰 만료 메시지 status 401로 변경 (#207)

* [#190] refactor: 패키지명 변경

- service에서 application으

* [#190] refactor(KakaoSocialService): 변수명 camelCase로 변경

* [#190] refactor(MemberService): 가독성을 위한 소셜로그인 서비스 로직 리팩토링

* [#190] refactor(MemberService): 메서드명을 역할에 부합하도록 수정

* [#190] refactor(MemberController): 변경된 메서드명으로 리팩토링

* [#190] feat(MemberRegistrationService): 서비스 분리 및 회원 등록 서비스 생성

* [#190] feat(AuthenticationService): 서비스 분리 및 인증 서비스 생성

* [#190] feat(SocialLoginService): 서비스 분리 및 소셜로그인 관리 서비스 생성

* [#190] refactor(MemberService): 회원 서비스 분리를 위한 리팩토링

* [#190] refactor(MemberController): 서비스 객체 변경

* [#190] feat(Role): 사용자의 역할을 관리하는 열거형 생성

* [#190] refactor(Users): 열거형 필드 추가 및 protected 기본생성자 추가

* [#190] refactor(LoginSuccessResponse): 로그인 성공 응답 DTO에 역할 필드 추가

* [#190] refactor(Member): 기본생성자의 접근제어자 protected로 수정 및 user 필드 지연 로딩으로 변경

* [#190] feat(AuthenticationService): 역할에 따른 토큰 발급 및 유효성 검사 추가

- 리프레시 토큰이 만료된 경우, generateAccessTokenFromRefreshToken 메서드에서 만료 에러 반환을 추가.
- 사용자의 Role (Admin 또는 Member)에 따라 각각의 권한으로 새로운 Access Token을 발급하도록 수정.
- generateLoginSuccessResponse 메서드에서 로그인 성공 시 사용자 역할에 따라 인증 객체를 생성하고, Access 및 Refresh 토큰을 발급.

* [#190] feat(AdminAuthentication): Admin 사용자 인증 객체 추가

- Spring Security의 UsernamePasswordAuthenticationToken을 상속하여, 관리자 권한을 포함한 인증 객체 생성 가능.

* [#190] refactor(JwtTokenProvider): JWT 토큰 발급시 역할 부여 및 검증 로직 개선

- JWT 토큰 발급 시 사용자 정보(memberId)와 역할(role)을 포함한 클레임 생성.
- getMemberIdFromJwt 및 getRoleFromJwt 메서드를 통해 토큰에서 사용자 정보와 역할을 추출하는 기능 구현.
- "ROLE_" 접두사를 제거한 후, 역할을 추출하여 Role Enum에 맞게 변환하는 로직 추가.

* [#190] refactor(SocialLoginService): 사용자 정보 조회 로직 수정

- `generateLoginResponseFromMemberInfo` 메서드에서 회원 정보를 조회할 때 `memberService.findUserByMemberId(memberId)`를 통해 Users 객체를 조회하도록 수정.

* [#190] refactor(MemberRegistrationService): 유저 정보로 회원등록시 역할을 MEMBER로 설정하도록 변경

* [#190] feat(MemberService): 회원 ID로 Users 정보 조회 메서드 추가

* [#190] feat(TokenErrorCode): 리프레시 토큰 만료 에러 코드 추가

* [#190] refactor(MemberController): 로그인/회원가입 API에서 역할도 반환하도록 수정

* [#190] refactor(JwtAuthenticationFilter): JWT 토큰 검증 및 인증 설정 로직 개선

- JWT 토큰이 만료되었거나 유효하지 않은 경우 적절한 HTTP 상태 코드(401, 400)를 반환하도록 처리 추가.
- `setAuthentication` 메서드를 통해 토큰에서 추출한 memberId와 role로 권한 설정.
- `handleInvalidToken` 메서드를 분리하여 토큰 상태에 따른 응답 처리 설정.
- `createAuthentication` 메서드에서 role에 따라 Admin 또는 Member 인증 객체 생성.

* [#190] chore(.gitignore): application-local.yml을 .gitignore에 추가

* [#190] chore(JwtAuthenticationFilter): 불필요한 import문 삭제

* [#190] chore(TokenService): 코드 가독성을 위한 리팩토링

* [#190] refactor(JwtTokenProvider): SignatureException 에러처리 추가 및 로그 추가

* [#190] refactor(AuthenticationService): 리프레시 토큰을 이용해 새로운 액세스 토큰 발급 시 토큰 검증 구체화 및 로그 추가

* [#190] refactor(TokenErrorCode): 리프레쉬 토큰 관련 에러코드 추가

* [#190] refactor(AuthenticationService): 에러코드 변경

* [#190] feat(SecurityConfig): ADMIN 권한 설정 추가

* [#190] feat(UserFindAllResponse): 유저 테이블의 정보를 반환하는 응답 DTO 생성

* [#190] delete(UserResponse): UserResponse 삭제

* [#190] feat(AdminSuccessCode): 관리자 성공 코드 및 모든 유저 조회 성공메시지 생성

* [#190] feat(AdminService): 관리자가 모든 유저를 불러올 수 있는 서비스 로직 생성

* [#190] feat(AdminController): 관리자가 모든 유저를 불러오는 GET API 생성

* [#190] refactor(AdminController): 토큰을 줘서 역할 검증을 하도록 변경

* [#190] feat(UserResponse): 유저 정보를 객체로 반환하는 응답 DTO 생성

* [#190] refactor: CurrentMemberArgumentResolver로 클래스 이름 수정

* [#190] fix(UserFindAllResponse): Users 객체가 Hibernate 프록시 객체로 반환되어 직렬화되지 못했던 부분 수정

* [#190] chore(GlobalExceptionHandler): ExceptionHandler 분리 및 로그 명시

* [#190] chore(CustomAccessDeniedHandler): 권한 부족 로그 명시

* [#190] chore(CustomJwtAuthenticationEntryPoint): 인증되지 않은 요청 로그 명시

* [#190] refactor(CustomJwtAuthenticationEntryPoint): 토큰에서 추출한 memberId가 DB에 존재하는지 확인하는 로직 추가

* [#190] chore(FileApi): 스웨거 문서 수정

* [#190] chore(AdminApi): 관리자 API 스웨거 문서 작성

* [#190] chore(AdminController): 스웨거 인터페이스 implements 및 메서드 오버라이딩

* [#190] rename(PerformanceMakerPresignedUrlFindAllResponse): 공연 메이커를 위한 presignedUrl을 발급하는 응답 DTO 역할에 맞게 레코드 rename

* [#190] rename(UserFindResponse): 기존 UserResponse를 역할에 부합하는 이름으로 rename

* [#190] refactor(UserFindAllResponse): rename된 이름으로 변경

* [#190] chore(FileSuccessCode): 성공메시지 구체화

* [#190] refactor(AdminSuccessCode): 캐러셀, 배너 presignedUrl 발급 성공메시지 추가

* [#190] refactor(AdminUserManagementService): AdminUserManagementService로 rename 및 ifPresentOrElse로 가독성 개선

* [#190] refactor(BannerPresignedUrlFindResponse): 배너 presignedUrl 응답 DTO 생성

* [#190] refactor(CarouselPresignedUrlFindAllResponse): 캐러셀 presignedUrl 응답 DTO 생성

* [#190] refactor(FileController): 공연 메이커를 위한 presignedUrl 응답 DTO의 이름 변경으로 인한 반환 레코드명 수정

* [#190] refactor(FileService): 캐러셀/배너 presignedUrl 서비스 로직 구현 및 컨벤션에 맞게 메서드명 수정

* [#190] feat(AdminController): 캐러셀/배너 presignedUrl GET API 구현

* [#190] feat(AdminApi): 캐러셀/배너 presignedUrl GET API 스웨거 명세 작성

* [#190] refactor(FileApi): DTO 이름 변경으로 인한 명세서 수정

---------

Co-authored-by: hyerinhwang-sailin <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working 동훈🐻
Projects
None yet
1 participant