Skip to content

Commit

Permalink
Feat(#84): 공유 URL 생성하기 (#95)
Browse files Browse the repository at this point in the history
  • Loading branch information
somin-jeong authored Jul 31, 2024
1 parent 03ad37a commit 6cb4ded
Show file tree
Hide file tree
Showing 7 changed files with 78 additions and 35 deletions.
2 changes: 1 addition & 1 deletion src/main/java/inandout/backend/Util/EmailUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,5 +57,12 @@ public BaseResponse<PostResponseDTO> getPostController(@PathVariable(value = "po
return new BaseResponse<>(postResponseDTO);
}

@GetMapping("/myroom/link")
public BaseResponse<LinkResponseDTO> generateLinkController(@RequestBody MyRoomLinkRequestDTO myRoomLinkRequestDTO) {
LinkResponseDTO linkResponseDTO = postService.getLink(myRoomLinkRequestDTO);

return new BaseResponse<>(linkResponseDTO);
}


}
13 changes: 13 additions & 0 deletions src/main/java/inandout/backend/dto/myroom/LinkResponseDTO.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package inandout.backend.dto.myroom;

import lombok.Getter;

@Getter
public class MyRoomLinkRequestDTO {
private int roomId;
}
20 changes: 16 additions & 4 deletions src/main/java/inandout/backend/jwt/JWTUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand Down Expand Up @@ -59,13 +60,24 @@ 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")
.accessToken(accessToken)
.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();
}
}
48 changes: 21 additions & 27 deletions src/main/java/inandout/backend/service/post/PostService.java
Original file line number Diff line number Diff line change
@@ -1,52 +1,42 @@
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;
import inandout.backend.repository.post.PostJPARepository;
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;
import java.time.ZoneId;
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
Expand Down Expand Up @@ -142,8 +132,6 @@ public void deleteImage(Post post) {

//S3에서 삭제
s3Service.deleteFile(post.getId(), imageUrls);


}

public void updatePostImages(Post post, List<String> imageUrls) {
Expand All @@ -153,4 +141,10 @@ public void updatePostImages(Post post, List<String> imageUrls) {
postImageJPARepository.save(postImage);
}
}

public LinkResponseDTO getLink(MyRoomLinkRequestDTO myRoomLinkRequestDTO) {
String linkToken = jwtUtil.generateLinkToken(myRoomLinkRequestDTO.getRoomId());
// return new LinkResponseDTO(linkRequestUri + linkToken);
return new LinkResponseDTO(linkToken);
}
}
15 changes: 12 additions & 3 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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:
Expand Down

0 comments on commit 6cb4ded

Please sign in to comment.