Giter Club home page Giter Club logo

esc_server's People

Contributors

devycha avatar jaewon0521 avatar phc09188 avatar soa-lee avatar

esc_server's Issues

Fix - OAuth2 JWT RefreshToken 전달 로직 변경

Description

  • 기존에는 OAuth2를 통해 소셜 로그인에 성공하였을 때, short-lived 쿠키를 통해 RefreshToken을 저장할 수 있도록 하였다.
  • 하지만 HttpOnly 설정으로 프론트에서 쿠키 접근이 불가능한 상황으로 추가적인 요청을 통해 RT를 프론트로 전달할 수 있도록 한다.
  • 토큰뿐만 아니라, 로그인 성공 시 추가적인 회원 정보도 전달해줘야하기 때문에 OAuth2 로그인 성공 시, 추가 로직이 필요하다.
  • AccessToken을 전달하는 방법은 기존의 방법을 유지한다.

Progress

  • 쿠키 관련 Util 삭제
  • RefreshToken 및 회원 정보를 전달한 API 작성
  • 예외 처리
  • postman을 통한 http 통신 테스트
  • 서버 배포 후, OAuth2 URL 설정 변경

Fix - UserDetails interface serialize Issue

Problem

@Override
@Cacheable(value = CacheKey.USER, key = "#email")
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
    System.out.println(email);
    Member member = memberRepository.findByEmail(email).orElseThrow(() -> new AuthException(MemberNotFound));
    return PrincipalDetail.of(member);
}

해당 메소드에서 캐시가 생성(serialize)은 되지만 불러오기(deserialize) 작업을 요청하면 클래스를 생성할 수 없다는 에러가 발생
SerializationException: Could not read JSON:cannot deserialize from Object value

Reason

UserDetails interface에 기본적으로 필요한 username과 password 관련 변수가 존재하지 않았고, 불필요한 내용들에 대해 JsonIgnore처리가 되어있지 않았다.

To solve

  • PrincipalDetail 클래스 구성에 username과 password를 추가
  • 필요하지 않은 정보들은 @JsonIgnore 처리

이메일 중복검사 / 이메일 인증 / 회원가입까지 프론트 통합한 뒤 발생한 예외들 정리합니다!

통합시 발견한 소소한 것들... 🫡

어제 혁민님이랑 오류 해결하면서 발생했던 소소한 오류들 정리했습니다! 시간나실때 살짝쿵 고쳐주시면 좋을 것 같아요!

** 참고로 테스트 할 때는 CORS 설정해서 전부 오픈하고 회원가입에서 REDIS 안에 이메일 인증키 비교하는 부분은 제외하였습니다! **

체육관 태그 Entity 관련 수정 예정입니다!

Previous


체육관마다 새로운 태그를 계속 생성하였음

Change


태그 테이블의 name 속성을 unique로 사용하여 변경할 예정

Additional Comment


해찬님 의견: Stadium과 Tag 사이의 연결 테이블을 생성하고 단방향 맵핑으로 진행하는게 좋을 것 같습니다(Tag 태이블도 name을 unique key로 관리할 예정입니다.)

Fix : 예약 생성시 대여 용품에 대한 로직 수정 필요

Purpose

  • 예약 생성시에 다른 체육관으로 등록된 itemId를 가지고 대여 등록을 하게 되면 오류를 띄워주는 로직이 필요할 것 같습니다!
    제가 이전에 작성한 createReservation에 구현했는데 참고 부탁드리겠습니다!
  • 예약 시간대 형식이 옳바르지 않은 경우 예외 처리해주는 로직이 필요할 것 같습니다!
  • 예약 생성이 완료되면 알림 생성하는 코드도 필요할 것 같습니다!

Progress

  • [ ]

Feat : 리뷰 API 구현

Purpose

체육관 사용 리뷰(후기) + SSE

Progress

  • 체육관 리뷰 세팅
  • 체육관 리뷰 조회
  • 체육관 리뷰 등록
  • 체육관 리뷰 삭제
  • 체육관 리뷰 수정
  • 체육관 리뷰 작성 케이스 고도화
  • Logging 처리
  • Swagger Docs 작성
  • 리뷰 작성 시, 알림 구현

Fix : 회원가입 관련 이슈

Purpose

Postman으로 중복된 이메일과 정상 등록된 인증키값 입력시
이메일이 중복돼서 에러가 나서 회원가입이 정상적으로 이루어지지 않지만
인증키값은 사라지게 되는 현상이 있습니다!
프론트에서는 중복검사 -> 인증메일 발송 -> 인증키와 함께 회원가입이 지켜지지만
서버쪽에 바로 쏘는 경우(Postman) 발생하는 문제인 것 같습니다

Progress

  • 서버쪽에서도 회원가입시에 이메일 중복을 확인하는 로직이 추가되면 좋을 것 같습니다!

OAuth2를 활용한 소셜 로그인

Purpose

OAuth2를 활용한 사용자 인증 및 인가 구현

Progress

  • Google, Naver, Kakao 소셜 로그인 연동
  • 회원 정보 요청 성공 시, 회원 가입 진행
  • 로그인 성공 시, JWT 발급 및 토큰 전달
  • RefreshToken 및 회원 정보 전달을 위한 API 작성
  • 예외 처리
  • POSTMAN을 이용한 OAuth2 인증 테스트
  • 프론트 - 백 연동 테스트

Feat : 체육관 평점 scheduling

Purpose

  • 리뷰 작성 시, 평점과 코멘트를 함께 입력한다.
  • 체육관 조회 시, 체육관 리뷰 평점 평균을 확인할 수 있는 UI를 구성하고 있다.
  • 스케줄링을 통해 매일 정해진 시각에 평점을 업데이트할 수 있도록 한다.

Progress

  • 체육관 평점 Scheduling 구현

Fix : 리프레쉬 토큰 발급 요청 오류

Purpose

  • accessToken이 만료되어 오류 응답을 받은 프론트에서 refreshToken으로 재요청 할 때 이미 만료된 토큰을 갖고 요청하게 되면 전체 Filter처리에 걸려 오류가 똑같은 accessToken이 만료되었다는 응답을 받는 오류가 있었음

Progress

  • accessToken 필터 처리 부분에서 /members/auth/refresh-token 엔드포인트를 제외하는 설정 추가

Fix : 리뷰 관련 API 수정

Purpose

리뷰 관련 API 수정 요청 사항입니다!

Progress

  • 리뷰를 시간 순서대로 정렬하려면 createdAt을 LocalDateTime으로 써야할 것 같습니다.
  • 리뷰에서 멤버의 imgUrl도 보내주시면 리뷰에서 사용자 이미지도 같이 띄워줄 수 있을것같습니다!
  • 댓글에서 수정삭제버튼을 보일지 말지 차이를 주기 위해서 리뷰 넘겨주는 response에 현재 접속한 멤버의 id값도 넘겨주면 좋을 것 같습니다.

Feat : 체육관 권한 설정

Purpose

체육관에 사용자(매니저) 연결

Progress

  • 체육관에 사용자(매니저) 정보 추가
  • 매니저 타입의 사용자만 체육관 등록이 가능하도록 수정
  • 체육관, 이미지, 태그, 대여 용품 Update, Delete시에 권한 체크

Feat : 체육관 예약 API 구현

Purpose

체육관 예약 + 예약 알림 기능 구현

Progress

  • 체육관 예약 도메인 셋팅
  • 내 예약 목록 조회
  • 체육관 상세 정보 조회
  • 체육관 예약 페이지(날짜별)
  • 체육관 예약 상세 정보 조회
  • 체육관 예약 취소
  • 체육관 예약 가격 조회(날짜별)
  • 체육관 예약 알림
  • 체육관 예약 완료

Fix : API 스펙 수정 및 유저 관련 에러 핸들링 처리

Purpose

<동준님, 해찬님>

  • stadium 검색, StadiumDetail(체육관 상세), 찜하기 내역 GET API Response 데이터 내부 Like boolean 데이터 추가해서 던져주시면 감사하겠습니다.
  • 이전에 해결했던 로그인 유지 관련 이슈 다시 발생하여 확인부탁드립니다.

<해찬님>

  • 이메일 중복검사 에러 코드 수정 부탁드립니다. 프론트 쪽 catch 문에서 error handling이 되지 않고 있어, 지난 번 비밀번호 찾기 인증코드 확인 단계에서 진행했던 errorCode 변경과 동일하게 해주시면 됩니다.
  • 회원탈퇴 버그 발견되어 로직 수정했는지 확인 부탁드립니다.

<동준님>

  • Manager Reservation User API 생성해주시면 감사하겠습니다. (와이어프레임 Manager Stadium Reservation 참고 부탁드립니다. 유저에 대한 상세 정보는 일반 사용자의 예약 내역 상세보기 데이터와 동일합니다.)

Progress

Fix : accessToken 재발급 관련 username 받아오는 로직 오류

Purpose

accessToken을 재발급하는 로직에서 이미 만료된 accessToken으로 현재 접속한 사용자에 접근하여 username을 받아오는 로직에서 오류가 발생하였음

Progress

  • refreshToken을 이용해서 토큰 재발행하는 부분에서 현재 접속한 사용자의 principal 가져오는 것이 오류를 발생하고 있어서 refreshToken안에서 username을 받아오도록 메서드 추가

Test : 리뷰 기능 테스트

Description

  • 체육관 리뷰 테스트 코드 작성
  • 컨트롤러(WebMvc) 및 서비스(Mockito)

Progress

  • 컨트롤러 및 서비스 테스트
  • 리뷰 조회
  • 리뷰 생성
  • 리뷰 수정
  • 리뷰 삭제

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.