Skip to content

Commit

Permalink
fix: withdraw temporary role 갱신 (#119)
Browse files Browse the repository at this point in the history
* fix: withdraw temporary role 갱신

* fix: SqlDelete 사용

* refactor: 회원탈퇴 로직
  • Loading branch information
char-yb authored Aug 14, 2024
1 parent 183d59a commit 47186aa
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 46 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
Expand Down Expand Up @@ -57,7 +58,7 @@ public AuthTokenResponse reissueTokenPair(@RequestBody @Valid RefreshTokenReques
}

@Operation(summary = "회원탈퇴 기능", description = "회원탈퇴를 진행합니다.")
@PostMapping("/withdraw")
@DeleteMapping("/withdraw")
public ResponseEntity<Void> withdraw() {
authService.withdraw();
return ResponseEntity.ok().build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import com.depromeet.stonebed.domain.member.dao.MemberRepository;
import com.depromeet.stonebed.domain.member.domain.Member;
import com.depromeet.stonebed.domain.member.domain.MemberRole;
import com.depromeet.stonebed.domain.member.domain.MemberStatus;
import com.depromeet.stonebed.domain.member.domain.Profile;
import com.depromeet.stonebed.domain.member.dto.request.CreateMemberRequest;
import com.depromeet.stonebed.domain.member.dto.request.NicknameCheckRequest;
Expand Down Expand Up @@ -125,8 +126,16 @@ public void withdraw() {
* TODO: 런칭데이 이후 고도화 if (provider.equals(OAuthProvider.APPLE)) {
* appleClient.withdraw(member.getOauthInfo().getOauthId()); }
*/
validateMemberStatusDelete(member.getStatus());
jwtTokenService.deleteRefreshToken(member.getId());
member.withdrawal();
member.updateMemberRole(MemberRole.TEMPORARY);
memberRepository.deleteById(member.getId());
}

private void validateMemberStatusDelete(MemberStatus status) {
if (status == MemberStatus.DELETED) {
throw new CustomException(ErrorCode.MEMBER_ALREADY_DELETED);
}
}

private Member registerMember(Member member, CreateMemberRequest request) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

import com.depromeet.stonebed.domain.auth.domain.OAuthProvider;
import com.depromeet.stonebed.domain.common.BaseTimeEntity;
import com.depromeet.stonebed.global.error.ErrorCode;
import com.depromeet.stonebed.global.error.exception.CustomException;
import jakarta.persistence.Column;
import jakarta.persistence.Embedded;
import jakarta.persistence.Entity;
Expand All @@ -17,10 +15,12 @@
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.SQLDelete;

@Getter
@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@SQLDelete(sql = "UPDATE member SET status = 'DELETED' WHERE member_id = ?")
public class Member extends BaseTimeEntity {

@Id
Expand Down Expand Up @@ -99,11 +99,4 @@ public void updateProfile(Profile profile) {
public void updateMemberRole(MemberRole memberRole) {
this.role = memberRole;
}

public void withdrawal() {
if (this.status == MemberStatus.DELETED) {
throw new CustomException(ErrorCode.MEMBER_ALREADY_DELETED);
}
this.status = MemberStatus.DELETED;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@

import com.depromeet.stonebed.FixtureMonkeySetUp;
import com.depromeet.stonebed.domain.auth.domain.OAuthProvider;
import com.depromeet.stonebed.global.error.ErrorCode;
import com.depromeet.stonebed.global.error.exception.CustomException;
import java.time.LocalDateTime;
import org.junit.jupiter.api.Test;
import org.springframework.test.context.ActiveProfiles;
Expand Down Expand Up @@ -103,37 +101,4 @@ class MemberTest extends FixtureMonkeySetUp {
// then
assertEquals(newRole, member.getRole());
}

@Test
void withdrawal_성공() {
// given
Member member =
fixtureMonkey
.giveMeBuilder(Member.class)
.set("role", MemberRole.USER)
.set("status", MemberStatus.NORMAL)
.sample();
member.updateMemberRole(MemberRole.USER);

// when
member.withdrawal();

// then
assertEquals(MemberStatus.DELETED, member.getStatus());
}

@Test
void withdrawal_실패_MEMBER_ALREADY_DELETED() {
// given
Member member =
fixtureMonkey
.giveMeBuilder(Member.class)
.set("role", MemberRole.USER)
.set("status", MemberStatus.DELETED)
.sample();

// when & then
CustomException exception = assertThrows(CustomException.class, member::withdrawal);
assertEquals(ErrorCode.MEMBER_ALREADY_DELETED, exception.getErrorCode());
}
}

0 comments on commit 47186aa

Please sign in to comment.