이번에는 어드민 페이지를 추가하였다. 우선 정지에 관련해서 처리할 수 있는 기능을 추가하였는데, 더 세부적인 기능은 추후 추가할 예정이다. 오늘은 유저, 게시판, 댓글에 대해 정지목록을 조회할 수 있고, 정지를 풀어주거나, 삭제할 수 있다. 각각 정지가 당하면, 유저는 권한이 바뀌어서 다른 곳에 접속을 못하게 되고, 게시판이나 댓글의 경우 조회가 안되도록 설정하였다. 그 외에는 3개다 비슷한 로직이기 때문에, 유저에 관해 설명하겠다. Member @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class Member extends BaseEntity { @Id @GeneratedValue(strategy = Generat..
이번에는 신고기능을 추가하였다. 유저 신고, 게시판 신고, 댓글 신고 총 3가지를 추가하였고, 누적신고가 일정수치를 넘을 시 해당 엔티티에 신고상태를 활성화시켜 주었다. 자세한 건 아래 코드를 보며 자세히 알아보자. 유저신고, 게시판 신고, 댓글 신고 모두 매우 유사한 형태이므로, 유저 신고를 중점으로 설명하겠다. 자세한 건 맨 아래 깃허브를 통해 코드를 확인할 수 있다. MemberReport @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter @Entity public class MemberReport extends BaseEntity { @Id @GeneratedValue(strategy = Generation..
이번에는 댓글기능을 추가하였다. 단순하게 CRUD 기능을 추가하였기에 크게 어렵지 않은 내용이다. 우선 시큐리티 접근 권한 설정을 추가하였다. SecurityConfig .antMatchers(HttpMethod.GET, "/api/comments").hasAnyAuthority("ROLE_USER", "ROLE_ADMIN") .antMatchers(HttpMethod.POST, "/api/comments").hasAnyAuthority("ROLE_USER", "ROLE_ADMIN") .antMatchers(HttpMethod.DELETE, "/api/comments/{id}").hasAnyAuthority("ROLE_USER", "ROLE_ADMIN") .antMatchers(HttpMethod.PUT..
오늘은 게시판에 추가적인 작업을 할 것이다. 좋아요, 즐겨찾기, 조회수 기능을 추가하였다. 바뀐 코드와 중요한 부분을 위주로 자세히 알아보자. SecurityConfig @EnableWebSecurity @Configuration @RequiredArgsConstructor public class SecurityConfig { private final TokenProvider tokenProvider; private final CorsFilter corsFilter; private final JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint; private final JwtAccessDeniedHandler jwtAccessDeniedHandler; @B..
이번에는 Board 게시판을 추가하였다. 뿐만 아니라 이미지 업로드 기능도 추가하였다. 이후 성능최적화를 위하여 N+1문 제도 해결하였는데, 아래에 자세한 설명이 있다. 이번에 포스팅은 중요한 것 위주로 설명되어 있다. SecurityConfig @EnableWebSecurity @Configuration @RequiredArgsConstructor public class SecurityConfig { private final TokenProvider tokenProvider; private final CorsFilter corsFilter; private final JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint; private final JwtAcc..
이번에는 Message API를 추가하였다. 쪽지기능은 회원과 회원 사이에 주고받는 쪽지를 의미한다. 우선 달라진 코드와 중요한 포인트에 대해 알아보자. SecurityConfig @EnableWebSecurity @Configuration @RequiredArgsConstructor public class SecurityConfig { private final TokenProvider tokenProvider; private final CorsFilter corsFilter; private final JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint; private final JwtAccessDeniedHandler jwtAccessDeniedHandl..
이번에는 Member API가 추가되었다. 회원 전체조회, 회원단건조회, 회원 정보 수정, 회원탈퇴 기능이 추가되었다. 저번 포스팅에서 바뀐 점과 중요한 점 위주로 설명할 것이다. SecurityConfig @EnableWebSecurity @Configuration @RequiredArgsConstructor public class SecurityConfig { private final TokenProvider tokenProvider; private final CorsFilter corsFilter; private final JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint; private final JwtAccessDeniedHandler jwtAc..
프로젝트 소개 여태까지 여러 프로젝트를 진행했었는데, 그때마다 블로깅을 안했던 것 같다. 이유는 내가 아직 부족한 점이 많아서 좀 더 성장하고 난 이후에 블로깅을 하고 싶었다. 이번 프로젝트는 커뮤니티를 만드는 것인데, 여러가지 기능을 넣어보고 성능 최적화도 진행할 생각이다. 단순 API 개발이지만, 타 개발자와 협업한다는 생각으로 진행할 것이다. 프로젝트 설정 (java 11, Spring-Boot) Dependency 이후 추가로 JWT와 Swagger를 추가해야한다. 이번에 진행할 내용은 다음과 같다. Spring Security + JWT를 이용한 로그인 구현 response를 커스텀하여 응답을 보기 좋게 수정 Swagger 적용 예외처리 security+jwt를 활용한 로그인 구현의 경우 대부분..