diff --git a/src/main/java/com/sudo/raillo/global/config/SecurityConfig.java b/src/main/java/com/sudo/raillo/global/config/SecurityConfig.java index 35f3b954..521b1517 100644 --- a/src/main/java/com/sudo/raillo/global/config/SecurityConfig.java +++ b/src/main/java/com/sudo/raillo/global/config/SecurityConfig.java @@ -64,7 +64,7 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http, auth.requestMatchers("/", "/auth/signup", "/auth/login", "/auth/reissue").permitAll() .requestMatchers(HttpMethod.POST, "/auth/emails/**").permitAll() .requestMatchers(HttpMethod.POST, "/auth/member-no/**", "/auth/password/**").permitAll() - .requestMatchers("/api/v1/guest/register", "/api/v1/trains/**", "/api/v2/trains/**").permitAll() + .requestMatchers("/api/v1/trains/**", "/api/v2/trains/**").permitAll() .requestMatchers("/v3/api-docs/**", "/swagger-ui/**", "/swagger-ui.html").permitAll() .requestMatchers("/actuator/**", "/health").permitAll() .requestMatchers("/test/payments/**").permitAll() diff --git a/src/main/java/com/sudo/raillo/member/application/MemberService.java b/src/main/java/com/sudo/raillo/member/application/MemberService.java index 063a6aab..805d892f 100644 --- a/src/main/java/com/sudo/raillo/member/application/MemberService.java +++ b/src/main/java/com/sudo/raillo/member/application/MemberService.java @@ -1,20 +1,14 @@ package com.sudo.raillo.member.application; -import java.util.List; - -import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.sudo.raillo.auth.application.AuthService; import com.sudo.raillo.booking.infrastructure.BookingRepository; import com.sudo.raillo.global.exception.error.BusinessException; -import com.sudo.raillo.member.application.dto.request.GuestRegisterRequest; -import com.sudo.raillo.member.application.dto.response.GuestRegisterResponse; import com.sudo.raillo.member.application.dto.response.MemberInfoResponse; import com.sudo.raillo.member.domain.Member; import com.sudo.raillo.member.domain.MemberDetail; -import com.sudo.raillo.member.domain.Role; import com.sudo.raillo.member.exception.MemberError; import com.sudo.raillo.member.infrastructure.MemberRepository; @@ -29,31 +23,8 @@ public class MemberService { private final MemberRepository memberRepository; private final BookingRepository bookingRepository; - private final PasswordEncoder passwordEncoder; private final AuthService authService; - /** - * 비회원 등록 - * */ - public GuestRegisterResponse guestRegister(GuestRegisterRequest request) { - // 중복 체크 - List foundMembers = memberRepository.findByNameAndPhoneNumber(request.name(), request.phoneNumber()); - - foundMembers.stream() - .filter(member -> passwordEncoder.matches(request.password(), member.getPassword())) - .findFirst() - .ifPresent(member -> { - throw new BusinessException(MemberError.DUPLICATE_GUEST_INFO); - }); - - String encodedPassword = passwordEncoder.encode(request.password()); - - Member member = Member.createGuest(request.name(), encodedPassword, request.phoneNumber()); - memberRepository.save(member); - - return new GuestRegisterResponse(request.name(), Role.GUEST); - } - /** * 회원 삭제 * */ diff --git a/src/main/java/com/sudo/raillo/member/application/dto/request/GuestRegisterRequest.java b/src/main/java/com/sudo/raillo/member/application/dto/request/GuestRegisterRequest.java deleted file mode 100644 index a1354f63..00000000 --- a/src/main/java/com/sudo/raillo/member/application/dto/request/GuestRegisterRequest.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.sudo.raillo.member.application.dto.request; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Pattern; - -@Schema(description = "게스트 등록 요청 DTO") -public record GuestRegisterRequest( - - @Schema(description = "사용자의 이름", example = "홍길동") - @NotBlank(message = "이름은 필수입니다.") - String name, - - @Schema(description = "사용자의 전화번호 (- 없이 입력)", example = "01012345678") - @NotBlank(message = "전화번호는 필수입니다.") - @Pattern(regexp = "^[0-9]{11}$", message = "전화번호는 -를 제외한 11자리 숫자만 가능합니다.") - String phoneNumber, - - @Schema(description = "5자리의 숫자로 이루어진 비밀번호", example = "12345") - @NotBlank(message = "비밀번호는 필수입니다.") - @Pattern(regexp = "^[0-9]{5}$", message = "비밀번호는 5자리 숫자만 가능합니다.") - String password -) { -} diff --git a/src/main/java/com/sudo/raillo/member/application/dto/response/GuestRegisterResponse.java b/src/main/java/com/sudo/raillo/member/application/dto/response/GuestRegisterResponse.java deleted file mode 100644 index 2496f0ae..00000000 --- a/src/main/java/com/sudo/raillo/member/application/dto/response/GuestRegisterResponse.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.sudo.raillo.member.application.dto.response; - -import com.sudo.raillo.member.domain.Role; - -import io.swagger.v3.oas.annotations.media.Schema; - -@Schema(description = "게스트 등록 응답 DTO") -public record GuestRegisterResponse( - - @Schema(description = "게스트의 이름", example = "홍길동") - String name, - - @Schema(description = "게스트의 권한(Role)", example = "GUEST") - Role role -) { -} diff --git a/src/main/java/com/sudo/raillo/member/docs/MemberControllerDoc.java b/src/main/java/com/sudo/raillo/member/docs/MemberControllerDoc.java index 564413e1..bb2599ed 100644 --- a/src/main/java/com/sudo/raillo/member/docs/MemberControllerDoc.java +++ b/src/main/java/com/sudo/raillo/member/docs/MemberControllerDoc.java @@ -2,8 +2,6 @@ import com.sudo.raillo.global.exception.error.ErrorResponse; import com.sudo.raillo.global.success.SuccessResponse; -import com.sudo.raillo.member.application.dto.request.GuestRegisterRequest; -import com.sudo.raillo.member.application.dto.response.GuestRegisterResponse; import com.sudo.raillo.member.application.dto.response.MemberInfoResponse; import io.swagger.v3.oas.annotations.Operation; @@ -19,13 +17,6 @@ @Tag(name = "Members", description = "👤 회원 API - 회원 정보 조회, 수정, 탈퇴, 관리 API") public interface MemberControllerDoc { - @Operation(method = "POST", summary = "비회원 등록", description = "비회원 정보를 등록합니다.") - @ApiResponses(value = { - @ApiResponse(responseCode = "201", description = "비회원 정보 등록이 성공적으로 완료되었습니다."), - @ApiResponse(responseCode = "409", description = "이미 동일한 비회원 정보가 존재합니다.", content = @Content(schema = @Schema(implementation = ErrorResponse.class))) - }) - SuccessResponse guestRegister(GuestRegisterRequest request); - @Operation(method = "DELETE", summary = "회원 삭제", description = "로그인 되어 있는 회원을 삭제하여 탈퇴처리 합니다.", security = {@SecurityRequirement(name = "bearerAuth")}) @ApiResponses(value = { diff --git a/src/main/java/com/sudo/raillo/member/domain/Member.java b/src/main/java/com/sudo/raillo/member/domain/Member.java index 230aa674..ac957a67 100644 --- a/src/main/java/com/sudo/raillo/member/domain/Member.java +++ b/src/main/java/com/sudo/raillo/member/domain/Member.java @@ -73,20 +73,6 @@ public static Member create( return member; } - // 비회원 등록 정적 팩토리 메서드 - public static Member createGuest( - String name, - String password, - String phoneNumber - ) { - Member member = new Member(); - member.name = name; - member.password = password; - member.phoneNumber = phoneNumber; - member.role = Role.GUEST; - return member; - } - public void updatePhoneNumber(String newPhoneNumber) { validateNewPhoneNumber(newPhoneNumber); this.phoneNumber = newPhoneNumber; diff --git a/src/main/java/com/sudo/raillo/member/domain/Role.java b/src/main/java/com/sudo/raillo/member/domain/Role.java index 9246ac49..c0f6021a 100644 --- a/src/main/java/com/sudo/raillo/member/domain/Role.java +++ b/src/main/java/com/sudo/raillo/member/domain/Role.java @@ -1,5 +1,5 @@ package com.sudo.raillo.member.domain; public enum Role { - GUEST, MEMBER, ADMIN + MEMBER, ADMIN } diff --git a/src/main/java/com/sudo/raillo/member/exception/MemberError.java b/src/main/java/com/sudo/raillo/member/exception/MemberError.java index 1466f802..8744ec1f 100644 --- a/src/main/java/com/sudo/raillo/member/exception/MemberError.java +++ b/src/main/java/com/sudo/raillo/member/exception/MemberError.java @@ -14,7 +14,6 @@ public enum MemberError implements ErrorCode { USER_NOT_FOUND("사용자를 찾을 수 없습니다.", HttpStatus.NOT_FOUND, "M_001"), DUPLICATE_EMAIL("이미 사용 중인 이메일입니다.", HttpStatus.CONFLICT, "M_002"), INVALID_PASSWORD("비밀번호가 올바르지 않습니다.", HttpStatus.UNAUTHORIZED, "M_003"), - DUPLICATE_GUEST_INFO("이미 동일한 비회원 정보가 존재합니다.", HttpStatus.CONFLICT, "M_004"), MEMBER_DELETE_FAIL("회원 삭제에 실패하였습니다.", HttpStatus.INTERNAL_SERVER_ERROR, "M_005"), SAME_PHONE_NUMBER("현재 사용하는 휴대폰 번호와 동일합니다.", HttpStatus.CONFLICT, "M_006"), DUPLICATE_PHONE_NUMBER("이미 사용 중인 휴대폰 번호입니다.", HttpStatus.CONFLICT, "M_007"), diff --git a/src/main/java/com/sudo/raillo/member/presentation/MemberController.java b/src/main/java/com/sudo/raillo/member/presentation/MemberController.java index c6da56d7..e9b1e559 100644 --- a/src/main/java/com/sudo/raillo/member/presentation/MemberController.java +++ b/src/main/java/com/sudo/raillo/member/presentation/MemberController.java @@ -4,22 +4,17 @@ import org.springframework.security.core.userdetails.UserDetails; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.sudo.raillo.auth.security.jwt.TokenExtractor; import com.sudo.raillo.global.success.SuccessResponse; import com.sudo.raillo.member.application.MemberService; -import com.sudo.raillo.member.application.dto.request.GuestRegisterRequest; -import com.sudo.raillo.member.application.dto.response.GuestRegisterResponse; import com.sudo.raillo.member.application.dto.response.MemberInfoResponse; import com.sudo.raillo.member.docs.MemberControllerDoc; import com.sudo.raillo.member.success.MemberSuccess; import jakarta.servlet.http.HttpServletRequest; -import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @RestController @@ -30,13 +25,6 @@ public class MemberController implements MemberControllerDoc { private final MemberService memberService; private final TokenExtractor tokenExtractor; - @PostMapping("/guest/register") - public SuccessResponse guestRegister(@RequestBody @Valid GuestRegisterRequest request) { - GuestRegisterResponse response = memberService.guestRegister(request); - - return SuccessResponse.of(MemberSuccess.GUEST_REGISTER_SUCCESS, response); - } - @DeleteMapping("/members") public SuccessResponse memberDelete( HttpServletRequest request, diff --git a/src/main/java/com/sudo/raillo/member/success/MemberSuccess.java b/src/main/java/com/sudo/raillo/member/success/MemberSuccess.java index 7c39c4da..31ffc297 100644 --- a/src/main/java/com/sudo/raillo/member/success/MemberSuccess.java +++ b/src/main/java/com/sudo/raillo/member/success/MemberSuccess.java @@ -11,9 +11,6 @@ @RequiredArgsConstructor public enum MemberSuccess implements SuccessCode { - // 비회원 - GUEST_REGISTER_SUCCESS(HttpStatus.CREATED, "비회원 정보 등록이 성공적으로 완료되었습니다."), - // 회원 MEMBER_DELETE_SUCCESS(HttpStatus.OK, "회원 탈퇴가 성공적으로 완료되었습니다."), MEMBER_INFO_SUCCESS(HttpStatus.OK, "회원 정보 조회에 성공했습니다."), diff --git a/src/test/java/com/sudo/raillo/member/application/MemberServiceTest.java b/src/test/java/com/sudo/raillo/member/application/MemberServiceTest.java index 168e31e5..a643b7bd 100644 --- a/src/test/java/com/sudo/raillo/member/application/MemberServiceTest.java +++ b/src/test/java/com/sudo/raillo/member/application/MemberServiceTest.java @@ -6,16 +6,12 @@ import com.sudo.raillo.auth.application.AuthService; import com.sudo.raillo.auth.application.dto.response.TokenResponse; import com.sudo.raillo.global.exception.error.BusinessException; -import com.sudo.raillo.member.application.dto.request.GuestRegisterRequest; -import com.sudo.raillo.member.application.dto.response.GuestRegisterResponse; import com.sudo.raillo.member.application.dto.response.MemberInfoResponse; import com.sudo.raillo.member.domain.Member; -import com.sudo.raillo.member.domain.Role; import com.sudo.raillo.member.exception.MemberError; import com.sudo.raillo.member.infrastructure.MemberRepository; import com.sudo.raillo.support.annotation.ServiceTest; import com.sudo.raillo.support.fixture.MemberFixture; -import java.util.List; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -36,48 +32,6 @@ class MemberServiceTest { @Autowired private PasswordEncoder passwordEncoder; - @Test - @DisplayName("비회원 등록에 성공한다.") - void guestRegister_success() { - //given - GuestRegisterRequest request = new GuestRegisterRequest("김이름", "01012341234", "testPwd"); - - //when - GuestRegisterResponse response = memberService.guestRegister(request); - - //then - List members = memberRepository.findByNameAndPhoneNumber(request.name(), request.phoneNumber()); - - assertThat(members).isNotEmpty(); - - Member savedGuestMember = members.stream() - .filter(member -> passwordEncoder.matches(request.password(), member.getPassword())) - .findFirst() - .orElseThrow(() -> new AssertionError("등록된 회원을 찾을 수 없습니다.")); - - assertThat(response.name()).isEqualTo(request.name()); - assertThat(response.role()).isEqualTo(Role.GUEST); - - assertThat(savedGuestMember.getName()).isEqualTo(request.name()); - assertThat(savedGuestMember.getPhoneNumber()).isEqualTo(request.phoneNumber()); - assertThat(passwordEncoder.matches(request.password(), savedGuestMember.getPassword())).isTrue(); - assertThat(savedGuestMember.getRole()).isEqualTo(Role.GUEST); - } - - @Test - @DisplayName("중복된 비회원 정보로 비회원 등록에 실패한다.") - void guestRegister_fail() { - //given - GuestRegisterRequest request = new GuestRegisterRequest("김이름", "01012341234", "testPwd"); - memberService.guestRegister(request); - - //when & then - assertThatExceptionOfType(BusinessException.class) - .isThrownBy(() -> memberService.guestRegister(request)) - .satisfies(exception -> - assertThat(exception.getErrorCode()).isEqualTo(MemberError.DUPLICATE_GUEST_INFO)); - } - @Test @DisplayName("회원 삭제에 성공한다.") void deleteMember_success() { diff --git a/src/test/java/com/sudo/raillo/member/domain/MemberTest.java b/src/test/java/com/sudo/raillo/member/domain/MemberTest.java index d2a05a3d..69878f86 100644 --- a/src/test/java/com/sudo/raillo/member/domain/MemberTest.java +++ b/src/test/java/com/sudo/raillo/member/domain/MemberTest.java @@ -39,25 +39,6 @@ void create() { assertThat(member.getMemberDetail().getGender()).isEqualTo(gender); } - @Test - @DisplayName("비회원 생성 시 역할이 GUEST이고 회원 상세 정보가 없다") - void createGuest() { - // given - String name = "비회원"; - String password = "guestPassword"; - String phoneNumber = "010-9999-9999"; - - // when - Member guest = Member.createGuest(name, password, phoneNumber); - - // then - assertThat(guest.getName()).isEqualTo(name); - assertThat(guest.getPassword()).isEqualTo(password); - assertThat(guest.getPhoneNumber()).isEqualTo(phoneNumber); - assertThat(guest.getRole()).isEqualTo(Role.GUEST); - assertThat(guest.getMemberDetail()).isNull(); - } - @Test @DisplayName("전화번호를 새로운 번호로 변경할 수 있다") void updatePhoneNumber() { @@ -144,4 +125,4 @@ void updateEmailFail() { .isInstanceOf(DomainException.class) .hasMessage(MemberError.SAME_EMAIL.getMessage()); } -} \ No newline at end of file +}