본문 바로가기

My Proect/파이널 프로젝트 - CineDate

3일차 - 로그인 기능 구현

로그인 기능 구현 - SignInDTO
package com.tenco.movie.dto;

import com.tenco.movie.repository.model.User;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ToString
public class SignInDTO {
	
	private String loginId;
	private String password;

	public User toUser() {
		return User.builder()
				.loginId(this.getLoginId())
				.password(this.getPassword())
				.build();
	}
	
}

 

 

 

 

로그인 기능 구현 - UserService
public User readUser(SignInDTO dto) {

		User userEntity = null;

		try {
			userEntity = userRepository.findByLoginId(dto.getLoginId());
		} catch (DataAccessException e) {
			throw new DataDeliveryException(Define.FAILED_PROCESSING, HttpStatus.INTERNAL_SERVER_ERROR);
		} catch (Exception e) {
			throw new DataDeliveryException(Define.UNKNOWN_ERROR, HttpStatus.SERVICE_UNAVAILABLE);
		}

		if (userEntity == null) {
			throw new DataDeliveryException(Define.NOT_ID, HttpStatus.BAD_REQUEST);
		}

		if (!userEntity.getPassword().equals(dto.getPassword())) {
			throw new DataDeliveryException(Define.NOT_VALIDATE_PASSWORD, HttpStatus.BAD_REQUEST);
		}

		// TODO - 비밀번호 암호화
		// boolean isPwdMathched = passwordEncoder.matches(dto.getPassword(),
		// userEntity.getPassword());
		// if(isPwdMathched == false) {
		// throw new DataDeliveryException(Define.NOT_VALIDATE_PASSWORD, HttpStatus.BAD_REQUEST);
		// }

		return userEntity;

	}

 

 

 

로그인 기능 구현 - UserController
@PostMapping("/signIn")
	public String signPro(SignInDTO dto) {
		System.out.println("들어는 왔냐");

		// 로그인 아이디 유효성 검사
		// 로그인 아이디가 없거나 비어 있을 때
		if (dto.getLoginId() == null || dto.getLoginId().trim().isEmpty()) {
			throw new DataDeliveryException(Define.ENTER_YOUR_ID, HttpStatus.BAD_REQUEST);
		}
		System.out.println("여기냐11111");

		// 비밀번호 유효성 검사
		// 비밀번호가 없거나 비어 있을 때
		if (dto.getPassword() == null || dto.getPassword().trim().isEmpty()) {
			throw new DataDeliveryException(Define.ENTER_YOUR_PASSWORD, HttpStatus.BAD_REQUEST);
		}
		System.out.println("여기냐22222");

		// user principal 생성
		User principal = userService.readUser(dto);

		System.out.println("여기냐4444433");
		
		// user principal 세션 생성
		session.setAttribute(Define.PRINCIPAL, principal);

		return "redirect:/home";
	}



 

로그인 기능 구현 - UserRepository
@Mapper
public interface UserRepository {


	int insert(User user);
	int updateById(User user);
	int deleteById();
	User findById(); // loginId
	User findPassword();
	List<User> findAll();
	
	public User findByUsernameAndPassword(@Param("loginId") String loginId, @Param("password") String password);
	
	public User findByLoginId(@Param("loginId") String loginId);
	
	// 아이디 중복 검사
	User isLoginIdDuplicated(String username);
	
	// 휴대폰 번호 중복 검사 
	User isPhoneNumDuplicated(String phoneNum);

}

 

 

 

로그인 기능 구현 - user.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">


<mapper namespace="com.tenco.movie.repository.interfaces.UserRepository">

	<insert id="insert">
		insert into user_tb(login_id, name, password, email, phone_num, birth_day, gender)
		values( #{loginId}, #{name}, #{password}, #{email}, #{phoneNum}, #{birthDay}, #{gender})
	</insert>
	
	<select id ="findByLoginId" resultType="com.tenco.movie.repository.model.User">
		select * from user_tb where login_id = #{loginId};
	</select>


</mapper>

 

 

 

* TODO List

- 예외처리

- 소셜 로그인

- 아이디 찾기, 비밀번호 찾기

728x90