61 lines
1.8 KiB
Java
61 lines
1.8 KiB
Java
package demo.api.user.domain;
|
|
|
|
import demo.api.common.domain.CoreEntity;
|
|
import demo.api.user.repository.UserRepository;
|
|
import javax.persistence.Column;
|
|
import javax.persistence.Entity;
|
|
import javax.persistence.EnumType;
|
|
import javax.persistence.Enumerated;
|
|
import lombok.Builder;
|
|
import lombok.Getter;
|
|
import lombok.NoArgsConstructor;
|
|
import lombok.Setter;
|
|
import lombok.ToString;
|
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
|
|
|
// @Entity 어노테이션을 클래스에 선언하면 그 클래스는 JPA가 관리
|
|
@Entity
|
|
@Getter @Setter
|
|
@NoArgsConstructor
|
|
@ToString
|
|
public class User extends CoreEntity {
|
|
@Column(nullable = false, unique = true)
|
|
private String email;
|
|
@Column(nullable = false)
|
|
private String password;
|
|
@Column(length = 10, nullable = false)
|
|
private String name;
|
|
|
|
// @Enumerated(EnumType.STRING)
|
|
// private UserRole role;
|
|
|
|
@Builder
|
|
public User(String email, String password, String name /*UserRole role*/) {
|
|
this.email = email;
|
|
this.password = password;
|
|
this.name = name;
|
|
// this.role = role;
|
|
}
|
|
|
|
// https://reflectoring.io/spring-security-password-handling/
|
|
/**
|
|
* 비밀번호를 암호화
|
|
* @param passwordEncoder 암호화 할 인코더 클래스
|
|
* @return 변경된 유저 Entity
|
|
*/
|
|
public User hashPassword(PasswordEncoder passwordEncoder) {
|
|
this.password = passwordEncoder.encode(this.password);
|
|
return this;
|
|
}
|
|
|
|
/**
|
|
* 비밀번호 확인
|
|
* @param plainPassword 암호화 이전의 비밀번호
|
|
* @param passwordEncoder 암호화에 사용된 클래스
|
|
* @return true | false
|
|
*/
|
|
public boolean checkPassword(String plainPassword, PasswordEncoder passwordEncoder) {
|
|
return passwordEncoder.matches(plainPassword, this.password);
|
|
}
|
|
}
|