파트너 채널 초대 링크 가입 경로 통제 기능 구현
목차
파트너 초대 토큰 기능 추가 및 관련 UI/쿼리 업데이트
파트너 초대 토큰 기능 추가 및 관련 UI/쿼리 업데이트 기능을 구현했음.
배경
신규 채널 사용자 등록 시 초대 링크 방식을 도입했음. 무작위 가입을 막고 상위 채널이 하위를 직접 초대하는 구조를 만들었음.
구현 방식
초대 토큰을 생성해서 링크에 포함하고, 가입 시 토큰을 검증했음. 토큰은 7일 만료, 1회 사용 후 무효화했음.
코드 예시
// 토큰 생성
public String createInviteToken(Long issuerId) {
String token = UUID.randomUUID().toString().replace("-", "");
InviteToken it = InviteToken.builder()
.issuerId(issuerId)
.token(token)
.expiresAt(LocalDateTime.now().plusDays(7))
.used(false)
.build();
inviteRepo.save(it);
return token;
}
// 가입 시 검증
public void register(String token, UserInfo info) {
InviteToken invite = inviteRepo.findByToken(token)
.filter(t -> !t.isUsed())
.filter(t -> t.getExpiresAt().isAfter(LocalDateTime.now()))
.orElseThrow(() -> new InvalidTokenException("유효하지 않은 초대 링크"));
createUser(info, invite.getIssuerId());
invite.markUsed();
inviteRepo.save(invite);
}
검토 포인트
토큰 만료와 사용 여부 체크는 둘 다 필요함. 만료 체크만 하면 이미 사용된 토큰을 재사용할 수 있고, 사용 여부만 체크하면 만료 없이 무한히 유효한 토큰이 생김.
정리
초대 링크 기반으로 채널 사용자가 통제되어 무분별한 가입을 막을 수 있게 됐음. 가입 경로도 추적 가능해짐.
다음
댓글 0
첫 댓글 달아줘.