Account 생성
인증, 보안과 같은 서비스를 적용시키기 위해서는 그 대상이 되는 객체가 존재해야 한다.
때문에 회원의 계정에 해당하는 Account 엔티티를 작성한다.
[Account]
@Where(clause = "deleted = false")
@Entity
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Account {
@Id @GeneratedValue
@Column(name = "account_id")
private Long id;
private String username;
private String password;
private String nickname;
private String profileImgName;
private int win = 0;
private int lose = 0;
private int point = 0;
@Enumerated(EnumType.STRING)
private Role role;
@Enumerated(EnumType.STRING)
private Gender gender;
private LocalDate birthDate;
//수정 관련//
public void updateInfo(Account updatedAccount) {
if (updatedAccount.nickname != null) {
this.nickname = updatedAccount.getNickname();
}
if (updatedAccount.gender != null) {
this.gender = updatedAccount.getGender();
}
if (updatedAccount.birthDate != null) {
this.birthDate = updatedAccount.getBirthDate();
}
}
public void updateProfileImg(String profileImgName) {
this.profileImgName = profileImgName;
}
//수정 관련//
//게임 관련//
public void win() {
win += 1;
}
public void lose() {
lose += 1;
}
public void point() {
if (this.win == 0) {
this.point = 0;
} else {
this.point = (win * 100) * (win / (win + lose));
}
}
//게임 관련//
public void settingRole(Role role) {
this.role = role;
}
}
● win, lose : 게임 승, 패에 따라 증가되는 필드
● role : 인가시 사용되는 역할
ex) USER, MANAGER 등
● @Enumerated : enum 타입의 필드를 db와 매핑하기 위해 붙여주는 어노테이션
◎ 기본적으로 db에 숫자로 표현되기 때문에 알아보기 어렵고 enum 클래스의 필드가 추가됬을 때 순서가 밀릴수 있는 치명적인 단점이 있다.
◎ 때문에 enum 클래스의 필드 이름 그대로 db에 반영되도록 EnumType.String을 설정해주었다.
● 추후에 수정가능한 필드들에 대한 메서드를 작성하였다(update~).
[Role]
import lombok.Getter;
@Getter
public enum Role {
User("ROLE_USER"), NotVerified("ROLE_NotVerifiedUser");
private String roleName;
Role(String role) {
this.roleName = role;
}
}
● User : 인가된 회원
● NotVerified : 비회원
'프로젝트 > PongGame' 카테고리의 다른 글
LoginAccountIdArgumentResolver (0) | 2022.04.28 |
---|---|
FileProcessor (0) | 2022.04.28 |
Spring Security, JWT, 인증, 인가 (5) | 2022.04.18 |
build.gradle, application.yml (0) | 2022.04.13 |
PongGame (0) | 2022.04.10 |
댓글