66import lombok .AccessLevel ;
77import lombok .Getter ;
88import lombok .NoArgsConstructor ;
9- import lombok .Setter ;
109import org .springframework .data .annotation .CreatedDate ;
1110import org .springframework .data .annotation .LastModifiedDate ;
1211import org .springframework .data .jpa .domain .support .AuditingEntityListener ;
2120
2221@ Entity
2322@ Getter
24- @ Setter
2523@ NoArgsConstructor (access = AccessLevel .PROTECTED )
2624@ EntityListeners (AuditingEntityListener .class )
2725public class Member implements UserDetails {
@@ -43,10 +41,6 @@ public class Member implements UserDetails {
4341 @ Column (nullable = false )
4442 private Boolean isDeleted = false ;
4543
46- public void setIsDeleted (boolean isDeleted ) {
47- this .isDeleted = isDeleted ;
48- }
49-
5044 @ Enumerated (EnumType .STRING )
5145 @ Column (nullable = false )
5246 private SocialType socialType = SocialType .EMAIL ;
@@ -59,37 +53,56 @@ public void setIsDeleted(boolean isDeleted) {
5953 @ Column
6054 private LocalDateTime updatedAt ;
6155
62- // 프로필 사진 url
56+ // 프로필 사진 URL
6357 @ Column
6458 private String profileImageUrl ;
6559
6660 @ Column (length = 200 )
6761 private String bio ;
6862
63+ // 게시글 연관관계
6964 @ OneToMany (mappedBy = "userId" , cascade = CascadeType .ALL , orphanRemoval = true )
7065 private List <Post > posts = new ArrayList <>();
7166
72- // 북마크 폴더
67+ // 북마크 폴더 (계정당 1개)
7368 @ OneToOne (mappedBy = "userId" , cascade = CascadeType .ALL , orphanRemoval = true )
74- private BookmarkFolder bookmarkFolderId ;
75- // 우선은 계정 당 폴더 하나만 있는 걸로 생성
76- // @OneToMany(mappedBy = "userId", cascade = CascadeType.ALL, orphanRemoval = true)
77- // private List<BookmarkFolder> bookmarkFolders = new ArrayList<>();
78-
79- // Member 객체를 정적 팩토리 방식으로 회원가입 시에 생성하는 메서드
80- // Member 객체를 정적 팩토리 방식으로 생성하는 메서드
81- // Creates a Member object using a static factory method
69+ private BookmarkFolder bookmarkFolder ;
70+
71+ // 정적 팩토리 메서드
8272 public static Member of (String email , String password , String nickname , SocialType socialType ) {
8373 Member member = new Member ();
8474 member .email = email ;
8575 member .password = password ;
8676 member .nickname = nickname ;
8777 member .socialType = socialType ;
8878 member .isDeleted = false ;
89- member .profileImageUrl = null ; // 디폴트 이미지는 db에 null로 저장하고 프론트한테는 기본 이미지 링크로 반환하는 방향으로 통일
79+ member .profileImageUrl = null ; // 기본 이미지는 응답 시 처리
9080 return member ;
9181 }
9282
83+ // -------------------- 도메인 메서드 --------------------
84+
85+ public void updateNickname (String nickname ) {
86+ this .nickname = nickname ;
87+ }
88+
89+ public void updatePassword (String encodedPassword ) {
90+ this .password = encodedPassword ;
91+ }
92+
93+ public void updateProfileImage (String url ) {
94+ this .profileImageUrl = url ;
95+ }
96+
97+ public void updateBio (String bio ) {
98+ this .bio = bio ;
99+ }
100+
101+ public void markAsDeleted () {
102+ this .isDeleted = true ;
103+ }
104+
105+ // -------------------- Spring Security --------------------
93106
94107 @ Override
95108 public Collection <? extends GrantedAuthority > getAuthorities () {
@@ -98,28 +111,26 @@ public Collection<? extends GrantedAuthority> getAuthorities() {
98111
99112 @ Override
100113 public String getUsername () {
101- return this .email ; // 로그인 시 사용할 사용자 식별자
114+ return this .email ; // 로그인 시 사용할 식별자
102115 }
103116
104117 @ Override
105118 public boolean isAccountNonExpired () {
106- return true ; // 계정 만료 여부 (true = 사용 가능)
119+ return true ; // 계정 만료 안 됨
107120 }
108121
109122 @ Override
110123 public boolean isAccountNonLocked () {
111- return true ; // 계정 잠금 여부 (true = 잠금 아님)
124+ return true ; // 잠금 아님
112125 }
113126
114127 @ Override
115128 public boolean isCredentialsNonExpired () {
116- return true ; // 비밀번호 만료 여부
129+ return true ; // 비밀번호 만료 안 됨
117130 }
118131
119132 @ Override
120133 public boolean isEnabled () {
121- return !this .isDeleted ; // 탈퇴 여부 기반 활성 상태
134+ return !this .isDeleted ; // 탈퇴 계정은 비활성화
122135 }
123-
124-
125136}
0 commit comments