- 미디엄은 블로그 플랫폼이다.
- 본인의 글을 유료화 할 수 있다.
- 미디엄에 가입 이후에 유료 멤버십에 가입하면 유료글을 볼 수 있다.
- 멤버십의 유지비용은 달에 2천원이다.
- 미디엄은 한달에 한번 유료글 작성자에게 조회수를 기준으로 멤버십 수익의 일정부분을 캐시로 정산해준다.
- 해당 캐시는 사이트 내에서 돈처럼 사용가능하고 원할 때 환전할 수 잇다.
- 이번 전반기 미션에서는 멤버십기능 정산기능을 제외한 나머지 기능을 구현한다.
- 1주차에서 빼놓았던 홈 화면을 작성했다
- 작성 과정에서 pagination을 나눌 필요를 느껴 키워드가 있을 경우와 없을 경우를 기준으로 pagination과 paginationWithKw 로 나누었다.
- articleTable fragment 가 pageable 값 뿐 아니라 List 값도 가짐에 따라 파라미터의 이름을 pagination 에서 articles 로 수정했다.
- 해당 필드가
true
인 사람이 로그인할 때, 유료 멤버십 회원의 권한ROLE_PAID
가지도록(스프링 시큐리티)
- Get /post/list
- 멤버십 회원이 아니라도 글 리스트에서는 멤버십 전용글을 볼 수 있습니다.
- GET /post/1
- 유료 멤버십 회원이고 1번 글이 멤버십 전용글이라면 볼 수 있다.
- 그 외에는
이 글은 유료 멤버십 전용입니다.
노출
- 생성
- 권한 부여는 각 유형에 해당하는 권한을 하나씩 할당하는 형식을 채용했다.
- 자바스크립트를 끌 경우 발생할 예외를 처리하기 위해 BindingResult를 활용해 유효성 검사에서 문제가 발생할 경우 global.js 를 반환하게 했다.
- 유료멤버십 글은 제목의 색상을 바꾸어 구분하였다.
- ArticleService에 canReadArticleIsPaid 메소드를 두고 th:if 를 통해 활용함으로써 멤버십 전용글을 멤버십 회원만 읽을 수 있게 했다.
- 글을 읽을 수 있는 대상은 어드민, 작성자, 멤버십 회원이다.
- hit(조회수)는 showDetail 메서드가 호출될때마다 한번씩 늘어나도록 했다.
- countByArticle 메서드를 사용해 추천 수를 확인할 수 있도록 만들었다.