Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/category #47

Merged
merged 14 commits into from
Nov 7, 2023
137 changes: 69 additions & 68 deletions src/main/java/com/uspray/uspray/controller/AuthController.java
baebae02 marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package com.uspray.uspray.controller;

import com.uspray.uspray.DTO.ApiResponseDto;
import com.uspray.uspray.DTO.auth.TokenDto;
import com.uspray.uspray.DTO.auth.request.FindIdDto;
import com.uspray.uspray.DTO.auth.request.FindPwDto;
import com.uspray.uspray.DTO.auth.request.MemberDeleteDto;
import com.uspray.uspray.DTO.auth.request.MemberLoginRequestDto;
import com.uspray.uspray.DTO.auth.request.MemberRequestDto;
import com.uspray.uspray.DTO.ApiResponseDto;
import com.uspray.uspray.DTO.auth.TokenDto;
import com.uspray.uspray.DTO.auth.response.MemberResponseDto;
import com.uspray.uspray.exception.SuccessStatus;
import com.uspray.uspray.jwt.TokenProvider;
import com.uspray.uspray.service.AuthService;
Expand All @@ -19,6 +20,7 @@
import io.swagger.v3.oas.annotations.security.SecurityRequirements;
import io.swagger.v3.oas.annotations.tags.Tag;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.core.userdetails.User;
Expand All @@ -28,85 +30,84 @@
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.uspray.uspray.DTO.auth.response.MemberResponseDto;

import javax.validation.Valid;

@RestController
@RequestMapping("/auth")
@RequiredArgsConstructor
@Tag(name = "회원 관리", description = "Auth 관련 API docs")
@Tag(name = "회원 관리", description = "Auth 관련 API")
public class AuthController {

private final TokenProvider tokenProvider;
private final AuthService authService;
private final TokenProvider tokenProvider;
private final AuthService authService;

@PostMapping("/signup")
@ApiResponse(
responseCode = "201",
description = "회원가입 성공",
content = @Content(schema = @Schema(implementation = MemberResponseDto.class)))
public ApiResponseDto<MemberResponseDto> signup(
@RequestBody @Valid MemberRequestDto memberRequestDto) {
return ApiResponseDto.success(SuccessStatus.SIGNUP_SUCCESS,
authService.signup(memberRequestDto));
}
@PostMapping("/signup")
@ApiResponse(
responseCode = "201",
description = "회원가입 성공",
content = @Content(schema = @Schema(implementation = MemberResponseDto.class)))
public ApiResponseDto<MemberResponseDto> signup(
@RequestBody @Valid MemberRequestDto memberRequestDto) {
return ApiResponseDto.success(SuccessStatus.SIGNUP_SUCCESS,
authService.signup(memberRequestDto));
}

@PostMapping("/login")
@ApiResponse(
responseCode = "200",
description = "로그인 성공",
content = @Content(schema = @Schema(implementation = MemberResponseDto.class)))
public ApiResponseDto<TokenDto> login(
@RequestBody MemberLoginRequestDto memberLoginRequestDto) {
return ApiResponseDto.success(SuccessStatus.LOGIN_SUCCESS,
authService.login(memberLoginRequestDto));
}
@PostMapping("/login")
@ApiResponse(
responseCode = "200",
description = "로그인 성공",
content = @Content(schema = @Schema(implementation = MemberResponseDto.class)))
public ApiResponseDto<TokenDto> login(
@RequestBody MemberLoginRequestDto memberLoginRequestDto) {
return ApiResponseDto.success(SuccessStatus.LOGIN_SUCCESS,
authService.login(memberLoginRequestDto));
}

@PostMapping("/reissue")
@ApiResponse(
responseCode = "200",
description = "토큰 재발급 성공",
content = @Content(schema = @Schema(implementation = TokenDto.class)))
@SecurityRequirements({
@SecurityRequirement(name = "JWT Auth"),
@SecurityRequirement(name = "Refresh")
})
public ApiResponseDto<TokenDto> reissue(@Parameter(hidden = true) HttpServletRequest request) {
String accessToken = request.getHeader("Authorization").substring(7);
String refreshToken = request.getHeader("Refresh");
return ApiResponseDto.success(SuccessStatus.REISSUE_SUCCESS, authService.reissue(accessToken, refreshToken));
}
@PostMapping("/reissue")
@ApiResponse(
responseCode = "200",
description = "토큰 재발급 성공",
content = @Content(schema = @Schema(implementation = TokenDto.class)))
@SecurityRequirements({
@SecurityRequirement(name = "JWT Auth"),
@SecurityRequirement(name = "Refresh")
})
public ApiResponseDto<TokenDto> reissue(@Parameter(hidden = true) HttpServletRequest request) {
String accessToken = request.getHeader("Authorization").substring(7);
String refreshToken = request.getHeader("Refresh");
return ApiResponseDto.success(SuccessStatus.REISSUE_SUCCESS,
authService.reissue(accessToken, refreshToken));
}


@PostMapping("/find-id")
@Operation(summary = "아이디 찾기")
public ApiResponseDto<String> findId(@RequestBody FindIdDto findIdDto) {
return ApiResponseDto.success(SuccessStatus.FIND_USER_ID_SUCCESS,
authService.findId(findIdDto));
}
@PostMapping("/find-id")
@Operation(summary = "아이디 찾기")
public ApiResponseDto<String> findId(@RequestBody FindIdDto findIdDto) {
return ApiResponseDto.success(SuccessStatus.FIND_USER_ID_SUCCESS,
authService.findId(findIdDto));
}

@PostMapping("/find-pw")
@Operation(summary = "비밀번호 찾기")
public ApiResponseDto<?> findId(@RequestBody FindPwDto findPwDto) {
authService.findPw(findPwDto);
return ApiResponseDto.success(SuccessStatus.CHANGE_USER_PW_SUCCESS);
}
@PostMapping("/find-pw")
@Operation(summary = "비밀번호 찾기")
public ApiResponseDto<?> findId(@RequestBody FindPwDto findPwDto) {
authService.findPw(findPwDto);
return ApiResponseDto.success(SuccessStatus.CHANGE_USER_PW_SUCCESS);
}

@PostMapping("/withdrawal")
@Operation(summary = "회원 탈퇴")
@SecurityRequirement(name = "JWT Auth")
public ApiResponseDto<?> withdrawal(
@Parameter(hidden = true) @AuthenticationPrincipal User user, @RequestBody MemberDeleteDto memberDeleteDto) {
authService.withdrawal(user.getUsername(), memberDeleteDto);
return ApiResponseDto.success(SuccessStatus.WITHDRAWAL_SUCCESS);
}
@PostMapping("/withdrawal")
@Operation(summary = "회원 탈퇴")
@SecurityRequirement(name = "JWT Auth")
public ApiResponseDto<?> withdrawal(
@Parameter(hidden = true) @AuthenticationPrincipal User user,
@RequestBody MemberDeleteDto memberDeleteDto) {
authService.withdrawal(user.getUsername(), memberDeleteDto);
return ApiResponseDto.success(SuccessStatus.WITHDRAWAL_SUCCESS);
}

@GetMapping("/dup-check/{userId}")
@Operation(summary = "아이디 중복 체크")
public ApiResponseDto<?> dupCheck(@PathVariable("userId") String userId) {
authService.dupCheck(userId);
return ApiResponseDto.success(SuccessStatus.CHECK_USER_ID_SUCCESS);
@GetMapping("/dup-check/{userId}")
@Operation(summary = "아이디 중복 체크")
public ApiResponseDto<?> dupCheck(@PathVariable("userId") String userId) {
authService.dupCheck(userId);
return ApiResponseDto.success(SuccessStatus.CHECK_USER_ID_SUCCESS);

}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

@RestController
@RequestMapping("/category")
@Tag(name = "Category API", description = "카테고리 관련 API")
@Tag(name = "Category API", description = "Category 관련 API")
@RequiredArgsConstructor
@SecurityRequirement(name = "JWT Auth")
public class CategoryController {
Expand Down
21 changes: 12 additions & 9 deletions src/main/java/com/uspray/uspray/controller/FCMController.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.uspray.uspray.DTO.notification.FCMNotificationRequestDto;
import com.uspray.uspray.exception.SuccessStatus;
import com.uspray.uspray.service.FCMNotificationService;
import io.swagger.v3.oas.annotations.tags.Tag;
import java.io.IOException;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
Expand All @@ -12,18 +13,20 @@

@RestController
@RequiredArgsConstructor
@Tag(name = "FCM", description = "FCM 관련 API")
public class FCMController {

private final FCMNotificationService fcmNotificationService;
private final FCMNotificationService fcmNotificationService;

@PostMapping("/admin/send/push")
public ApiResponseDto<?> pushMessage(@RequestBody FCMNotificationRequestDto requestDto) throws IOException {
@PostMapping("/admin/send/push")
public ApiResponseDto<?> pushMessage(@RequestBody FCMNotificationRequestDto requestDto)
throws IOException {

fcmNotificationService.sendMessageTo(
requestDto.getToken(),
requestDto.getTitle(),
requestDto.getBody());
return ApiResponseDto.success(SuccessStatus.PUSH_SUCCESS);
}
fcmNotificationService.sendMessageTo(
requestDto.getToken(),
requestDto.getTitle(),
requestDto.getBody());
return ApiResponseDto.success(SuccessStatus.PUSH_SUCCESS);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@

@RestController
@RequestMapping("/pray")
@Tag(name = "Pray", description = "기도제목 API")
@Tag(name = "Pray", description = "기도제목 관련 API")
@RequiredArgsConstructor
@SecurityRequirement(name = "JWT Auth")
public class PrayController {
Expand Down
105 changes: 53 additions & 52 deletions src/main/java/com/uspray/uspray/controller/ShareController.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,62 +31,63 @@
@RequestMapping("/share")
@RequiredArgsConstructor
@SecurityRequirement(name = "JWT Auth")
@Tag(name = "shared pray", description = "기도제목 공유")
@Tag(name = "shared pray", description = "기도제목 공유 관련 API")
public class ShareController {

private final ShareService shareService;
private final ShareService shareService;

@GetMapping()
@ApiResponse(
responseCode = "200",
description = "공유받은 기도제목 조회 (보관함 조회)",
content = @Content(schema = @Schema(implementation = SharedPrayListResponseDto.class))
)
@Operation(summary = "공유받은 기도제목 조회 (보관함 조회)")
public ApiResponseDto<List<SharedPrayResponseDto>> getSharedPrayList(
@Parameter(hidden = true) @AuthenticationPrincipal User user) {
return ApiResponseDto.success(SuccessStatus.GET_PRAY_LIST_SUCCESS, shareService.getSharedPrayList(user.getUsername()));
}
@GetMapping()
@ApiResponse(
responseCode = "200",
description = "공유받은 기도제목 조회 (보관함 조회)",
content = @Content(schema = @Schema(implementation = SharedPrayListResponseDto.class))
)
@Operation(summary = "공유받은 기도제목 조회 (보관함 조회)")
public ApiResponseDto<List<SharedPrayResponseDto>> getSharedPrayList(
@Parameter(hidden = true) @AuthenticationPrincipal User user) {
return ApiResponseDto.success(SuccessStatus.GET_PRAY_LIST_SUCCESS,
shareService.getSharedPrayList(user.getUsername()));
}

@PostMapping()
@ApiResponse(
responseCode = "201",
description = "기도제목 공유",
content = @Content(schema = @Schema(implementation = PrayResponseDto.class))
)
@Operation(summary = "기도제목 공유")
public ApiResponseDto<?> sharePray(
@Parameter(hidden = true) @AuthenticationPrincipal User user,
@RequestBody SharedPrayRequestDto sharedPrayRequestDto) {
shareService.sharePray(user.getUsername(), sharedPrayRequestDto);
return ApiResponseDto.success(SuccessStatus.SHARE_PRAY_SUCCESS);
}
@PostMapping()
@ApiResponse(
responseCode = "201",
description = "기도제목 공유",
content = @Content(schema = @Schema(implementation = PrayResponseDto.class))
)
@Operation(summary = "기도제목 공유")
public ApiResponseDto<?> sharePray(
@Parameter(hidden = true) @AuthenticationPrincipal User user,
@RequestBody SharedPrayRequestDto sharedPrayRequestDto) {
shareService.sharePray(user.getUsername(), sharedPrayRequestDto);
return ApiResponseDto.success(SuccessStatus.SHARE_PRAY_SUCCESS);
}

@DeleteMapping()
@ApiResponse(
responseCode = "204",
description = "공유받은 기도제목 삭제",
content = @Content(schema = @Schema(implementation = PrayResponseDto.class))
)
@Operation(summary = "공유받은 기도제목 삭제")
public ApiResponseDto<?> deletePray(
@Parameter(hidden = true) @AuthenticationPrincipal User user,
@RequestParam Long sharedPrayId) {
shareService.deleteSharedPray(user.getUsername(), sharedPrayId);
return ApiResponseDto.success(SuccessStatus.DELETE_PRAY_SUCCESS);
}
@DeleteMapping()
@ApiResponse(
responseCode = "204",
description = "공유받은 기도제목 삭제",
content = @Content(schema = @Schema(implementation = PrayResponseDto.class))
)
@Operation(summary = "공유받은 기도제목 삭제")
public ApiResponseDto<?> deletePray(
@Parameter(hidden = true) @AuthenticationPrincipal User user,
@RequestParam Long sharedPrayId) {
shareService.deleteSharedPray(user.getUsername(), sharedPrayId);
return ApiResponseDto.success(SuccessStatus.DELETE_PRAY_SUCCESS);
}

@PostMapping("/save")
@ApiResponse(
responseCode = "201",
description = "공유받은 기도제목 저장",
content = @Content(schema = @Schema(implementation = PrayResponseDto.class))
)
@Operation(summary = "공유받은 기도제목 저장")
public ApiResponseDto<?> savePray(
@Parameter(hidden = true) @AuthenticationPrincipal User user,
@RequestParam Long sharedPrayId) {
shareService.saveSharedPray(user.getUsername(), sharedPrayId);
return ApiResponseDto.success(SuccessStatus.SHARE_PRAY_AGREE_SUCCESS);
}
@PostMapping("/save")
@ApiResponse(
responseCode = "201",
description = "공유받은 기도제목 저장",
content = @Content(schema = @Schema(implementation = PrayResponseDto.class))
)
@Operation(summary = "공유받은 기도제목 저장")
public ApiResponseDto<?> savePray(
@Parameter(hidden = true) @AuthenticationPrincipal User user,
@RequestParam Long sharedPrayId) {
shareService.saveSharedPray(user.getUsername(), sharedPrayId);
return ApiResponseDto.success(SuccessStatus.SHARE_PRAY_AGREE_SUCCESS);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

@RequiredArgsConstructor
@RestController
@Tag(name = "sms 전송", description = "전화번호 인증 관련 api")
@Tag(name = "sms 전송", description = "SMS 관련 API")
public class SmsController {

private final SmsService smsService;
Expand Down