45 lines
2.0 KiB
Plaintext
45 lines
2.0 KiB
Plaintext
flowchart TD
|
|
Start([법인 관리자가 사용자 초대 시작]) --> CheckUser{가입된 사용자인가?}
|
|
|
|
CheckUser -->|아니오| Error1[에러: 가입된 사용자만 초대 가능]
|
|
CheckUser -->|예| CheckRole{이미 법인 사용자인가?}
|
|
|
|
CheckRole -->|예| Error2[에러: 이미 기관에 등록된 사용자]
|
|
CheckRole -->|아니오 ROLE_USER| CreateInvitation[8글자 토큰 생성<br/>UserInvitation 저장<br/>상태: PENDING]
|
|
|
|
CreateInvitation --> SendEmail[이메일 발송<br/>UserInvitationEvent]
|
|
|
|
SendEmail --> UserReceive{사용자가 토큰 받음}
|
|
|
|
UserReceive -->|폐쇄망| ManualInput[8글자 토큰 직접 입력<br/>예: K7MNPQ2R]
|
|
UserReceive -->|이메일 링크| EmailLink[Base64 인코딩된<br/>링크 클릭]
|
|
|
|
ManualInput --> DecodeToken[토큰 디코딩<br/>decodeInvitationToken]
|
|
EmailLink --> DecodeToken
|
|
|
|
DecodeToken --> ValidateToken{토큰 유효성 검증}
|
|
|
|
ValidateToken -->|무효| Error3[에러: 유효하지 않은 초대]
|
|
ValidateToken -->|유효 & PENDING| ShowDecision[약관 동의 페이지<br/>/signup/decision]
|
|
|
|
ShowDecision --> UserDecision{사용자 선택}
|
|
|
|
UserDecision -->|수락| ProcessAccept[processInvitation: accept]
|
|
UserDecision -->|거절| ProcessReject[processInvitation: reject]
|
|
|
|
ProcessAccept --> UpdateUser[1. PortalOrg 변경<br/>2. ROLE_CORP_USER로 전환<br/>3. 약관 재동의 PRIVACY_COLLECT_ORG]
|
|
UpdateUser --> CompleteInvitation[Invitation 상태:<br/>COMPLETED + completeDate]
|
|
CompleteInvitation --> Success([초대 수락 완료<br/>로그아웃 후 재로그인])
|
|
|
|
ProcessReject --> RejectInvitation[Invitation 상태:<br/>REJECTED + completeDate]
|
|
RejectInvitation --> End([초대 거절 완료])
|
|
|
|
style Start fill:#e1f5e1
|
|
style Success fill:#c8e6c9
|
|
style End fill:#fff9c4
|
|
style Error1 fill:#ffcdd2
|
|
style Error2 fill:#ffcdd2
|
|
style Error3 fill:#ffcdd2
|
|
style CreateInvitation fill:#bbdefb
|
|
style UpdateUser fill:#c5cae9
|