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

feat: 랜딩페이지 입장시 프로젝트의 리더에게만 초대링크를 제공하도록 변경 #334

Merged
merged 3 commits into from
Sep 18, 2024

Conversation

choyoungwoo9
Copy link
Collaborator

🎟️ 태스크

랜딩페이지의 초대링크 API 변경

✅ 작업 내용

  • 잘못된 테스트파일이름 수정
  • 파라미터 형식 변경
  • 랜딩페이지 입장시 프로젝트의 리더에게만 초대링크를 제공하도록 구현

🖊️ 구체적인 작업

파라미터 형식 변경

  • 레포지토리의 getProjectToMember 메서드 파라미터를 project가 아닌 projectId만 받도록 변경
  • 서비스의 isProjectMember, isProjectLeader 메서드 파라미터를 project가 아닌 projectId만 받도록 변경
  • 서비스 메서드의 변경으로 인해 영향을 받는 컨트롤러 계층의 인수 수정

랜딩페이지 입장시 프로젝트의 리더에게만 초대링크를 제공하도록 구현

  • getProject 서비스 메서드에서 리더에게만 초대링크를 제공하도록 변경
  • getProject의 파라미터가 회원정보를 추가로 요구하기 영향을 받는 메서드 수정
  • 클라이언트 API의 DTO인 initLandingDto에서 초대링크 정보가 있을때만 첨부하도록 변경
  • 리더에게는 초대링크가 제공되고, 일반 멤버에게는 초대링크가 제공되지 않는것을 확인하는 E2E테스트 추가

🤔 고민 및 의논할 거리

이 변경사항을 컨트롤러에 적용할지, 서비스에 적용할지 고민했습니다. 컨트롤러에 적용할 경우 간단하게 DTO클래스에서 "팀장이면 inviteLink를 프로퍼티로 추가한다" 논리를 넣어서 간단하게 구현할 수 있고, 서비스에 적용할 경우 기존에는 getProject가 프로젝트 ID만 매개변수로 사용하는 반면, 이 로직을 구현하기 위해서는 회원정보도 매개변수로 받아야 해 메서드 시그니처 자체가 바뀌는 불편함이 있습니다. 특히 getProject는 여러 컨트롤러가 사용하기 때문에 변경이 확산되게 됩니다.

하지만 구현의 불편함보다는 컨트롤러계층에 적용했을때의 얻는 단점이 더 크다고 판단해 서비스 계층에 적용하기로 결정했습니다. API가 변경되면 컨트롤러 계층에서의 구현이 바뀔텐데 이로 인해 자칫 잘못하면 리더가 아닌 회원에게도 쉽게 초대링크가 노출될 것이라고 판단했습니다.

이 케이스를 조금 더 일반화해 이야기하면 "표현계층에 비즈니스로직을 넣으면 비즈니스 로직이 표현 계층의 변화에 의해 쉽게 변경될 가능성이 있고, 이러한 형태는 바람직하지 않기 때문에 서비스 계층에 비즈니스 로직을 구현했다"입니다. 감사합니다~

- 레포지토리의 getProjectToMember 메서드 파라미터를 project가 아닌 projectId만 받도록 변경
- 서비스의 isProjectMember, isProjectLeader 메서드 파라미터를 project가 아닌 projectId만 받도록 변경
- 서비스 메서드의 변경으로 인해 영향을 받는 컨트롤러 계층의 인수 수정
- getProject 서비스 메서드에서 리더에게만 초대링크를 제공하도록 변경
- getProject의 파라미터가 회원정보를 추가로 요구하기 영향을 받는 메서드 수정
- 클라이언트 API의 DTO인 initLandingDto에서 초대링크 정보가 있을때만 첨부하도록 변경
- 리더에게는 초대링크가 제공되고, 일반 멤버에게는 초대링크가 제공되지 않는것을 확인하는 E2E테스트 추가
@choyoungwoo9 choyoungwoo9 added BE 🎉feature 새로운 기능 labels Sep 18, 2024
@choyoungwoo9 choyoungwoo9 merged commit 4c7783b into dev Sep 18, 2024
1 check passed
@choyoungwoo9 choyoungwoo9 deleted the feature/invite-project-only-leader branch September 18, 2024 11:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BE 🎉feature 새로운 기능
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant