Compare commits
7 Commits
cache-data
...
feature/bo
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6329c24584 | ||
|
|
37b4b9cd73 | ||
|
|
4173fc1225 | ||
|
|
200168c601 | ||
|
|
a51dce74ad | ||
|
|
d4e74d92c1 | ||
|
|
8cecd7edcf |
@@ -32,7 +32,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
|
||||
.and()
|
||||
.authorizeRequests() // 다음 리퀘스트에 대한 사용권한 체크
|
||||
.antMatchers("/*/signin", "/*/signin/**", "/*/signup", "/*/signup/**", "/social/**").permitAll() // 가입 및 인증 주소는 누구나 접근가능
|
||||
.antMatchers(HttpMethod.GET, "/exception/**", "/helloworld/**","/actuator/health", "/v1/board/**").permitAll() // hellowworld로 시작하는 GET요청 리소스는 누구나 접근가능
|
||||
.antMatchers(HttpMethod.GET, "/exception/**", "/helloworld/**","/actuator/health", "/v1/board/**", "/favicon.ico").permitAll() // 등록한 GET요청 리소스는 누구나 접근가능
|
||||
.anyRequest().hasRole("USER") // 그외 나머지 요청은 모두 인증된 회원만 접근 가능
|
||||
.and()
|
||||
.exceptionHandling().accessDeniedHandler(new CustomAccessDeniedHandler())
|
||||
|
||||
@@ -37,7 +37,7 @@ public class HelloController {
|
||||
|
||||
@GetMapping(value = "/helloworld/page")
|
||||
public String helloworld() {
|
||||
return HELLO;
|
||||
return "helloworld";
|
||||
}
|
||||
|
||||
@GetMapping("/helloworld/long-process")
|
||||
|
||||
@@ -28,6 +28,15 @@ public class BoardController {
|
||||
private final BoardService boardService;
|
||||
private final ResponseService responseService;
|
||||
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "X-AUTH-TOKEN", value = "로그인 성공 후 access_token", required = true, dataType = "String", paramType = "header")
|
||||
})
|
||||
@ApiOperation(value = "게시판 생성", notes = "신규 게시판을 생성한다.")
|
||||
@PostMapping(value = "/{boardName}")
|
||||
public SingleResult<Board> createBoard(@PathVariable String boardName) {
|
||||
return responseService.getSingleResult(boardService.insertBoard(boardName));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "게시판 정보 조회", notes = "게시판 정보를 조회한다.")
|
||||
@GetMapping(value = "/{boardName}")
|
||||
public SingleResult<Board> boardInfo(@PathVariable String boardName) {
|
||||
@@ -44,7 +53,7 @@ public class BoardController {
|
||||
@ApiImplicitParam(name = "X-AUTH-TOKEN", value = "로그인 성공 후 access_token", required = true, dataType = "String", paramType = "header")
|
||||
})
|
||||
@ApiOperation(value = "게시글 작성", notes = "게시글을 작성한다.")
|
||||
@PostMapping(value = "/{boardName}")
|
||||
@PostMapping(value = "/{boardName}/post")
|
||||
public SingleResult<Post> post(@PathVariable String boardName, @Valid @ModelAttribute ParamsPost post) {
|
||||
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
||||
String uid = authentication.getName();
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
package com.rest.api.entity.board;
|
||||
|
||||
import com.rest.api.entity.common.CommonDateEntity;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Builder
|
||||
@Entity
|
||||
@Getter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class Board extends CommonDateEntity implements Serializable {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
|
||||
@@ -7,12 +7,13 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener;
|
||||
|
||||
import javax.persistence.EntityListeners;
|
||||
import javax.persistence.MappedSuperclass;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Getter
|
||||
@MappedSuperclass
|
||||
@EntityListeners(AuditingEntityListener.class)
|
||||
public abstract class CommonDateEntity {
|
||||
public abstract class CommonDateEntity implements Serializable {
|
||||
@CreatedDate
|
||||
private LocalDateTime createdAt;
|
||||
@LastModifiedDate
|
||||
|
||||
@@ -7,5 +7,5 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import java.util.List;
|
||||
|
||||
public interface PostJpaRepo extends JpaRepository<Post, Long> {
|
||||
List<Post> findByBoard(Board board);
|
||||
List<Post> findByBoardOrderByPostIdDesc(Board board);
|
||||
}
|
||||
@@ -34,6 +34,10 @@ public class BoardService {
|
||||
private final UserJpaRepo userJpaRepo;
|
||||
private final CacheSevice cacheSevice;
|
||||
|
||||
public Board insertBoard(String boardName) {
|
||||
return boardJpaRepo.save(Board.builder().name(boardName).build());
|
||||
}
|
||||
|
||||
// 게시판 이름으로 게시판을 조회. 없을경우 CResourceNotExistException 처리
|
||||
@Cacheable(value = CacheKey.BOARD, key = "#boardName", unless = "#result == null")
|
||||
public Board findBoard(String boardName) {
|
||||
@@ -43,7 +47,7 @@ public class BoardService {
|
||||
// 게시판 이름으로 게시글 리스트 조회.
|
||||
@Cacheable(value = CacheKey.POSTS, key = "#boardName", unless = "#result == null")
|
||||
public List<Post> findPosts(String boardName) {
|
||||
return postJpaRepo.findByBoard(findBoard(boardName));
|
||||
return postJpaRepo.findByBoardOrderByPostIdDesc(findBoard(boardName));
|
||||
}
|
||||
|
||||
// 게시글ID로 게시글 단건 조회. 없을경우 CResourceNotExistException 처리
|
||||
|
||||
Reference in New Issue
Block a user