Skip to content

Commit f9106c6

Browse files
committed
로그인 redirct 수정
2 parents 5e12200 + 552afc3 commit f9106c6

26 files changed

+483
-112
lines changed

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ repositories {
2424
}
2525

2626
dependencies {
27+
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
2728
implementation 'javax.annotation:javax.annotation-api:1.3.2'
2829
implementation 'javax.servlet:javax.servlet-api:4.0.1'
2930
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package codeview.main.config;
2+
3+
4+
import io.swagger.v3.oas.models.Components;
5+
import io.swagger.v3.oas.models.OpenAPI;
6+
import io.swagger.v3.oas.models.info.Info;
7+
import io.swagger.v3.oas.models.security.SecurityRequirement;
8+
import io.swagger.v3.oas.models.security.SecurityScheme;
9+
import org.springframework.context.annotation.Bean;
10+
import org.springframework.context.annotation.Configuration;
11+
12+
@Configuration
13+
public class SwaggerConfig {
14+
private static final String BEARER_TOKEN_PREFIX = "Bearer";
15+
16+
@Bean
17+
public OpenAPI openAPI(){
18+
19+
Components components = new Components()
20+
.addSecuritySchemes("Authorization", new SecurityScheme()
21+
.type(SecurityScheme.Type.HTTP)
22+
.scheme("bearer")
23+
.bearerFormat("JWT"));
24+
25+
26+
Info info = new Info()
27+
.version("v1.0.0")
28+
.title("codeView API");
29+
30+
31+
32+
return new OpenAPI()
33+
.addSecurityItem(new SecurityRequirement().addList("Authorization"))
34+
.components(components)
35+
.info(info);
36+
37+
}
38+
39+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package codeview.main.controller;
2+
3+
4+
import codeview.main.dto.blog.BlogReqDto;
5+
import codeview.main.dto.blog.BlogResDto;
6+
import codeview.main.global.ApiResponse;
7+
import codeview.main.service.BlogService;
8+
import lombok.RequiredArgsConstructor;
9+
import org.springframework.http.HttpStatus;
10+
import org.springframework.web.bind.annotation.*;
11+
12+
import java.util.List;
13+
14+
@RestController
15+
@RequiredArgsConstructor
16+
@RequestMapping("/blog")
17+
public class BlogController {
18+
private final BlogService blogService;
19+
20+
@PostMapping
21+
public ApiResponse<BlogResDto> createBlog(Long userId, BlogReqDto blogReqDto){
22+
BlogResDto blogResDto = new BlogResDto(blogService.createBlog(userId, blogReqDto));
23+
return ApiResponse.createResponse("S100", "SUCCESS", blogResDto);
24+
}
25+
26+
@GetMapping
27+
public ApiResponse<List<BlogResDto>> getBlogList(Long userId) {
28+
List<BlogResDto> blogResDtoList = blogService.getBlogList(userId).stream().map(BlogResDto::new).toList();
29+
return ApiResponse.createResponse("S101", "SUCCESS", blogResDtoList);
30+
}
31+
32+
@GetMapping("/{id}")
33+
public ApiResponse<BlogResDto> getBlog(@PathVariable Long id) {
34+
BlogResDto blogResDto = new BlogResDto(blogService.getBlog(id));
35+
return ApiResponse.createResponse("S101", "SUCCESS", blogResDto);
36+
}
37+
38+
@PutMapping("/{id}")
39+
public ApiResponse<BlogResDto> updateBlog(Long userId, @PathVariable Long id, BlogReqDto blogReqDto) {
40+
BlogResDto blogResDto = new BlogResDto(blogService.updateBlog(userId, id, blogReqDto));
41+
return ApiResponse.createResponse("S102", "SUCCESS", blogResDto);
42+
}
43+
44+
@DeleteMapping("/{id}")
45+
public ApiResponse<Void> deleteBlog(Long userId, @PathVariable Long id) {
46+
blogService.deleteBlog(userId, id);
47+
return ApiResponse.createResponse("S103", "SUCCESS", null);
48+
}
49+
}
Lines changed: 28 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,51 @@
11
package codeview.main.controller;
22

3-
import codeview.main.dto.ApiResponse;
4-
import codeview.main.dto.BoardRequest;
5-
import codeview.main.dto.BoardResponse;
6-
import codeview.main.entity.Board;
3+
import codeview.main.global.ApiResponse;
4+
import codeview.main.dto.board.BoardReqDto;
5+
import codeview.main.dto.board.BoardResDto;
76
import codeview.main.service.BoardService;
87
import lombok.RequiredArgsConstructor;
9-
import org.springframework.http.HttpStatus;
10-
import org.springframework.http.ResponseEntity;
118
import org.springframework.web.bind.annotation.*;
129

13-
import java.util.List;
14-
import java.util.Optional;
10+
1511

1612
@RestController
1713
@RequiredArgsConstructor
18-
@RequestMapping("/board")
14+
@RequestMapping("/{blogId}/board")
1915
public class BoardController {
2016
private final BoardService boardService;
2117

22-
@GetMapping("/{id}")
23-
public ResponseEntity<BoardResponse> getBoardById(@PathVariable Long id) {
24-
Optional<Board> findBoardObj = boardService.findBoardById(id);
25-
if (findBoardObj.isPresent()) {
26-
BoardResponse response = new BoardResponse(findBoardObj.get());
27-
return ResponseEntity.ok(response);
28-
} else {
29-
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
30-
}
31-
}
3218

33-
@GetMapping
34-
public ResponseEntity<List<BoardResponse>> getAllBoards() {
35-
List<BoardResponse> boardResponses = boardService.findAll();
36-
return ResponseEntity.ok(boardResponses);
19+
@PostMapping
20+
public ApiResponse<BoardResDto> createBoard(Long userId, @PathVariable Long blogId, @RequestBody BoardReqDto boardReqDto) {
21+
BoardResDto boardResponse = new BoardResDto(boardService.createBoard(userId, blogId, boardReqDto));
22+
return ApiResponse.createResponse("S100", "Board Write Success", boardResponse);
3723
}
3824

39-
@PostMapping("/write")
40-
public ResponseEntity<ApiResponse<BoardResponse>> boardSave(@RequestBody BoardRequest boardRequest) {
41-
Board saveBoard = new Board(boardRequest.getTitle());
42-
Board savedBoard = boardService.save(saveBoard);
43-
BoardResponse boardResponse = new BoardResponse(savedBoard);
44-
ApiResponse<BoardResponse> response = new ApiResponse<>(HttpStatus.CREATED, "Board Write Success", boardResponse);
45-
return ResponseEntity.status(HttpStatus.CREATED).body(response);
25+
26+
@GetMapping
27+
public ApiResponse<BoardResDto> getBoardById(@RequestParam("boardId") Long boardId) {
28+
BoardResDto boardResDto = new BoardResDto(boardService.getBoard(boardId));
29+
return ApiResponse.createResponse("S101", "Success create board", boardResDto);
4630
}
4731

48-
@PutMapping("/{id}")
49-
public ResponseEntity<BoardResponse> updateBoard(@PathVariable Long id, @RequestBody BoardRequest boardRequest) {
50-
Board updatedBoard = new Board();
51-
updatedBoard.setTitle(boardRequest.getTitle());
5232

53-
try {
54-
Board savedBoard = boardService.updateBoard(id, updatedBoard);
55-
BoardResponse responseDto = new BoardResponse(savedBoard);
56-
return ResponseEntity.ok(responseDto);
57-
} catch (RuntimeException e) {
58-
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
59-
}
33+
@PutMapping
34+
public ApiResponse<Void> updateBoard(
35+
Long userId,
36+
@PathVariable Long blogId,
37+
@RequestParam("boardId") Long boardId,
38+
@RequestBody BoardReqDto boardReqDto) {
39+
boardService.updateBoard(userId, blogId, boardId, boardReqDto);
40+
return ApiResponse.createResponse("S102", "Success update board");
6041
}
6142

6243
@DeleteMapping("/{id}")
63-
public ResponseEntity<Void> deleteBoard(@PathVariable Long id) {
64-
try {
65-
boardService.deleteBoard(id);
66-
return ResponseEntity.noContent().build();
67-
} catch (RuntimeException e) {
68-
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
69-
}
44+
public ApiResponse<Void> deleteBoard(
45+
Long userId,
46+
@PathVariable Long blogId
47+
) {
48+
boardService.deleteBoard(userId, blogId);
49+
return ApiResponse.createResponse("S103", "Success delete board");
7050
}
7151
}

src/main/java/codeview/main/dto/ApiResponse.java

Lines changed: 0 additions & 20 deletions
This file was deleted.

src/main/java/codeview/main/dto/BoardRequest.java

Lines changed: 0 additions & 9 deletions
This file was deleted.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package codeview.main.dto.blog;
2+
3+
import lombok.Getter;
4+
5+
@Getter
6+
public class BlogReqDto {
7+
private String name;
8+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package codeview.main.dto.blog;
2+
3+
import codeview.main.entity.Blog;
4+
import lombok.Getter;
5+
6+
@Getter
7+
public class BlogResDto {
8+
9+
10+
public BlogResDto(Blog blog) {
11+
if (blog != null) {
12+
13+
}
14+
}
15+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package codeview.main.dto.board;
2+
import lombok.Getter;
3+
import lombok.Setter;
4+
5+
@Getter
6+
public class BoardReqDto {
7+
private String title;
8+
private String content;
9+
}

src/main/java/codeview/main/dto/BoardResponse.java renamed to src/main/java/codeview/main/dto/board/BoardResDto.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
package codeview.main.dto;
1+
package codeview.main.dto.board;
22

33
import codeview.main.entity.Board;
44
import lombok.Getter;
55
import lombok.Setter;
66

77
@Getter
88
@Setter
9-
public class BoardResponse {
9+
public class BoardResDto {
1010
private Long id;
1111
private String title;
1212

13-
public BoardResponse(Board board) {
13+
public BoardResDto(Board board) {
1414
this.id = board.getId();
1515
this.title = board.getTitle();
1616
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package codeview.main.entity;
2+
3+
import codeview.main.dto.blog.BlogReqDto;
4+
import codeview.main.dto.blog.BlogResDto;
5+
import codeview.main.dto.board.BoardReqDto;
6+
import jakarta.persistence.*;
7+
import lombok.Getter;
8+
import lombok.NoArgsConstructor;
9+
10+
import java.util.ArrayList;
11+
import java.util.List;
12+
13+
@Getter
14+
@Entity
15+
@NoArgsConstructor
16+
public class Blog {
17+
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
18+
private Long id;
19+
private String name;
20+
21+
@ManyToOne(fetch = FetchType.LAZY)
22+
@JoinColumn(name="user_id")
23+
private User user;
24+
25+
@OneToMany(mappedBy = "blog", cascade = CascadeType.ALL, orphanRemoval = true)
26+
private List<Board> boardList = new ArrayList<>();
27+
28+
public Blog(BlogReqDto blogReqDto) {
29+
this.name = blogReqDto.getName();
30+
}
31+
32+
public void update(BlogReqDto blogReqDto) {
33+
if (blogReqDto != null) {
34+
this.name = blogReqDto.getName();
35+
}
36+
}
37+
public void addUser(User user) {
38+
this.user = user;
39+
}
40+
41+
public void addBoard(Board board) {
42+
boardList.add(board);
43+
board.addBlog(this);
44+
}
45+
public void removeBoard(Board board) {
46+
boardList.remove(board);
47+
board.addBlog(null);
48+
}
49+
}
Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package codeview.main.entity;
22

3+
import codeview.main.dto.board.BoardReqDto;
34
import jakarta.persistence.*;
45
import lombok.*;
56

7+
import java.util.List;
8+
69
@Entity
7-
@Getter @Setter
10+
@Getter
811
@NoArgsConstructor
912
public class Board {
1013
@Id
@@ -13,8 +16,22 @@ public class Board {
1316

1417
@Column(nullable = false)
1518
private String title;
19+
private String content;
20+
21+
@ManyToOne(fetch = FetchType.LAZY)
22+
@JoinColumn(name="blog_id")
23+
private Blog blog;
24+
1625

17-
public Board(String title) {
18-
this.title = title;
26+
public Board(BoardReqDto boardReqDto) {
27+
this.title = boardReqDto.getTitle();
28+
this.content = boardReqDto.getContent();
29+
}
30+
public void addBlog(Blog blog) {
31+
this.blog = blog;
32+
}
33+
public void update(BoardReqDto boardReqDto) {
34+
this.title = boardReqDto.getTitle();
35+
this.content = boardReqDto.getContent();
1936
}
20-
}
37+
}

0 commit comments

Comments
 (0)