역할 : manager(1) > sub_manager > member
[초대 관련]
-
[x] 팀 초대
- 접근 가능한 역할 : manager, sub_manager
- 저장소 초대 링크 발급
- 이메일로 초대 링크 보내기
- email을 적어서 초대 링크 보내기 눌렀을 때, 서버에서는 초대 링크 발급해서 초대할 유저에게 발송. 이후 redis에 유효기간과 함께 저장
- 초대 링크에는 팀 id, email이 암호화 된 코드와 리다이렉트 경로가 존재해야함
[exception]
- 초대 권한이 없는 경우
- 가입되지 않은 유저에게 초대를 보낸 경우
- 팀에 존재하는 유저에게 초대를 보낸 경우
- 이미 초대 메일을 보낸 유저인 경우
-
[x] 팀 참가
[exception]
- 유저가 일치하지 않은 경우
- 이미 팀에 가입 되어 있는 경우
- 유효기간이 지난 경우
[팀 그룹 관련]
-
[x] 팀 생성
- 팀 생성 시, 만든 사람의 역할을 manager로 부여
[exception]
- 팀 이름이 존재하는 경우
-
[x] 팀 목록 조회
- 삭제 된 팀도 조회, 7일 후 영구히 삭제 된다는 문구 띄우기 (DB 스케쥴링은 구현하지 않을 예정이므로 실제 서비스에서는 7일이 지나도 보임) —→ 삭제를 해도 DB에 남아있어서 alert + 표시
-
[x] 팀 상세 조회
-
[x] 팀 정보 수정
- 접근 가능한 역할 : manager, sub_manager
- 팀 이름, 팀 설명 수정 가능
-
[x] 팀 삭제
기능 개선이 필요함
- 접근 가능한 역할 : manager
- soft delete
- 현재로써는 DB 스케쥴링은 하지 않을 예정 (추후 기능 추가)
-
[x] 팀 삭제 취소
-
[x] 팀 나가기
- 접근 가능한 역할 : sub_manager, member
- 클라이언트에 강력한 문구 띄우기
- Manager 즉, 팀의 방장은 나갈 수 없음 (방장은 팀 삭제만 가능)
[exception]
- manager 권한의 유저가 팀을 나가려하는 경우
-
[x] 팀원 퇴출
- 접근 가능한 역할 : manager, sub_manager
- sub_manager는 manager 퇴출 불가
- 퇴출된 유저에게는 퇴출 내용 메일이 감
- 클라이언트에서는 팀원 퇴출 권한이 있는 유저에게만 관련 기능 UI가 보이게 표시
[exception]
- manager를 퇴출시키려할 때
-
[x] 역할 부여 (진급)
- 접근 가능한 역할 : manager, sub_manager
- member → sub_manager
-
[x] 역할 부여 (강등)
- 접근 가능한 역할 : manager
- sub_manager → member
[팀 프로젝트 관련]
-
[x] 레포지토리 생성
- 접근 가능한 역할 : manager, sub_manager
[exception]
- 레포지토리 디랙토리 생성 중 오류가 발생했을 때
- 팀 내 레포지토리 이름이 중복됐을 때
-
[x] 레포지토리 목록 조회
-
[x] 레포지토리 수정
- 접근 가능한 역할 : manager, sub_manager
- 프로젝트 이름, 프로젝트 설명 변경
-
[x] 레포지토리 삭제
- 접근 가능한 역할 : manager, sub_manager
- soft delete