ClientId from token in Wishlist controller
This commit is contained in:
@@ -2,32 +2,36 @@ package _11.asktpk.artisanconnectbackend.controller;
|
|||||||
|
|
||||||
import _11.asktpk.artisanconnectbackend.dto.NoticeDTO;
|
import _11.asktpk.artisanconnectbackend.dto.NoticeDTO;
|
||||||
import _11.asktpk.artisanconnectbackend.dto.RequestResponseDTO;
|
import _11.asktpk.artisanconnectbackend.dto.RequestResponseDTO;
|
||||||
import _11.asktpk.artisanconnectbackend.dto.WishlistDTO;
|
import _11.asktpk.artisanconnectbackend.security.JwtUtil;
|
||||||
import _11.asktpk.artisanconnectbackend.service.ClientService;
|
import _11.asktpk.artisanconnectbackend.service.ClientService;
|
||||||
import _11.asktpk.artisanconnectbackend.service.NoticeService;
|
import _11.asktpk.artisanconnectbackend.service.NoticeService;
|
||||||
import _11.asktpk.artisanconnectbackend.service.WishlistService;
|
import _11.asktpk.artisanconnectbackend.service.WishlistService;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api/v1/wishlist")
|
@RequestMapping("/api/v1/wishlist")
|
||||||
public class WishlistController {
|
public class WishlistController {
|
||||||
private final WishlistService wishlistService;
|
private final WishlistService wishlistService;
|
||||||
private final ClientService clientService;
|
private final ClientService clientService;
|
||||||
private final NoticeService noticeService;
|
private final NoticeService noticeService;
|
||||||
|
private final JwtUtil jwtUtil;
|
||||||
|
|
||||||
public WishlistController(WishlistService wishlistService, ClientService clientService, NoticeService noticeService) {
|
public WishlistController(WishlistService wishlistService, ClientService clientService, NoticeService noticeService, JwtUtil jwtUtil) {
|
||||||
this.wishlistService = wishlistService;
|
this.wishlistService = wishlistService;
|
||||||
this.clientService = clientService;
|
this.clientService = clientService;
|
||||||
this.noticeService = noticeService;
|
this.noticeService = noticeService;
|
||||||
|
this.jwtUtil = jwtUtil;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/toggle/{noticeId}")
|
@PostMapping("/toggle/{noticeId}")
|
||||||
public ResponseEntity<RequestResponseDTO> toggleWishlist(@PathVariable Long noticeId) {
|
public ResponseEntity<RequestResponseDTO> toggleWishlist(@PathVariable Long noticeId, HttpServletRequest request) {
|
||||||
|
Long clientId = getClientIdFromRequest(request);
|
||||||
Long clientId = 1L;
|
|
||||||
NoticeDTO noticeDTO = noticeService.getNoticeById(noticeId);
|
NoticeDTO noticeDTO = noticeService.getNoticeById(noticeId);
|
||||||
if (noticeDTO == null) {
|
if (noticeDTO == null) {
|
||||||
return ResponseEntity.badRequest().body(new RequestResponseDTO("Notice not found"));
|
return ResponseEntity.badRequest().body(new RequestResponseDTO("Notice not found"));
|
||||||
@@ -51,9 +55,19 @@ public class WishlistController {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
@GetMapping("/")
|
@GetMapping("/")
|
||||||
public List<NoticeDTO> getWishlistForClient() {
|
public List<NoticeDTO> getWishlistForClient(HttpServletRequest request) {
|
||||||
// TODO: Replace with actual client ID from authentication context
|
Long clientId = getClientIdFromRequest(request);
|
||||||
Long clientId = 1L;
|
|
||||||
return wishlistService.getNoticesInWishlist(clientId);
|
return wishlistService.getNoticesInWishlist(clientId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Long getClientIdFromRequest(HttpServletRequest request) {
|
||||||
|
String authorizationHeader = request.getHeader("Authorization");
|
||||||
|
if (authorizationHeader != null && authorizationHeader.startsWith("Bearer ")) {
|
||||||
|
Long clientId = jwtUtil.extractUserId(authorizationHeader.substring(7));
|
||||||
|
log.info("Client Id: {}", clientId);
|
||||||
|
return clientId;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -53,6 +53,7 @@ public class JwtRequestFilter extends OncePerRequestFilter {
|
|||||||
} catch (ExpiredJwtException expiredJwtException) {
|
} catch (ExpiredJwtException expiredJwtException) {
|
||||||
logger.error(expiredJwtException.getMessage());
|
logger.error(expiredJwtException.getMessage());
|
||||||
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
|
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
|
||||||
|
response.getWriter().write(new RequestResponseDTO(expiredJwtException.getMessage()).toJSON());
|
||||||
return;
|
return;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error(e.getMessage());
|
logger.error(e.getMessage());
|
||||||
|
|||||||
@@ -82,6 +82,10 @@ public class JwtUtil {
|
|||||||
return extractAllClaims(token).get("role", String.class);
|
return extractAllClaims(token).get("role", String.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Long extractUserId(String token) {
|
||||||
|
return extractAllClaims(token).get("userId", Long.class);
|
||||||
|
}
|
||||||
|
|
||||||
public <T> T extractClaim(String token, Function<Claims, T> claimsResolver) {
|
public <T> T extractClaim(String token, Function<Claims, T> claimsResolver) {
|
||||||
final Claims claims = extractAllClaims(token);
|
final Claims claims = extractAllClaims(token);
|
||||||
return claimsResolver.apply(claims);
|
return claimsResolver.apply(claims);
|
||||||
|
|||||||
Reference in New Issue
Block a user