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

더미데이터로 로그인 기능 SSR로 구현 #128

Merged
merged 8 commits into from
Oct 31, 2024
Merged

Conversation

GitJIHO
Copy link
Member

@GitJIHO GitJIHO commented Oct 31, 2024

#️⃣ 연관된 이슈

📝 작업 내용

  • DummyProperties 추가
  • 비밀번호 및 오류 출력 로직 추가
  • 더미데이터 이메일 목록에서만 입력하게끔 유도하는 목록 추가
  • 추가된 JPQL 테스트코드 추가
  • css 추가

스크린샷 (선택)

백엔드 로컬, 프론트 깃클론하여 로컬에서 열어 테스트한 결과 영상입니당
https://youtu.be/gAoBiYtJ8bQ

💬 리뷰 요구사항(선택)

목적

프론트 서버 로그인시 카카오로그인만 제공하기 때문에 더미데이터 로그인을 위한 사이드로그인로직

기능

  • '백엔드 도메인 + /dummy' 로 접속
  • 10개의 더미데이터 중 하나의 이메일 선택 (더미데이터 제외하고는 선택 불가)
  • swagger, postman 등으로 실제 유저 이메일 선택하는 경우를 방지하기 위해 비밀번호 로직 추가
  • 비밀번호는 사전에 정의된 공통 비밀번호
  • 개발서버 로그인 -> localhost:5173/dummy.html 로 이동
  • 배포서버 로그인 -> (프론트배포서버)/dummy.html 로 이동
  • 이동시 쿼리파라미터에 백엔드에서 발급받은 accessToken, refreshToken, isSinitto 포함하여 전송
  • dummy.html 로직
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>JWT Callback</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      text-align: center;
      margin-top: 50px;
    }
  </style>
</head>
<body>
  <h1>JWT Callback</h1>
  <p id="tokenDisplay">유저 정보를 기다리고 있습니다...</p>
  <script>
    const params = new URLSearchParams(window.location.search);
    const accessToken = params.get('accessToken');
    const refreshToken = params.get('refreshToken');
    const isSinitto = params.get('isSinitto');

    const tokenDisplay = document.getElementById('tokenDisplay');

    if (accessToken && refreshToken && isSinitto) {
      // 로컬 스토리지에 토큰 저장
      console.log('Received tokens:', accessToken, refreshToken, isSinitto);
      localStorage.setItem('accessToken', accessToken);
      localStorage.setItem('refreshToken', refreshToken);
      localStorage.setItem('isSinitto', isSinitto);

      tokenDisplay.textContent = '더미데이터 로그인이 완료되었습니다. 잠시만 기다려주세요';

      // isSinitto에 따라 리다이렉트 경로 결정
      setTimeout(() => {
        window.location.href = (isSinitto === 'true') ? '/sinitto' : '/guard';
      }, 2000);
    } else {
      console.error('Access or Refresh token not found in query parameters.');
      tokenDisplay.textContent = 'JWT를 찾을 수 없습니다.';
    }
  </script>
</body>
</html>

위와 같습니다

  • dummy.html은 설정한 프론트에서 쿼리파라미터를 로컬스토리지에 저장하는 페이지
  • 에러시 에러를 throw하지 않고 백엔드 로그인 페이지에만 표시

코드

adminController이기 때문에 따로 서비스단을 분리하지 않았습니다
리다이렉트 링크들 및 비밀번호는 gitignore된 dev 속성에 추가하였습니다 -> 카톡방에 공유하겠습니다!

⏰ 현재 버그

프론트 코드를 로컬로 열어 테스트했을 때는 문제 없었습니다
배포 서버 테스트는 프론트분께서 dummy.html을 추가해주셔야 테스트 가능합니다

✏ Git Close

close #127

@GitJIHO GitJIHO added 🚀 Deploy 배포 관련 작업을 진행하는 경우 ✨ Feature 새로운 기능 추가 및 구현하는 경우 labels Oct 31, 2024
@GitJIHO GitJIHO requested review from zzoe2346, eunsoni and 2iedo October 31, 2024 06:38
@GitJIHO GitJIHO self-assigned this Oct 31, 2024
@GitJIHO GitJIHO linked an issue Oct 31, 2024 that may be closed by this pull request
4 tasks
Copy link
Contributor

@zzoe2346 zzoe2346 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

대박입니당 너무 잘되고 편해요! 덕분에 편히 테스트할 수 있을거같아요~!⭐️👍⭐️

Copy link
Collaborator

@eunsoni eunsoni left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드 깔끔하게 잘 작성해주신 것 같습니다
그리고 테스트하기 편해진 것 같아요 감사합니다~!! 👍

Copy link
Collaborator

@2iedo 2iedo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

브랜치 실행 후 작동 잘 되는 것 확인했습니다! 고생하셨어요~

@GitJIHO GitJIHO merged commit b5b1086 into Weekly Oct 31, 2024
1 check passed
@GitJIHO GitJIHO deleted the Feat/issue-#127 branch October 31, 2024 09:12
cheol-95 pushed a commit that referenced this pull request Nov 4, 2024
* Deploy: PR 생성시 테스트코드 수행 로직 구현 (#94)

* deploy: PR 생성시 테스트코드 수행 로직 추가

* feat: jwt.secret키를 깃허브 시크릿에 저장 및 환경변수 설정

* feat: 환경변수 읽어오도록 수정

* feat: 도커를 사용하여 레디스 환경 구축

* Deploy: 깃허브 액션 최신버전으로 업그레이드 (#96)

* deploy: deploy.yml 버전 업그레이드

* 깃허브 testcode.yml 버전 업그레이드

* deploy: 가장 최신 버전으로 업그레이드

* deploy: 가장 최신 버전으로 업그레이드

* Fix: 안부전화 Cascade 순환참조 문제 해결 및 관계성 오류 해결 구현 (#100)

fix: 안부전화 Cascade 순환참조 문제 해결 및 관계성 오류 해결

* Refactor: 가이드라인 관련 로직 수정 {프론트 요청) (#103)

* deploy: 가이드라인 더미데이터 추가

* feat: 콜백과 가이드라인의 시니어가 같지 않을 때 발생하는 예외 구현

* refactor: 타입별 전체 가이드라인 및 특정 가이드라인 조회 시 검증 로직 추가

* refactor: 가이드라인 조회 api 매개변수 수정

* refactor: Reformat code

* refactor: 가이드라인 response dto에 id 추가 및 서비스단 수정

* refactor: 중복 주석 삭제

* refactor: 서비스단에서 사용하지 않는 레퍼지토리 선언 삭제

* fix: url 중복 오류해결 (#106)

* Refactor: 예외 처리 관련 리팩토링 (#92)

* refactor: 콜백 도메인 예외 처리 리팩토링

* refactor: Auth 도메인 예외 처리 리팩토링

* refactor: Guard 도메인 예외 처리 리팩토링

* refactor: GuardGuideline 도메인 예외 처리 리팩토링

* refactor: HelloCall 도메인 예외 처리 리팩토링

* fix: 리팩토링후 콜백 Test 코드 수정안하여 생긴 테스트 실패 수정

* refactor: Member 도메인 예외 처리 리팩토링

* refactor: Point 도메인 예외 처리 리팩토링

* refactor: Review 도메인 예외 처리 리팩토링

* refactor: Sinitto 도메인 예외 처리 리팩토링

* refactor: 사용안되는 exception class, advice class 제거,

* refactor: HelloCallPriceService 에서 IllegalArgumentException -> BadRequestException

* refactor: 포인트로그 Content 멘트 수정

* refactor: 포인트로그 Content 멘트 최종 수정

* refactor: MultiStatusException->ConflictException

* refactor: TokenService의 응답코드 다양화

* refactor: 예외 클래스 이름 더 명확하게 수정

* Feat: 가이드라인 삭제 기능 추가 (#108)

* refactor: id 속성 이름 Id로 수정

* feat: 서비스 레이어 가이드라인 삭제 메서드 추가

* feat: 컨트롤러 가이드라인 삭제 api 추가

* refactor: 사용하지 않는 가이드라인 예외클래스 삭제

* refactor: id 속성 코드컨벤션에 맞게 수정

* refactor: 삭제 api를 delete 요청으로 수정

* Feat: 콜백 단건조회 api 응답값에 boolean isAssignedToSelf, String seniorPhoneNumber 추가 (#104)

* feat: 콜백 단건 조회 응답 요소 추가

* refactor: 더 명확한 메서드 명으로 수정 getCallback->getCallbackForSinitto

* test: 시니또용 콜백 단건 조회 테스트 작성

* chore: 프론트 테스트를 더 명확히하기위해 콜백 더미 데이터에 할당된 시니어 추가

* refactor: 본인에게 할당된 콜백이 아닌것에대한 콜백 상세조회 할때는 시니어 번호 없도록 수정

* test: 테스트 통과하도록 수정

* chore: 더미데이터 개선

* Deploy: 더미데이터 실행 과정 중 initial()과 saveRefreshTokenToRedis() 메서드 실행을 별도의 트랜잭션으로 관리 (#113)

deploy: 더미데이터 실행 별도의 트랜잭션에서 수행

* Deploy: 할당되는 콜백 더미 데이터에 각각 `callbackRepository.save(callback{id});` 추가 (#117)

chore: 할당되는 콜백 더미 데이터에 각각 callbackRepository.save(callback?); 추가

* Feat: 시니또용 카테고리별 가이드라인 조회 api 추가 및 기존 api 삭제 (프론트 요청) (#114)

* refactor: 시니또용 카테고리별 가이드라인 조회 메서드 추가

* refactor: 시니또용 카테고리별 가이드라인 조회 api 추가

* refactor: Swagger @tag 수정

* refactor: 시니또용 가이드라인 조회에서 기존 state 검증로직에 회원이 배정된 시니또인지 검증하는 로직 추가

* refactor: 서비스 레이어 회원 검증 로직 추가를 위해서 memberId 파라미터 추가

* refactor: Reformat Code

* Deploy: 로컬과 개발 환경에 따라 카카오 리다이렉트 주소를 다르게 리턴하는 로직 구현 (#120)

* feat: 카카오 devRedirectUri 추출 로직 추가

* feat: httpServletRequest를 통해 Referer 또는 Origin을 확인하여 다른 프론트 주소 리다이렉트

* 카카오 로그인 요청 헤더 추출 로직에서 NULL 예외처리 구현 (#122)

fix: 카카오 로그인 요청 헤더 추출 로직에서 NULL 예외처리 추가

* Feat: 콜백 단건 조회 로직 개선 (#123)

feat: 콜백 단건 조회 로직 개선

- 상태에 따른 검증 로직 추가
- 예외 처리 추가
- 가독성 향상
- 테스트 꼼꼼히

* 더미데이터로 로그인 기능 SSR로 구현 (#128)

* feat: 저장 로직 초기세팅

* feat: DummyProperties 추가

* 비밀번호 및 오류 출력 로직 추가

* refactor: 코드 정렬

* feat: 이메일 목록에서 찾는 로직 추가, 에러 메시지 이후에도 목록 유지

* teat: findAllByEmailIn로직 테스트 코드 추가

* feat: css추가

* Feat: 시니또 회원 정보와 계좌 정보 조회 API 및 로직 분리 (#126)

* Feat: 서비스 레이어 시니또 계좌정보 조회 메서드 추가

* refactor: 사용하지 않는 api와 관련 로직 삭제

* refactor: 시니어 정보 조회 api 전달 데이터 변경과 로직 수정

* refactor: 계좌정보 삭제 api 삭제

* Feat: Swagger 멘트 수정

* Refactor: SinittoRequest email 속성 삭제 및 Member 엔터티 update 메서드 수정

* Refactor: 중복 url 수정

* Refactor: GuardRequest에서 email 삭제

* Refactor: 계좌 정보가 존재하지 않으면 예외처리 대신 null을 담은 response 반환하도록 수정

* Refactor: Reformat Code

* Feat: Member 정보 업데이트 테스트 추가

* Fix: 더미데이터 로그인 SSR input창 좌우여백 조정 (#130)

fix: css 수정

---------

Co-authored-by: JIHO LEE <[email protected]>
Co-authored-by: eunsoni <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🚀 Deploy 배포 관련 작업을 진행하는 경우 ✨ Feature 새로운 기능 추가 및 구현하는 경우
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Feat: 더미데이터로 로그인 기능 SSR로 추가
4 participants