로그인 API 개발 - 1 기본기능

oh_eol·2024년 4월 19일
0

📍 개발 순서

  • 로그인 요청 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);
    }
  • 로그인 컨트롤러를 추가했다.

📍 결과

  • 로그인 성공
  • 이메일 잘못 입력
  • 패스워드 잘못 입력
profile
공부 중입니다.

0개의 댓글