Git Product home page Git Product logo

breaking-backend's People

Contributors

jinucheon avatar martin0o0 avatar minwukim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

breaking-backend's Issues

MediaUploaderService 를 구현한다

상세 내용

  • 클라이언트에서 사진/영상 Mulitidataform 으로 받아 로컬에 저장하는 기능을 구현한다.
  • 사진과 영상을 파일명의 extension을 통해 구별한다.

회원가입 기능을 구현한다.

상세 내용

  • UserRepository 를 구현한다.
  • 회원가입 기능을 구현한다.
  • 이메일 중복 및 형식 체크 기능을 구현한다.
  • 닉네임 중복 체크 기능을 구현한다.
  • 전화번호 중복 체크 기능을 구현한다.
  • UserRepository 및 중복 체크 기능 테스트케이스를 구현한다.

Oauth2LoginController부분의 예외처리부분을 수정한다.

버그 발생 내용

기존에는 예외가 발생하면 catch문에서 null로 대입을 시켜준 방식이였으나, 현재 커스텀 예외처리로 강제 종료되는 현상이 발생하여 이를 수정하고자 함.

버그 발생 트리거

로그인 시도 시 email부분이 null로 담겨져야하나 강제종료되어 클라이언트쪽에 500에러가 발생함.

수정 후 기대 사항

try-catch문을 배재하여 종료되는상황이 없을 것으로 예상됨.

게시글 등록 기능을 구현한다.

상세 내용

  • 사용자는 게시글에 제목과 내용을 기입할 수 있다.
  • 사용자는 게시글에 여러 미디어 파일을 같이 업로드 할 수 있다.
  • 사용자는 사건 발생 시간을 기입할 수 있다.
  • 사용자는 위치를 지정할 수 있다.
  • 사용자는 가격을 흥정할 수 있다.
  • 사용자는 제보 유형을 설정 할 수 있다.
  • 사용자는 익명성을 보장 받는다.

Oauth2 로그인 시, 플랫폼을 구별하는 식별자를 추가한다.

상세 내용

고유한 식별코드를 받는다고 하지만, 우연의 일치에 의해, 두 플랫폼간 같은 코드가 발행되고 이 코드가 회원가입 되버리면 두 사용자는 하나의 식별값은 갖게되는 보안사고가 발생됨.

  • Oauth2의 계정으로 회원가입된 회원은 식별코드에 해당 플래폼의 식별자를 추가로 얻게 된다.

시큐리티 테스트 코드를 작성한다.

상세 내용

  • 현재 jwt토큰일 일일히 넣어서 빌드하여 테스트를 진행하였지만, 테스트 코드의 필요성을 절실히 느껴 스프링 시큐리티를 접목한 테스트 코드를 구현한다.

유저 정보 검증을 위한 정규식을 수정한다.

버그 발생 내용

테스트 중, validate 가 정상적으로 일어나지 않는 것을 확인.
정규식에 표현이 조금 빠진 것을 확인했습니다.

수정 후 기대 사항

다음 정규식으로 모두 교체합니다.
전화번호 검증 : ^\d{2,3}-\d{3,4}-\d{4}$
이메일 검증 : ^[_a-z0-9-]+(.[_a-z0-9-]+)@(?:\w+\.)+\w+$
닉네임 검증 : ^(?=.
[a-z0-9가-힣])[a-z0-9가-힣]{2,16}$

스프링 시큐리티의 AuthenticationEntryPoint에서 403 status를 반환하는 반환하는 예외처리를 추가한다.

버그 발생 내용

현재, @PreAuthorize("isAuthenticated()") 어노테이션을 사용시, jwt 토큰없이 접근한다면 403 Forbbiden을 반환해야하나, 200 Ok를 반환하는 심각한 문제를 발견한 상황.

버그 발생 트리거

Post Api에서 jwt 없이 등록을 시도하면 내부 로직은 실행되지 않으나, Response Body가 없는 200ok가 반환되는 버그를 발견함.

수정 후 기대 사항

수정 후, 정상적으로 403 Forbbide이 응답될 것이라고 생각함.

JWT Refresh 토큰을 Redis를 활용하여 저장한다.

상세 내용

  • 기존에는 DB에 Refresh 토큰을 보관하는 방식이였지만, Redis에 Refresh 토큰을 보관하여 DB의 부담을 줄입니다.
  • 향후, 로그아웃 기능을 구현하기 위한 기반을 마련합니다.

RDBMS Schema를 작성한다.

맛동산(@MinwuTheQuant )이 전체적으로 틀을 작성하고, 다같이 오프라인에서 리뷰하면 될 것 같습니다.

피드 게시글 조회 기능을 QueryDSL로 리팩토링 한다.

상세 내용

기존에 조회 기능을 JPQL로 구현하려 했으나,
복잡한 join과 조건문 사용과, 동적 쿼리 사용이 제한적이라서 힘들었습니다.

그래서 Spring Data JPA 와, QueryDSL을 사용해서 정렬, 세부 필터 기능을 구현 예정입니다.

  • QueryDSL 개발 환경 구축
  • 최신 순서 정렬 리팩토링

HTTP 요청을 로그화 한다.

상세 내용

요청 시에 디버깅을 위해서 HTTP 요청을 로그화 합니다.

  • HTTP 요청이 어떤게 들어왔는지 로그로 띄운다.
  • 어떤 응답이 나갔는지 로그로 띄운다.

API URL에 정리를 논의한다.

상세 내용

지금 API Sheet를 보니까, API 의 URL 구분이 좀 명확하지 않다는 생각이 듭니다.
얼추 다음과 같은 구분을 사용하면 어떨까 생각이 됩니다.

/user/

  • /oauth/
  • /profile/
  • /follow/

/post/

/feeds/

/resource/

/breaking-mission/

/breaking-spot/

Oauth2LoginController의 예외 처리를 구현한다.

버그 발생 내용

기존의 로직에서는 유효하지 않은 엑세스 토큰으로 로그인을 시도 시 에러를 반환하는 응답을 보내지 않아 사용자는 자세한 에러 내용을 볼 수 없었다.
또한, 서버 내부에서도 처리되지 않은 예외를 통해 심각한 버그를 초래할 수 있다.

버그 발생 트리거

클라이언트단에서 유효하지 않은 엑세스 토큰 혹은, 선택하지 않은 개인정보가 컨트롤러에서 정보를 추출할 시, 없다면 치명적인 에러를 반환하였다.
스크린샷 2022-06-30 오후 2 57 41
스크린샷 2022-06-30 오후 3 08 12

수정 후 기대 사항

try-catch문을 통해 클라이언트단에서 예외를 명시적으로 볼 수 있을 것이며, 서버단에서는 동의하지 않은 정보를 강제로 취합하려고 할 때, 없다면 Null값으로 대체하여 사전에 버그를 방지한다.

Oauth2 기존 유저에 대한 로그인 시 json 반환 및 오류를 수정한다.

버그 발생 내용

Android에서 기존 유저에 대한 로그인 요청 시도시 발생한 응답 에러

버그 발생 트리거

기존 유저의 로그인 시도 시, 유저의 기본 정보가 반환 되지 않은 문제가 발생함.

수정 후 기대 사항

정상적인 요청에 대한 정상적인 response가 될 것이라 예상.

Refresh Token을 구현한다.

상세 내용

  • 기존 accessToken만으로는 유효기간이 끝날때까지 유저의 새로운 토큰을 발행하지 못하여 다시 로그인을 해야하는 불편함이 존재하였지만, 이번 Refresh 토큰 대조군으로 다시 새로운 accesstoken을 발행하여 불편함을 해소하고자 한다.

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.