Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
c9eeb73
FollowRepository, FollowMapper 줄간격변경(가독성)
dldmldlsy Aug 5, 2022
1032b1d
yml수정: db정보변경 및 들여쓰기 수정 (db연결오류해결)
dldmldlsy Aug 14, 2022
1bb8a70
sql문 오타 수정
dldmldlsy Aug 14, 2022
1714740
templates 파일 추가->오류해결
dldmldlsy Aug 14, 2022
ed5c69b
프로젝트가 repository를 찾을 수 있도록 어노테이션 추가
dldmldlsy Aug 14, 2022
5036c54
swagger 설정
dldmldlsy Aug 14, 2022
d1606fa
가독성개선(@RequiredArgsConstructor, 개행 등), token의 중요정보 별도관리
dldmldlsy Aug 14, 2022
5470a10
로그인, 회원가입 API 로직 수정: SignService의 로그인, 회원가입 메서드 통합/ ErrorResponse dto…
dldmldlsy Aug 17, 2022
ce7450d
swagger 설정 삭제
dldmldlsy Aug 17, 2022
69e2d1f
swagger 관련 설정: 의존성추가, SwaggerConfig 생성, controller에 어노테이션 추가, yml에 sp…
dldmldlsy Aug 17, 2022
757de2f
main함수에 잘못된 어노테이션 삭제, 토큰 유효시간 별도관리안하는 걸로 수정(추후에 별도관리할 예정)
dldmldlsy Aug 18, 2022
098d169
JAXB API 관련 의존성 추가
dldmldlsy Aug 18, 2022
b6172c5
Merge branch 'develop' into Feature/swagger
dldmldlsy Aug 18, 2022
44a3317
yml코드 들여쓰기 수정
dldmldlsy Aug 18, 2022
cfc4fe5
Diary 테이블 CRUD
prkim99 Aug 18, 2022
35941a5
refresh Token 관련 코드 추가
dldmldlsy Aug 18, 2022
ea0a759
내가 작성한 다이어리 조회 api 구현
prkim99 Aug 18, 2022
d8d87f1
내가 작성한 다이어리 조회 api mapper 오타 수정
prkim99 Aug 18, 2022
2c03efe
내가 작성한 다이어리 조회 api 구현
prkim99 Aug 18, 2022
6edb8bf
Merge remote-tracking branch 'origin/Feature/diary-listing' into Feat…
prkim99 Aug 18, 2022
e88b769
다이어리 조회 api 구현(다이어리 번호, 모든 다이어리, 작성자별 다이어리 리스트 조회 가능)
prkim99 Aug 21, 2022
0f1cc5a
Merge remote-tracking branch 'origin/Feature/swagger' into temp-deplo…
prkim99 Aug 21, 2022
32b5e26
diaryID로 매핑 get 방식으로 변경
prkim99 Aug 29, 2022
063baa1
diaryID로 매핑 get 방식으로 변경
prkim99 Aug 30, 2022
b1960ae
네이밍 규칙 적용
prkim99 Aug 30, 2022
07218d8
파일 핸들링 브랜치 생성
prkim99 Aug 30, 2022
094e818
이미지 저장 함수 작성
prkim99 Aug 31, 2022
73bd6ad
일기 작성기능, 일기 삭제기능 추가
prkim99 Sep 1, 2022
7eae1b5
파일 저장 기능 추가
prkim99 Sep 1, 2022
602a35f
예외처리 추가
prkim99 Sep 1, 2022
26dc3b9
주석 추가
prkim99 Sep 1, 2022
7cfe849
다이어리 업데이트 api추가
prkim99 Sep 2, 2022
d1f894f
마커 CRUD
dldmldlsy Sep 2, 2022
9981719
어노테이션 수정
prkim99 Sep 2, 2022
a158cbc
마커 전체 목록 조회 api
dldmldlsy Sep 2, 2022
c82c8b1
mapper 오타수정(arraylist->markerentity)
dldmldlsy Sep 2, 2022
7adae77
널포인트에러해결(final키워드 추가), 다이어리작성api수정, 가독성개선, url변경
dldmldlsy Sep 3, 2022
98894e1
카메라AR api생성
prkim99 Sep 2, 2022
0421b0a
cameraARListDto 형식 결정
prkim99 Sep 2, 2022
bb21997
모든 마커+AR정보 불러오기, 내 위치에 따른 마커+AR정보 불러오기 기능 추가
prkim99 Sep 2, 2022
acc4f61
Merge remote-tracking branch 'origin/Feature/marker' into Feature/marker
prkim99 Sep 4, 2022
968eb6f
방명록 crud
dldmldlsy Sep 11, 2022
2ec1d43
방명록 작성 api 구현
dldmldlsy Sep 11, 2022
2869e08
방명록 조회api 구현
dldmldlsy Sep 11, 2022
0688042
내 방명록 조회 api 구현
dldmldlsy Sep 11, 2022
daae614
api주소 변경
prkim99 Sep 13, 2022
8e7164c
s3 버킷 연동
prkim99 Sep 14, 2022
2344210
s3 버킷 설정 클래스 작성
prkim99 Sep 14, 2022
18f7bad
aws 버킷 객체 저장 코드 작성
prkim99 Sep 14, 2022
4cad7db
토큰검증에러 해결(Bearer분리, 바이트 단위로 서명)/ findUserIdByJwt 추가/ 비밀키변경 이외 토큰서비스관련 작업
dldmldlsy Sep 15, 2022
7fc07cd
Merge remote-tracking branch 'origin/Feature/file-handling' into Feat…
prkim99 Sep 16, 2022
2da58a4
fdfd
prkim99 Sep 16, 2022
c292e62
파일연산자 수정
prkim99 Sep 16, 2022
7830f92
파일 저장 함수 수정
prkim99 Sep 16, 2022
3da2994
S3 폴더 수정
prkim99 Sep 16, 2022
0564de9
Merge remote-tracking branch 'origin/Feature/file-handling' into Feat…
prkim99 Sep 16, 2022
d76ab06
Merge remote-tracking branch 'origin/Feature/guestbook' into Feature/…
prkim99 Sep 16, 2022
05c08ee
다이어리 컨트롤러 토큰 관련 코드 업데이트
prkim99 Sep 16, 2022
f1e2598
Merge remote-tracking branch 'origin/Feature/diary' into release
prkim99 Sep 16, 2022
2849464
Merge remote-tracking branch 'origin/Feature/marker' into release
prkim99 Sep 16, 2022
eb4f44b
guestBookDto 변경, 방명록 내용수정api, 방명록삭제api 추가, 방명록목록 조회 api수정
dldmldlsy Sep 16, 2022
ae5c211
Merge remote-tracking branch 'origin/Feature/guestbook' into release
prkim99 Sep 16, 2022
d00f88f
타임캡슐entity 생성, 타임캡슐 crud
dldmldlsy Sep 16, 2022
ba74e8d
참여자entity생성, 참여자 crud
dldmldlsy Sep 16, 2022
3140b89
Create ec2_deploy.yml
prkim99 Oct 1, 2022
1f097c8
Merge pull request #7 from ARdiary/release-1
prkim99 Oct 1, 2022
5848555
Update ec2_deploy.yml
prkim99 Oct 1, 2022
8a352c0
Update ec2_deploy.yml
prkim99 Oct 1, 2022
839d07d
Update ec2_deploy.yml
prkim99 Oct 1, 2022
40d6aa0
Update ec2_deploy.yml
prkim99 Oct 1, 2022
908b72b
Update ec2_deploy.yml
prkim99 Oct 1, 2022
214dd25
타입캡슐 추가 api 개발(미완성)
dldmldlsy Oct 7, 2022
47f7417
방명록 controller 메소드명 변경(find->load, change->modify)
dldmldlsy Oct 7, 2022
bb59839
Merge branch 'develop' into Feature/timecapsule
dldmldlsy Oct 8, 2022
4e56750
타임캡슐 추가 API 구현(participants 추가 작업, 추가된 타임캡슐정보 응답작업 등)
dldmldlsy Oct 8, 2022
e73ca13
타임캡슐 조회 API 구현
dldmldlsy Oct 8, 2022
68f1b23
타임캡슐 삭제 API 구현
dldmldlsy Oct 8, 2022
086af43
rename(cameraAR->ARMarker, marker->markerImage)
prkim99 Oct 11, 2022
146de18
Diary 테이블 CRUD
prkim99 Aug 18, 2022
6f71933
내가 작성한 다이어리 조회 api 구현
prkim99 Aug 18, 2022
6d9089d
내가 작성한 다이어리 조회 api 구현
prkim99 Aug 18, 2022
eb582e9
내가 작성한 다이어리 조회 api mapper 오타 수정
prkim99 Aug 18, 2022
e2ef5fa
다이어리 조회 api 구현(다이어리 번호, 모든 다이어리, 작성자별 다이어리 리스트 조회 가능)
prkim99 Aug 21, 2022
7fe81fb
swagger 관련 설정: 의존성추가, SwaggerConfig 생성, controller에 어노테이션 추가, yml에 sp…
dldmldlsy Aug 17, 2022
f2d7e94
yml코드 들여쓰기 수정
dldmldlsy Aug 18, 2022
19d6e84
diaryID로 매핑 get 방식으로 변경
prkim99 Aug 29, 2022
ee2946a
diaryID로 매핑 get 방식으로 변경
prkim99 Aug 30, 2022
1744044
네이밍 규칙 적용
prkim99 Aug 30, 2022
3113f2a
일기 작성기능, 일기 삭제기능 추가
prkim99 Sep 1, 2022
5f838a9
파일 저장 기능 추가
prkim99 Sep 1, 2022
1ba0eef
다이어리 업데이트 api추가
prkim99 Sep 2, 2022
456330a
어노테이션 수정
prkim99 Sep 2, 2022
f0d7b92
널포인트에러해결(final키워드 추가), 다이어리작성api수정, 가독성개선, url변경
dldmldlsy Sep 3, 2022
38e1e27
api주소 변경
prkim99 Sep 13, 2022
4442ecf
s3 버킷 연동
prkim99 Sep 14, 2022
54caed4
s3 버킷 설정 클래스 작성
prkim99 Sep 14, 2022
75fabb8
fdfd
prkim99 Sep 16, 2022
9ed6cb0
파일 저장 함수 수정
prkim99 Sep 16, 2022
6837ff2
방명록 crud
dldmldlsy Sep 11, 2022
b534223
방명록 작성 api 구현
dldmldlsy Sep 11, 2022
46d2d89
방명록 조회api 구현
dldmldlsy Sep 11, 2022
936521e
내 방명록 조회 api 구현
dldmldlsy Sep 11, 2022
0871aaa
토큰검증에러 해결(Bearer분리, 바이트 단위로 서명)/ findUserIdByJwt 추가/ 비밀키변경 이외 토큰서비스관련 작업
dldmldlsy Sep 15, 2022
dd4d4b3
다이어리 컨트롤러 토큰 관련 코드 업데이트
prkim99 Sep 16, 2022
f505b1d
마커 CRUD
dldmldlsy Sep 2, 2022
9ed464e
마커 전체 목록 조회 api
dldmldlsy Sep 2, 2022
f5cde8a
카메라AR api생성
prkim99 Sep 2, 2022
0f2e3d1
cameraARListDto 형식 결정
prkim99 Sep 2, 2022
95e9273
모든 마커+AR정보 불러오기, 내 위치에 따른 마커+AR정보 불러오기 기능 추가
prkim99 Sep 2, 2022
87ae9b6
guestBookDto 변경, 방명록 내용수정api, 방명록삭제api 추가, 방명록목록 조회 api수정
dldmldlsy Sep 16, 2022
54ce3b1
다이어리 컨트롤러 토큰 관련 코드 업데이트
prkim99 Sep 26, 2022
8cc4270
Merge remote-tracking branch 'origin/release' into release
prkim99 Oct 11, 2022
d0d207e
rename(cameraAR->ARMarker, marker->markerImage)
prkim99 Oct 11, 2022
d4b5cf2
Merge branch 'Feature/marker' of https://github.com/ARdiary/ARdiray_S…
prkim99 Oct 11, 2022
9fae882
이름 변경 오류 수정
prkim99 Oct 11, 2022
ebb6da6
USER 쿼리문 중복값 무시 코드 추가
prkim99 Oct 11, 2022
b135161
Merge remote-tracking branch 'origin/Feature/timecapsule' into develop
prkim99 Oct 14, 2022
3f7efa1
회원가입 중복에러 처리(중복발생 시, conflict 및 에러메세지 반환)
dldmldlsy Oct 14, 2022
fc27708
에러수정(@mapper 추가, mapper.xml에서 메소드명수정)
dldmldlsy Oct 14, 2022
c4ad1ec
팔로우 연결 api
dldmldlsy Nov 4, 2022
b585b68
팔로우 해제 api
dldmldlsy Nov 4, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .github/workflows/ec2_deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Deploy to EC2
on:
push:
branches: [ "release" ]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
build:
name: Deploy main branch
runs-on: ubuntu-latest

steps:
- name: Connect ssh and git pull
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ec2-user
key: ${{ secrets.EC2_PEM_KEY }}
script: |
echo "연결 완료"
cd army/ARdiray_Spring/ardiary/
git checkout release
git pull origin release
kill `ps -ef | grep ardiary-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
echo "기존 서비스 배포 중지"
sudo ./gradlew build
cd build/libs/
nohup java -jar ardiary-0.0.1-SNAPSHOT.jar 2>&1 &
echo "업데이트 서비스 배포 시작"
exit


7 changes: 7 additions & 0 deletions ardiary/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
//spring-web
implementation 'org.springframework.boot:spring-boot-starter-web'
//swagger
implementation 'io.springfox:springfox-boot-starter:3.0.0'
//lombok
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
Expand All @@ -36,6 +38,11 @@ dependencies {
implementation 'org.mariadb.jdbc:mariadb-java-client:3.0.5'
//mybatis
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.2'
// JAX-B dependencies for JDK 9+
implementation "jakarta.xml.bind:jakarta.xml.bind-api:2.3.2"
implementation "org.glassfish.jaxb:jaxb-runtime:2.3.2"
// aws cloud framework for aws s3 (aws sdk의 s3관련된 라이브러리만 추가하는 코드도 있는데 혹시 몰라서 포괄적으로 설정함)
implementation "org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE"
}

tasks.named('test') {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(scanBasePackages ={"com.army.ardiary.repository.UserRepository"})
@SpringBootApplication()
public class ArdiaryApplication {

public static void main(String[] args) {
Expand Down
29 changes: 29 additions & 0 deletions ardiary/src/main/java/com/army/ardiary/config/AwsS3Config.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.army.ardiary.config;

import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;

public class AwsS3Config {
@Value("${cloud.aws.credentials.accessKey}")
private String accessKey;

@Value("${cloud.aws.credentials.secretKey}")
private String secretKey;

@Value("${cloud.aws.region.static}")
private String region;

@Bean
public AmazonS3 amazonS3() {
AWSCredentials awsCredentials = new BasicAWSCredentials(accessKey, secretKey);
return AmazonS3ClientBuilder.standard()
.withRegion(region)
.withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
.build();
}
}
34 changes: 34 additions & 0 deletions ardiary/src/main/java/com/army/ardiary/config/SwaggerConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.army.ardiary.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableSwagger2
@Configuration
public class SwaggerConfig{
//springfox 기본 config
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Army Project API")
.description("Army api")
.version("0.1")
.build();
}
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.useDefaultResponseMessages(false)//swagger 제공 기본 응답 코드. false로 설정하면 안보임
.select()
.apis(RequestHandlerSelectors.basePackage("com.army.ardiary")) //api스펙이 작성되어있는 패키지(컨트롤러) 지정 RequestHandlerSelectors.any()로 선언해도 됨
.paths(PathSelectors.any()) //path에 입력한 조건에 맞는 api를 문서화
.build()
.apiInfo(apiInfo());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.army.ardiary.controller;

import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/cameraAR")
public class CameraARController {

/* @GetMapping("/distance={distance}")
public ResponseEntity<?> loadCameraARByDistance(@RequestParam int distance, @RequestBody @Valid MyLocatioinDto myLocatioinDto){
// CameraARListDto cameraARListDto =cameraARService.findByDistance(myLocatioinDto,distance);
return ResponseEntity.status(HttpStatus.OK).body(cameraARListDto);
}*/
/* @PostMapping("")
ResponseEntity<?> createCameraAR(@RequestBody @Valid CameraARRequestDto cameraARRequestDto){
int newARMarkerId=cameraARService.createCameraAR(cameraARRequestDto);
return ResponseEntity.status(HttpStatus.CREATED).body(newARMarkerId);
}*/


}
112 changes: 112 additions & 0 deletions ardiary/src/main/java/com/army/ardiary/controller/DiaryController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
package com.army.ardiary.controller;

import com.army.ardiary.dto.DiaryRequestDto;
import com.army.ardiary.dto.DiaryResponseDto;
import com.army.ardiary.dto.ErrorResponse;
import com.army.ardiary.dto.TokenRequestDto;
import com.army.ardiary.service.DiaryService;
import com.army.ardiary.service.TokenService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/diaries")
public class DiaryController {
//다이어리 목록을 불러오는 api를 다루는 컨트롤러

private final DiaryService diaryService;
private final TokenService tokenService;

@GetMapping()
public ResponseEntity<?> loadDiary(){
DiaryResponseDto diaryResponseDto= diaryService.findAll();
return ResponseEntity.status(HttpStatus.OK).body(diaryResponseDto);
}

@GetMapping("/{id}")
public ResponseEntity<?> loadDiaryById(@PathVariable(value = "id") int diaryId){
DiaryResponseDto diaryResponseDto = diaryService.findById(diaryId);
return ResponseEntity.status(HttpStatus.OK).body(diaryResponseDto);
}

//이거 유저로 빠질 예정
@GetMapping("api/user/diary")
public ResponseEntity<?> loadDiaryByUser(@RequestHeader(value = "Authorization") String headerToken){
String token = headerToken.substring("Bearer ".length());
//토큰 유효성 확인
if(!tokenService.validateToken(token)){
return ResponseEntity.status(HttpStatus.FORBIDDEN).body(new ErrorResponse("사용자 인증이 불가합니다. 잘못된 접근입니다."));
}
//토큰을 통해 사용자 정보 불러오기
int userId = tokenService.findUserIdByJwt(token);
//다이어리 불러오기
DiaryResponseDto diaryResponseDto= diaryService.findByWriter(userId);
return ResponseEntity.status(HttpStatus.OK).body(diaryResponseDto);
}

@PostMapping("")
public ResponseEntity<?> writeDiary(@RequestHeader(value = "Authorization") String headerToken, DiaryRequestDto diaryRequestDto){
String token = headerToken.substring("Bearer ".length());
//토큰 유효성 확인
if(token==null){ //토큰을 보내지않은 경우
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ErrorResponse("잘못된 요청입니다. 토큰도 함께 보내주세요."));
}
if(!tokenService.validateToken(token)){ //토큰이 유효하지않은 경우: 지금 이 에러 발생. 토큰이 변조된 상황.
return ResponseEntity.status(HttpStatus.FORBIDDEN).body(new ErrorResponse("사용자 인증이 불가합니다. 잘못된 접근입니다."));
}
//토큰을 통해 사용자 정보 불러오기
int userId = tokenService.findUserIdByJwt(token);
//일기 생성 후, 작성된 일기 불러오기
int newDiaryId=diaryService.createDiary(diaryRequestDto,userId);
DiaryResponseDto diaryResponseDto=diaryService.findById(newDiaryId);
return ResponseEntity.status(HttpStatus.CREATED).body(diaryResponseDto);
}

//@RequestMapping(value = "/diary/delete/{id}",method = {RequestMethod.GET,RequestMethod.POST})
@DeleteMapping("/{id}")
public ResponseEntity<?> deleteDiary(@PathVariable(value = "id") int diaryId, @RequestHeader(value = "Authorization") String headerToken){
String token = headerToken.substring("Bearer ".length());
//토큰 유효성 확인
if(token==null||!tokenService.validateToken(token)){
return ResponseEntity.status(HttpStatus.FORBIDDEN).body(new ErrorResponse("사용자 인증이 불가합니다. 잘못된 접근입니다."));
}
//토큰을 통해 사용자 정보 불러오기
int userId = tokenService.findUserIdByJwt(token);
int deleteCount = diaryService.deleteDiary(diaryId,userId);
if(deleteCount == 0){
return ResponseEntity.status(HttpStatus.METHOD_NOT_ALLOWED).body(new ErrorResponse("삭제가 실패했습니다"));
}
return ResponseEntity.ok("삭제 완료");
}

@PatchMapping("/{id}")
public ResponseEntity<?> modifyDiary(@PathVariable(value = "id") int diaryId,@RequestHeader(value = "Authorization") String headerToken, @RequestBody @Valid DiaryRequestDto diaryRequestDto){
String token = headerToken.substring("Bearer ".length());
//토큰 유효성 확인
if(!tokenService.validateToken(token)){
return ResponseEntity.status(HttpStatus.FORBIDDEN).body(new ErrorResponse("사용자 인증이 불가합니다. 잘못된 접근입니다."));
}
//토큰을 통해 사용자 정보 불러오기
int userId = tokenService.findUserIdByJwt(token);
int updateDiaryId=diaryService.modifyDiary(diaryId, diaryRequestDto,userId);
DiaryResponseDto diaryResponseDto = diaryService.findById(updateDiaryId);
return ResponseEntity.status(HttpStatus.OK).body(diaryResponseDto);
}

/* @PostMapping("/user/diary/like")
public ResponseEntity<?> listDiaryByUserLike(@RequestBody @Valid TokenRequestDto tokenRequestDto){
String token= tokenRequestDto.getJwt();
//validateToken함수 오류 확인후 후 주석 지우기
if(!tokenService.validateToken(token)){
return ResponseEntity.status(HttpStatus.FORBIDDEN).body(new ErrorResponse("사용자 인증이 불가합니다. 잘못된 접근입니다."));
}
DiaryResponseDto diaryResponseDto=diaryListService.listMine(token);
return ResponseEntity.status(HttpStatus.OK).body(diaryResponseDto);
}*/


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package com.army.ardiary.controller;

import com.army.ardiary.dto.ErrorResponse;
import com.army.ardiary.dto.FollowRequestDto;
import com.army.ardiary.service.FollowService;
import com.army.ardiary.service.TokenService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
@RequiredArgsConstructor
public class FollowController {

private final TokenService tokenService;
private final FollowService followService;

@PostMapping("/api/follow")
public ResponseEntity<?> addFollow(@RequestHeader(value = "Authorization") String headerToken, @RequestBody FollowRequestDto followRequestDto){
String token = headerToken.substring("Bearer ".length());
int userId = tokenService.findUserIdByJwt(token);
if (token == null || !tokenService.validateToken(token))
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(new ErrorResponse("토큰 인증 실패. 조회 권한이 없습니다."));

int followeeId = followRequestDto.getFollowee();
followService.addFollow(userId, followeeId);
return ResponseEntity.status(HttpStatus.CREATED).body("팔로우 연결 완료");
}

@DeleteMapping("/api/follow/{id}")
public ResponseEntity<?> deleteFollow(@RequestHeader(value = "Authorization") String headerToken, @PathVariable int id){
String token = headerToken.substring("Bearer ".length());
if(token == null|| !tokenService.validateToken(token))
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(new ErrorResponse("토큰 인증 실패. 조회 권한이 없습니다."));

followService.deleteFollow(id);
return ResponseEntity.status(HttpStatus.OK).body("팔로우 해제 완료");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package com.army.ardiary.controller;

import com.army.ardiary.domain.entity.GuestBookEntity;
import com.army.ardiary.dto.ErrorResponse;
import com.army.ardiary.dto.GuestBookContentDto;
import com.army.ardiary.service.GuestBookService;
import com.army.ardiary.service.TokenService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;

@RestController
@RequiredArgsConstructor
public class GuestBookController {

private final TokenService tokenService;
public final GuestBookService guestBookService;

@PostMapping("/api/guestbooks")
public ResponseEntity<?> writeGuestBook(@RequestHeader(value = "Authorization", required = false) String headerToken, @RequestBody GuestBookContentDto content){
String token = headerToken.substring("Bearer ".length());
if(token == null|| !tokenService.validateToken(token))
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(new ErrorResponse("토큰 인증 실패. 작성 권한이 없습니다."));

int userId = tokenService.findUserIdByJwt(token);

GuestBookEntity newGuestBook = guestBookService.createGuestBook(userId, content);
return ResponseEntity.status(HttpStatus.CREATED).body(newGuestBook);
}

@GetMapping("/api/guestbooks/{id}")
public ResponseEntity<?> loadGuestBook(@PathVariable("id") int id){
GuestBookEntity guestBookEntity = guestBookService.findGuestBook(id);
return ResponseEntity.status(HttpStatus.OK).body(guestBookEntity);
}

@GetMapping("/api/guestbooks")
public ResponseEntity<?> loadGuestBookListByUser(@RequestHeader(value = "Authorization") String headerToken) {
String token = headerToken.substring("Bearer ".length());
int userId = tokenService.findUserIdByJwt(token);
if (token == null || !tokenService.validateToken(token))
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(new ErrorResponse("토큰 인증 실패. 조회 권한이 없습니다."));
ArrayList<GuestBookEntity> guestBookEntities = guestBookService.findGuestBookListByUser(userId);
return ResponseEntity.status(HttpStatus.OK).body(guestBookEntities);
}

@PatchMapping("/api/guestbooks/{id}/content")
public ResponseEntity<?> modifyContent(@RequestHeader(value = "Authorization") String headerToken, @PathVariable("id") int guestBookId, @RequestBody GuestBookContentDto newContent){
String token = headerToken.substring("Bearer ".length());
int userId = tokenService.findUserIdByJwt(token);
if (token == null || !tokenService.validateToken(token)||!guestBookService.isUser(userId, guestBookId))
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(new ErrorResponse("토큰 인증 실패. 조회 권한이 없습니다."));
GuestBookEntity guestBookEntity = guestBookService.updateContent(guestBookId, newContent.getContent());
return ResponseEntity.status(HttpStatus.OK).body(guestBookEntity);
}

@DeleteMapping("/api/guestbooks/{id}")
public ResponseEntity<?> delete(@RequestHeader(value = "Authorization") String headerToken, @PathVariable("id") int guestBookId) {
String token = headerToken.substring("Bearer ".length());
int userId = tokenService.findUserIdByJwt(token);
if (token == null || !tokenService.validateToken(token)||!guestBookService.isUser(userId, guestBookId))
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(new ErrorResponse("토큰 인증 실패. 조회 권한이 없습니다."));
GuestBookEntity deleted = guestBookService.delete(guestBookId);
return ResponseEntity.status(HttpStatus.OK).body(deleted);
}
}
Loading