use cookie for journal request

This commit is contained in:
gulnaz 2024-09-30 16:14:02 +03:00
parent 519b5b6b39
commit 32910508ef

View file

@ -1,22 +1,22 @@
package ru.micord.ervu.service.grid.impl;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import ru.micord.ervu.journal.JournalDto;
import ru.micord.ervu.journal.JournalFileDataRequest;
import ru.micord.ervu.journal.JournalFileDataResponse;
import ru.micord.ervu.journal.mapper.JournalDtoMapper;
import ru.micord.ervu.security.webbpm.jwt.JwtAuthentication;
import ru.micord.ervu.service.InteractionService;
import ru.micord.ervu.service.grid.InMemoryStaticGridLoadService;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import ru.micord.ervu.kafka.service.ReplyingKafkaService;
@ -30,6 +30,8 @@ public class JournalInMemoryStaticGridLoadService implements
private final InteractionService interactionService;
private final ReplyingKafkaService ervuReplyingKafkaService;
private final ObjectMapper objectMapper;
private final HttpServletRequest request;
@Value("${ervu.kafka.journal.request.topic}")
private String requestTopic;
@ -41,11 +43,12 @@ public class JournalInMemoryStaticGridLoadService implements
public JournalInMemoryStaticGridLoadService(JwtTokenService jwtTokenService,
InteractionService interactionService,
ReplyingKafkaService ervuReplyingKafkaService,
ObjectMapper objectMapper) {
ObjectMapper objectMapper, HttpServletRequest request) {
this.jwtTokenService = jwtTokenService;
this.interactionService = interactionService;
this.ervuReplyingKafkaService = ervuReplyingKafkaService;
this.objectMapper = objectMapper;
this.request = request;
}
@Override
@ -76,11 +79,14 @@ public class JournalInMemoryStaticGridLoadService implements
}
private JournalFileDataRequest initJournalFileDataRequest() {
Optional<Authentication> authentication = Optional.ofNullable(
SecurityContextHolder.getContext().getAuthentication());
String jwtToken = authentication.map(auth -> ((JwtAuthentication) auth).getToken())
String authToken = Optional.ofNullable(request.getCookies())
.map(cookies -> Arrays.stream(cookies)
.filter(cookie -> cookie.getName().equals("auth_token"))
.findFirst()
.map(Cookie::getValue)
.orElseThrow(() -> new RuntimeException("Failed to get auth data. User unauthorized.")))
.orElseThrow(() -> new RuntimeException("Failed to get auth data. User unauthorized."));
String[] ids = jwtTokenService.getToken(jwtToken).getUserAccountId().split(":");
String[] ids = jwtTokenService.getToken(authToken).getUserAccountId().split(":");
String userId = ids[0];
String ervuId = ids[1];
return new JournalFileDataRequest()