Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 그리디
- db
- QueryDSL
- AOP
- 인프런
- Greedy
- Thymeleaf
- JDBC
- pointcut
- 스프링 핵심 원리
- 백준
- 스프링
- Spring Boot
- 김영한
- http
- JPQL
- spring
- java
- Servlet
- jpa
- transaction
- springdatajpa
- 알고리즘
- kotlin
- Android
- Exception
- Proxy
- 스프링 핵심 기능
- SpringBoot
- 자바
Archives
- Today
- Total
개발자되기 프로젝트
회원 탈퇴하기 본문
1. 회원 탈퇴하기
- 현재 연관관계는 아래와 같다.
- Post : Member -> 다대일
- Comment : Member -> 다대일
- Member는 삭제하면 Post, Comment는 고아객체가 된다.
- 그렇다고 예외를 피하기 위해 CASCADE, OrphanRemoval을 사용하여
- Member 삭제시 그 회원이 작성한 글, 댓글을 삭제하는건 안된다.
- 회원 탈퇴 요청이 들어오면 해당 회원이 작성한 글은 "탈퇴회원"으로 변경해주자.
2. MemberController
- 회원 탈퇴 요청이 들어오면
- 해당 회원이 작성한 모든 글, 댓글을 탈퇴한 회원 개체로 변경.
- 회원 data 삭제 후 홈으로 redirect
@PostMapping("/{memberId}/delete")
public String deleteMember(@PathVariable("memberId") Long id, Model model){
Member member = memberService.findMemberById(id);
Member withdrawnMember = memberService.findMemberByUserId("withdrawnMember");
SetMemberAsWithdrawnMember(member, withdrawnMember);
memberService.removeMember(id);
model.addAttribute("status", "withdrawn");
return "redirect:/logout";
}
private void SetMemberAsWithdrawnMember(Member member, Member withdrawnMember) {
List<Comment> comments = member.getComments();
for (Comment comment : comments) {
comment.setMember(withdrawnMember);
}
List<Post> posts = member.getPosts();
for (Post post : posts) {
post.setMember(withdrawnMember);
}
}
3. 결과
- 응? 왜 로그인 화면으로감.....세션 살아있네..
- 삭제된 회원이 탈퇴한 회원으로 변경되었다.
4. 회원 탈퇴시 세션 종료시키기.
- 간단하게 로그아웃으로 보내버리자.
@PostMapping("/{memberId}/delete")
public String deleteMember(@PathVariable("memberId") Long id){
Member member = memberService.findMemberById(id);
Member withdrawnMember = memberService.findMemberByUserId("withdrawnMember");
List<Comment> comments = member.getComments();
for (Comment comment : comments) {
comment.setMember(withdrawnMember);
}
List<Post> posts = member.getPosts();
for (Post post : posts) {
post.setMember(withdrawnMember);
}
memberService.removeMember(id);
return "redirect:/logout";
}
5. 결과
- 탈퇴 전
- 탈퇴 후
- 회원탈퇴 후 home으로 redirect 시 메시지가 하나 떴으면 좋겠따.
- 다음에 추가할 예정.
6. 앞으로
est용 data 서버시작할 때 DB에 올리기Listener
createdAt, updatedAt등
게시글에 작성자 표시- view 정리
게시글 검색- 검색 옵션 추가 : 작성자, 제목 구분
영속성 전이 설정게시글 삭제- 회원 탈퇴
- 댓글 삭제 버튼
- 대댓글
- 검증 & 예외처리
- 회원 가입시 필수 정보 지정.
- 데이터 타입 지정
- 인증처리
- 로그인한 사용자만 글 & 댓글 작성 가능.
- 본인이 작성한 글, 댓글만 삭제 가능
- 관리자는 모든 권한
- 예외처리
- 페이징 처리
- 컬렉션 조회 최적화
7. GitHub: 211009 remove Member
'Project > 블로그 게시판 만들기' 카테고리의 다른 글
글 수정 기능 추가 (0) | 2021.10.10 |
---|---|
댓글 삭제버튼 추가 (0) | 2021.10.09 |
글 삭제하기, cascade, orphanRemoval, 영속성 전이 (0) | 2021.10.09 |
검색기능 추가 및 view 정비 (0) | 2021.10.09 |
Listener, Formatter 사용 (0) | 2021.10.07 |
Comments