📍 개발 순서
- 로그인 요청 dto 작성
- 로그인 repository 작성
- 로그인 비즈니스 로직 작성
- 로그인 컨트롤러 작성
📍 개발
로그인 요청 dto 작성
UserSigninReq
package com.example.realtimestreaming.Dto.Request.User;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
public class UserSigninReq {
private String email;
private String password;
}
로그인 repository 작성
UserRepository
package com.example.realtimestreaming.Repository;
import com.example.realtimestreaming.Domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
Boolean existsByNickname(String nickname);
Boolean existsByEmail(String email);
User findUserByUserId(Long userId);
User findUserByEmail(String email);
}
- findUserByEmail(String email): email로 사용자를 찾는 메서드 추가
로그인 비즈니스 로직 작성
UserService
public UserSignRes signin(UserSigninReq request) {
var signinUser = userRepository.findUserByEmail(request.getEmail());
if (signinUser == null) {
throw new NotFoundException(ErrorCode.NO_MATCHING_USER_FOUND_WITH_EMAIL.getMessage());
} else if(!signinUser.getPassword().equals(request.getPassword())) {
throw new IllegalStateException(ErrorCode.NO_MATCHING_USER_FOUND_WITH_PASSWORD.getMessage());
}
return new UserSignRes(
signinUser.getUserId(),
signinUser.getNickname(),
signinUser.getToken()
);
}
로그인 컨트롤러 작성
UserController
@PostMapping("/signin")
public ResponseEntity<ResponseDto<UserSignRes>> signin(@RequestBody UserSigninReq request) {
var user = userService.signin(request);
return ResponseDto.ok(user);
}
📍 결과
- 로그인 성공
- 이메일 잘못 입력
- 패스워드 잘못 입력