로그인 기능 구현 - 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
'My Proect > 파이널 프로젝트 - CineDate' 카테고리의 다른 글
10일차 - 소셜 로그인 API 구현 ( 구글, 네이버, 카카오 ) (2) | 2024.09.03 |
---|---|
8일차 - 아이디, 비밀번호 찾기 화면 및 기능 구현 (3) | 2024.09.02 |
5일차 - 회원가입 기능 구현 (2) | 2024.09.02 |
2일차 - 푸터 화면 구성 및 회원가입 기능 구현 (0) | 2024.08.27 |
1일차 회원가입, 로그인 화면 구현 (1) | 2024.08.27 |