-
Notifications
You must be signed in to change notification settings - Fork 8
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
[BE] EntryCode 도메인을 개선한다. #399
Comments
seokjin8678
added a commit
that referenced
this issue
Aug 31, 2023
seokjin8678
added a commit
that referenced
this issue
Sep 14, 2023
* refactor: EntryCode에서 시간에 관련된 부분 분리 * refactor: EntryCodeProvider 파라미터 수정 - EntryCodePayload -> MemberTicket * test: JwtEntryCodeProvider 테스트 코드 개선 * feat: JwtEntryCodeExtractor null 검사 추가 * refactor: create 정적 메서드로 생성 변경 * refactor: EntryCodeProvider 매개변수 EntryCodePayload로 변경 * refactor: EntryCodeManager 추가, 사용 * refactor: 단위에 언더스코어 추가
BGuga
pushed a commit
that referenced
this issue
Oct 17, 2023
* refactor: EntryCode에서 시간에 관련된 부분 분리 * refactor: EntryCodeProvider 파라미터 수정 - EntryCodePayload -> MemberTicket * test: JwtEntryCodeProvider 테스트 코드 개선 * feat: JwtEntryCodeExtractor null 검사 추가 * refactor: create 정적 메서드로 생성 변경 * refactor: EntryCodeProvider 매개변수 EntryCodePayload로 변경 * refactor: EntryCodeManager 추가, 사용 * refactor: 단위에 언더스코어 추가
BGuga
pushed a commit
that referenced
this issue
Oct 17, 2023
* refactor: EntryCode에서 시간에 관련된 부분 분리 * refactor: EntryCodeProvider 파라미터 수정 - EntryCodePayload -> MemberTicket * test: JwtEntryCodeProvider 테스트 코드 개선 * feat: JwtEntryCodeExtractor null 검사 추가 * refactor: create 정적 메서드로 생성 변경 * refactor: EntryCodeProvider 매개변수 EntryCodePayload로 변경 * refactor: EntryCodeManager 추가, 사용 * refactor: 단위에 언더스코어 추가
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
✨ 세부 내용
EntryCode 도메인에 다음과 같은 문제가 있습니다.
EntryCode의 생성은
create
정적 메서드에만 의존합니다.또한
create
정적 메서드의 파라미터로EntryCodeProvider
가 필요합니다.해당 이유는 만료 시간의 필요 때문인데, 만료 시간을 구하려면 EntryCode의 period와 offset이 필요합니다.
하지만 EntryCode의 period와 offset를 가져오려면, 인스턴스를 만들어야 하고, 인스턴스를 만드려면
EntryCodeProvider
에서 생성한 코드가 필요합니다.닭이 먼저냐, 달걀이 먼저냐 하는 문제가 발생합니다.
따라서 해당 문제를 해결하려고 EntryCode의
create()
정적 메서드를 통해 EntryCode를 생성합니다.EntryCode를 생성하는 것은 EntryCode의 정적 변수인
DEFAULT_PERIOD
,DEFAULT_OFFSET
을 토대로 구하므로,create
메소드에EntryCodeProvider
와MemberTicket
을 포함하는 것은 코드의 흐름을 읽는 데 복잡성을 증가시킨다 생각합니다.또한 정적 변수에 의존하므로, 추후 동적으로 만료 시간을 변경하기가 힘듭니다.
따라서 다음과 같이 개선해 볼 수 있을것 같습니다.
시간에 관련된 부분을 EntryCodeTime 객체로 분리하여, 코드 생성 전
EntryCodeProvider
에서 만료시간을 받을 수 있게 합니다.그 뒤
EntryCode
의 생성자로 코드와 시간에 관련된 객체를 주입하여EntryCode
를 생성합니다.또한 개선할 부분이
EntryCodeProvider.provide()
메서드인데, 굳이 매개변수로EntryCodePayload
를 받을 필요가 없고, 바로MemberTicket
을 받아도 될 것 같습니다.또한 추후 Clock 사용을 한다면 다음과 같이 변경 할 수 있겠네요!
⏰ 예상 소요 시간
3시간
The text was updated successfully, but these errors were encountered: