heli-os / member-invitation-java-springboot

회원 초대 생성/수락 간단 예제 | java springboot
94 stars 15 forks source link

member-invitation-java-springboot

Context

ACs - Biz

ACs - Tech

Challenge

휘발성 성격을 지닌 초대 링크를 어떻게 효율적으로 관리할 것인지?

초대 링크와 관련된 여러 옵션이 추가된다면 어떻게 관리할 것인지?

To-be, 발전 방향

다수의 서버, 인스턴스에서 동작하더라도 문제가 없는 시스템으로 개선

그 외


Overall Architecture

overall-architecture

APIs & Data Model

Data Model

InvitationResponseDto

{
  "workspaceId": 0,
  "memberId": 0,
  "expiresAt": 0, // Unix Time(epochMillis)
  "code": "String"
}

MemberResponseDto

{
  "id": 0,
  "createdAt": 0, // Unix Time(epochMillis)
  "lastModifiedAt": 0, // Unix Time(epochMillis)
  "name": "String",
  "phoneNumber": "String",
  "email": "String",
  "status": "String" // CANDIDATE, ACTIVATE, DEACTIVATE
}

그룹(워크스페이스) 초대 API

POST /api/v1/workspace/{workspaceId}/invitation

Request Body

{
  "inviteMemberName": "String",
  "inviteMemberPhoneNumber": "String",
  "inviteMemberEmail": "String"
}

Response Body

DataModel#InvitationResponseDto

발급된 초대장 조회 API

GET /api/v1/invitation/{code}

Response Body

DataModel#InvitationResponseDto

초대 승낙 API

POST /api/v1/invitation/{code}/accept

Response Body

DataModel#InvitationResponseDto

기존에 가입된 회원 조회 API

GET /api/v1/member/{memberId}

Response Body

DataModel#MemberResponseDto

Appendix