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

[REFACTOR] 사용자 식별 도입 #779

Closed
zangsu opened this issue Oct 12, 2024 · 6 comments
Closed

[REFACTOR] 사용자 식별 도입 #779

zangsu opened this issue Oct 12, 2024 · 6 comments
Assignees
Labels
BE 백엔드 refactor 요구사항이 바뀌지 않은 변경사항

Comments

@zangsu
Copy link
Contributor

zangsu commented Oct 12, 2024

📌 어떤 기능을 리팩터링 하나요?

각 사용자를 식별할 수 있도록 변경한다.

AS-IS

현재는 각 사용자 정보는 이름(닉네임) 과 비밀번호가 전부이다.
문제점 :

  • 사용자가 계정 정보를 잃어버린 경우 조치 불가능
  • 악성 유저의 제제 불가능

TO-BE

사용자들을 식별할 수 있도록 변경한다.

⏳ 예상 소요 시간

1주일

🔍 참고할만한 자료(선택)

@zangsu zangsu added refactor 요구사항이 바뀌지 않은 변경사항 BE 백엔드 labels Oct 12, 2024
@zangsu zangsu added this to the 6차 스프린트 🦴 milestone Oct 12, 2024
@zangsu zangsu self-assigned this Oct 12, 2024
@zangsu
Copy link
Contributor Author

zangsu commented Oct 12, 2024

고려 사항

각각의 도입 방법에 대해 다음의 요소를 고려합니다.

  • 도입하기 위한 필요 학습 시간
  • 작업 시간
  • 작업 난이도
  • 필요한 프론트엔드 작업
  • 필요한 정책적 논의
  • DB 테이블 변경 및 무중단 배포를 위한 마이그레이션 방법

@zangsu
Copy link
Contributor Author

zangsu commented Oct 13, 2024

Oauth

결국 Oauth 를 도입하더라도 각각의 사람들을 식별하기 위해선 Oauth 에서 제공해 주는 특정 값을 DB 에 저장해 두어야 한다.

모든 OAuth 제공자는 일반적으로 사용자를 식별하기 위한 고유 사용자 ID를 반환해줍니다. 이 고유 ID는 각 OAuth 제공자가 발행한 사용자에 대한 고유한 식별자로, 서비스가 사용자 계정을 일관되게 관리할 수 있도록 해줍니다. OAuth 프로토콜의 핵심 요소 중 하나가 바로 사용자 식별이기 때문에, OAuth 제공자는 반드시 이와 같은 식별자를 제공해야 합니다.
by ChatGPT

위 내용에 대한 공식 문서를 찾고 싶은데, 아직 찾지는 못했어요...


도입 방법

  1. DB Member 컬럼에 각 oauth 의 식별값 추가
  2. DB 테이블로 각 Oauth 의 식별값 추가 및 FK 연결

1번 방식의 경우 oauth 서비스가 늘어날 때 마다 테이블의 필드가 커지게 된다.
때문에 각각의 Oauth 서비스가 추가될 때 마다 테이블을 추가해 주는 것이 관리에 용이할 것 같다.

+) 위 방법을 언급한 이유는 여러 Oauth 가 하나의 계정과 연결될 수 있도록 구상 중이기 때문입니다.
나의 템플릿 을 관리하는 상황에서 계정이 여러개로 나뉘는 것 보단 어떤 Oauth 로도 동일한 권한을 가질 수 있는 것이 좋을 듯 합니다.

@zangsu
Copy link
Contributor Author

zangsu commented Oct 14, 2024

이메일 확인

  1. 이메일 형식 확인: 정규 표현식을 사용하여 이메일 주소가 올바른 형식인지 확인.
  2. 이메일 발송: JavaMail API를 사용하여 이메일을 발송.
  3. 사용자 응답 대기: 이메일 내의 확인 링크 클릭 또는 인증 코드 입력을 통해 이메일의 유효성을 최종 확인.

사용자가 올바른 이메일을 사용하였는지 확인하기 위해 추가적으로 필요한 기능

  1. 적절한 랜덤 코드 생성
  2. 사용자 이메일 인증을 위한 API 생성

@zangsu
Copy link
Contributor Author

zangsu commented Oct 14, 2024

모든 경우에서 인증되지 않은 사용자가 로그인 하면 인증 페이지로 리다이렉트 해야 합니다.
이 과정에서 페이지가 추가적으로 필요합니다.

Oauth 방법 선택시 -> 소셜 로그인 연결하기 페이지
Email 방법 선택시 -> 이메일 인증하기 페이지

@zangsu
Copy link
Contributor Author

zangsu commented Oct 15, 2024

파생될 수 있는 이슈

사용자 식별 여부에 따라 권한을 다르게 부여할 수 있어야 할 것 같습니다.
이를테면, 아직 회원 인증이 되지 않은 경우 템플릿을 작성할 수 없도록 만든다거나...

"사용자 식별" 에 대한 작업은 아니므로 이 부분은 언급만 하고 추후 진행되면 좋을 것 같아요

@zangsu
Copy link
Contributor Author

zangsu commented Oct 15, 2024

내부 회의 결과에 따라 "사용자 식별" 이 아닌 #794 로 작업 변경

@zangsu zangsu closed this as completed Oct 15, 2024
@github-project-automation github-project-automation bot moved this from Todo to Weekend Done in 2024-code-zap Oct 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BE 백엔드 refactor 요구사항이 바뀌지 않은 변경사항
Projects
Status: Weekend Done
Development

No branches or pull requests

1 participant