Skip to content

Commit

Permalink
feature: 로그인 api 추가 (#34)
Browse files Browse the repository at this point in the history
  • Loading branch information
Sangwook02 authored Jul 27, 2024
1 parent 001a6e2 commit 9d1276f
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.goldbalance.dive.domain.member.api;

import com.goldbalance.dive.domain.member.dto.MemberLogin;
import com.goldbalance.dive.domain.member.dto.request.MemberSignin;
import com.goldbalance.dive.domain.member.service.MemberService;
import jakarta.validation.Valid;
Expand All @@ -23,4 +24,10 @@ public ResponseEntity<Void> signin(@Valid @RequestBody MemberSignin request) {
memberService.signin(request);
return ResponseEntity.status(HttpStatusCode.valueOf(201)).build();
}

@PostMapping("/login")
public ResponseEntity<MemberLogin> login(@Valid @RequestBody MemberLogin request) {
MemberLogin response = memberService.login(request);
return ResponseEntity.ok(response);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.goldbalance.dive.domain.member.dto;

import com.goldbalance.dive.domain.member.domain.Member;
import jakarta.validation.constraints.NotBlank;

public record MemberLogin(@NotBlank String nickname) {
public static MemberLogin from(Member member) {
return new MemberLogin(member.getNickname());
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package com.goldbalance.dive.domain.member.repository;

import com.goldbalance.dive.domain.member.domain.Member;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;

public interface MemberRepository extends JpaRepository<Member, Long> {
boolean existsByNickname(String nickname);

Optional<Member> findByNickname(String nickname);
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package com.goldbalance.dive.domain.member.service;

import static com.goldbalance.dive.global.exception.ErrorCode.*;

import com.goldbalance.dive.domain.member.domain.Member;
import com.goldbalance.dive.domain.member.dto.MemberLogin;
import com.goldbalance.dive.domain.member.dto.request.MemberSignin;
import com.goldbalance.dive.domain.member.repository.MemberRepository;
import com.goldbalance.dive.global.exception.CustomException;
import com.goldbalance.dive.global.exception.ErrorCode;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
Expand All @@ -22,12 +24,21 @@ public class MemberService {
public void signin(MemberSignin request) {
boolean isDuplicate = memberRepository.existsByNickname(request.nickname());
if (isDuplicate) {
throw new CustomException(ErrorCode.MEMBER_NICKNAME_DUPLICATE);
throw new CustomException(MEMBER_NICKNAME_DUPLICATE);
}

Member member = Member.create(request.nickname());
memberRepository.save(member);

log.info("[MemberService] 멤버 회원가입 memberId = {}", member.getId());
}

public MemberLogin login(MemberLogin request) {
Member member = memberRepository
.findByNickname(request.nickname())
.orElseThrow(() -> new CustomException(MEMBER_NOT_FOUND));

log.info("[MemberService] 멤버 로그인 memberId = {}", member.getId());
return MemberLogin.from(member);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ public enum ErrorCode {
INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "서버 에러입니다."),

// Member
MEMBER_NICKNAME_DUPLICATE(HttpStatus.BAD_REQUEST, "이미 존재하는 닉네임입니다.");
MEMBER_NICKNAME_DUPLICATE(HttpStatus.BAD_REQUEST, "이미 존재하는 닉네임입니다."),
MEMBER_NOT_FOUND(HttpStatus.NOT_FOUND, "존재하지 않는 멤버입니다.");

private final HttpStatus status;
private final String message;
Expand Down

0 comments on commit 9d1276f

Please sign in to comment.