비버놀로지

[Spring JPA] 1-5. 회원 가입 폼 서브밋 검증 본문

LANGUAGE STUDY/Spring

[Spring JPA] 1-5. 회원 가입 폼 서브밋 검증

KUNDUZ 2021. 4. 30. 16:45
728x90

먼저, sign-up.html에서 회원가입을 하게 되면 post 방식으로 데이터를 전송하는데 이 데이터를 받기위한 controlller를 제작해 줍니다.

 

	@PostMapping("/sign-up")
	public String signUpSubmit(@Valid SignUpForm signUpForm, Errors errors) {
		if(errors.hasErrors()) {
			return "account/sign-up";
		}
		return "redirect:/index.html";
	}

 

그리고 서브및 검증을 위해서 Validator을 작성해 줍니다.

 

package com.studyolle.account.controller;


import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;

import com.studyolle.repository.AcoountRepository;
import com.studyolle.repository.dto.SignUpForm;

import lombok.RequiredArgsConstructor;

@Component
@RequiredArgsConstructor		//final 인 생성자를 자동으로 만들어 준다.
public class SignUpFormValidator implements Validator{
	
	private final AcoountRepository accountRopository;
	

	@Override
	public boolean supports(Class<?> aClass) {
		return aClass.isAssignableFrom(SignUpForm.class);
		
	}
	
	@Override
	public void validate(Object o, Errors errors) {
		SignUpForm signUpForm=(SignUpForm)errors;
		if(accountRopository.existsByEmail(signUpForm.getEmail())) {
			errors.rejectValue("email","invalid.email",new Object[] {signUpForm.getEmail()},"이미 사용중인 이메일입니다.");
		}
		if(accountRopository.existsByNickname(signUpForm.getNickname())) {
			errors.rejectValue("nickname","invalid.nickname",new Object[] {signUpForm.getEmail()},"이미 사용중인 닉네임입니다.");
		}
	}
}

 

위와 같이 이메일과 닉네임이 중복되는 것을 체크해 주는 validator를 작성해 줍니다.

 

 

package com.studyolle.repository;


import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.transaction.annotation.Transactional;

import com.studyolle.repository.dto.Account;

@Transactional(readOnly = true)
public interface AcoountRepository extends JpaRepository<Account, Long>{

	boolean existsByNickname(String nickname);

	boolean existsByEmail(String email);

}

 

ropository에 존재를 확인해 주어야 하는데 spring에서 제공해 주는 Repository를 사용해서 DB에 중복 되는게 있는지 확인해 줄 수 있도록 작성해 준다.

 

 

 

 

728x90
Comments