diff --git a/src/main/java/inandout/backend/Util/EmailUtils.java b/src/main/java/inandout/backend/Util/EmailUtils.java index 9dcab94..2e64f89 100644 --- a/src/main/java/inandout/backend/Util/EmailUtils.java +++ b/src/main/java/inandout/backend/Util/EmailUtils.java @@ -21,7 +21,7 @@ public class EmailUtils { @Value("${mail.username}") private String email; - @Value("${spring.mail.request_Uri}") + @Value("${spring.mail.request-uri}") private String requestUri; private final JavaMailSender mailSender; diff --git a/src/main/java/inandout/backend/controller/myroom/MyRoomController.java b/src/main/java/inandout/backend/controller/myroom/MyRoomController.java index fa09557..86c040b 100644 --- a/src/main/java/inandout/backend/controller/myroom/MyRoomController.java +++ b/src/main/java/inandout/backend/controller/myroom/MyRoomController.java @@ -57,5 +57,12 @@ public BaseResponse getPostController(@PathVariable(value = "po return new BaseResponse<>(postResponseDTO); } + @GetMapping("/myroom/link") + public BaseResponse generateLinkController(@RequestBody MyRoomLinkRequestDTO myRoomLinkRequestDTO) { + LinkResponseDTO linkResponseDTO = postService.getLink(myRoomLinkRequestDTO); + + return new BaseResponse<>(linkResponseDTO); + } + } diff --git a/src/main/java/inandout/backend/dto/myroom/LinkResponseDTO.java b/src/main/java/inandout/backend/dto/myroom/LinkResponseDTO.java new file mode 100644 index 0000000..3a607bf --- /dev/null +++ b/src/main/java/inandout/backend/dto/myroom/LinkResponseDTO.java @@ -0,0 +1,13 @@ +package inandout.backend.dto.myroom; + +import lombok.Getter; +import org.springframework.beans.factory.annotation.Value; + +@Getter +public class LinkResponseDTO { + private final String link; + + public LinkResponseDTO(String link) { + this.link = link; + } +} diff --git a/src/main/java/inandout/backend/dto/myroom/MyRoomLinkRequestDTO.java b/src/main/java/inandout/backend/dto/myroom/MyRoomLinkRequestDTO.java new file mode 100644 index 0000000..11d7e5e --- /dev/null +++ b/src/main/java/inandout/backend/dto/myroom/MyRoomLinkRequestDTO.java @@ -0,0 +1,8 @@ +package inandout.backend.dto.myroom; + +import lombok.Getter; + +@Getter +public class MyRoomLinkRequestDTO { + private int roomId; +} diff --git a/src/main/java/inandout/backend/jwt/JWTUtil.java b/src/main/java/inandout/backend/jwt/JWTUtil.java index 325ab3f..21587ae 100644 --- a/src/main/java/inandout/backend/jwt/JWTUtil.java +++ b/src/main/java/inandout/backend/jwt/JWTUtil.java @@ -14,8 +14,9 @@ @Component public class JWTUtil { private SecretKey secretKey; - private final Long accessTokenValidTime = (60 * 1000L) * 30; // 30분 - private final Long refreshTokenValidTime = (60 * 1000L) * 60 * 24 * 7; // 7일 + private final Long ACCESSTOKEN_VALIDTIME = (60 * 1000L) * 30; // 30분 + private final Long REFRESHTOKEN_VALIDTIME = (60 * 1000L) * 60 * 24 * 7; // 7일 + private final Long LINKTOKEN_VALIDTIME = (60 * 1000L) * 15; // 15분 public JWTUtil(@Value("${jwt.secret}") String secret) { secretKey = new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), Jwts.SIG.HS256.key().build().getAlgorithm()); @@ -59,8 +60,8 @@ public String createRefreshToken(Long expiredMs) { } public TokenInfo generateToken(String email) { - String accessToken = createAccessToken(email, accessTokenValidTime); - String refreshToken = createRefreshToken(refreshTokenValidTime); + String accessToken = createAccessToken(email, ACCESSTOKEN_VALIDTIME); + String refreshToken = createRefreshToken(REFRESHTOKEN_VALIDTIME); return TokenInfo.builder() .grantType("Bearer") @@ -68,4 +69,15 @@ public TokenInfo generateToken(String email) { .refreshToken(refreshToken) .build(); } + + public String generateLinkToken(int roomId) { + Claims claims = Jwts.claims().subject(String.valueOf(roomId)).build(); + claims.put("ROLD_ANONYMOUS", true); + return Jwts.builder() + .claims(claims) + .issuedAt(new Date(System.currentTimeMillis())) + .expiration(new Date(System.currentTimeMillis() + LINKTOKEN_VALIDTIME)) + .signWith(secretKey) + .compact(); + } } diff --git a/src/main/java/inandout/backend/service/post/PostService.java b/src/main/java/inandout/backend/service/post/PostService.java index fa73064..a4c7c80 100644 --- a/src/main/java/inandout/backend/service/post/PostService.java +++ b/src/main/java/inandout/backend/service/post/PostService.java @@ -1,13 +1,14 @@ package inandout.backend.service.post; -import inandout.backend.common.exception.BaseException; -import inandout.backend.common.response.BaseErrorResponse; import inandout.backend.dto.chat.ChatResponseDTO; +import inandout.backend.dto.myroom.LinkResponseDTO; +import inandout.backend.dto.myroom.MyRoomLinkRequestDTO; import inandout.backend.dto.myroom.PostResponseDTO; import inandout.backend.dto.post.UpdateStuffRequestDTO; import inandout.backend.entity.post.InOut; import inandout.backend.entity.post.Post; import inandout.backend.entity.post.PostImage; +import inandout.backend.jwt.JWTUtil; import inandout.backend.repository.chat.ChatRepository; import inandout.backend.repository.post.InOutRepository; import inandout.backend.repository.post.PostImageJPARepository; @@ -15,7 +16,7 @@ import inandout.backend.repository.post.PostRepository; import inandout.backend.service.chat.ChatService; import inandout.backend.service.myroom.S3Service; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.time.LocalDateTime; @@ -23,30 +24,19 @@ import java.util.List; import java.util.Optional; -import static inandout.backend.common.response.status.BaseExceptionResponseStatus.BAD_REQUEST; - @Service +@RequiredArgsConstructor public class PostService { - @Autowired - public PostRepository postRepository; - - @Autowired - public PostJPARepository postJPARepository; - - @Autowired - public ChatRepository chatRepository; - - @Autowired - public ChatService chatService; - - @Autowired - public PostImageJPARepository postImageJPARepository; - - @Autowired - public InOutRepository inOutRepository; - - @Autowired - public S3Service s3Service; + public final PostRepository postRepository; + public final PostJPARepository postJPARepository; + public final ChatRepository chatRepository; + public final ChatService chatService; + public final PostImageJPARepository postImageJPARepository; + public final InOutRepository inOutRepository; + public final JWTUtil jwtUtil; + public final S3Service s3Service; +// @Value("${spring.link.request-uri}") +// private String linkRequestUri; public PostResponseDTO getPost(Integer memberId, Integer postId) { //postId로 memberId -> memberName @@ -142,8 +132,6 @@ public void deleteImage(Post post) { //S3에서 삭제 s3Service.deleteFile(post.getId(), imageUrls); - - } public void updatePostImages(Post post, List imageUrls) { @@ -153,4 +141,10 @@ public void updatePostImages(Post post, List imageUrls) { postImageJPARepository.save(postImage); } } + + public LinkResponseDTO getLink(MyRoomLinkRequestDTO myRoomLinkRequestDTO) { + String linkToken = jwtUtil.generateLinkToken(myRoomLinkRequestDTO.getRoomId()); +// return new LinkResponseDTO(linkRequestUri + linkToken); + return new LinkResponseDTO(linkToken); + } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 910aecc..6618edd 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -47,7 +47,10 @@ spring: password: ${REDIS_PASSWORD} mail: - request_Uri: ${MAIL_REQUEST_URI} + request-uri: ${MAIL_REQUEST_URI} + +# link: +# request-uri: ${LINK_REQUEST_URI} cloud: aws: @@ -99,7 +102,10 @@ spring: password: ${REDIS_PASSWORD} mail: - request_Uri: ${MAIL_REQUEST_URI} + request-uri: ${MAIL_REQUEST_URI} + +# link: +# request-uri: ${LINK_REQUEST_URI} cloud: aws: @@ -150,7 +156,10 @@ spring: password: ${REDIS_PASSWORD} mail: - request_Uri: ${MAIL_REQUEST_URI} + request-uri: ${MAIL_REQUEST_URI} + +# link: +# request-uri: ${LINK_REQUEST_URI} cloud: aws: