From 8b23a25bef55c271f87bd84e5ef2e304bb2ebb07 Mon Sep 17 00:00:00 2001 From: Matej Hrica <492778@mail.muni.cz> Date: Mon, 8 May 2023 00:01:33 +0200 Subject: [PATCH] Pass auth header to api in weather --- .../weather/server/service/WeatherServiceImpl.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/weather/src/main/java/cz/muni/fi/pa165/weather/server/service/WeatherServiceImpl.java b/weather/src/main/java/cz/muni/fi/pa165/weather/server/service/WeatherServiceImpl.java index e540ed4..187127e 100644 --- a/weather/src/main/java/cz/muni/fi/pa165/weather/server/service/WeatherServiceImpl.java +++ b/weather/src/main/java/cz/muni/fi/pa165/weather/server/service/WeatherServiceImpl.java @@ -3,12 +3,17 @@ package cz.muni.fi.pa165.weather.server.service; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import cz.muni.fi.pa165.core.client.AirportApi; +import cz.muni.fi.pa165.core.client.invoker.ApiClient; import cz.muni.fi.pa165.core.client.invoker.ApiException; import cz.muni.fi.pa165.core.client.model.AirportDto; import cz.muni.fi.pa165.weather.server.data.FlightCreationAdvice; import cz.muni.fi.pa165.weather.server.data.HourlyWeatherForecast; import cz.muni.fi.pa165.weather.server.data.WeatherForecast; import cz.muni.fi.pa165.weather.server.data.WeatherReason; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.oauth2.core.OAuth2AccessToken; +import org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthentication; +import org.springframework.security.oauth2.server.resource.introspection.OAuth2IntrospectionAuthenticatedPrincipal; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; @@ -19,7 +24,6 @@ public class WeatherServiceImpl implements WeatherService { private final RestTemplate restTemplate = new RestTemplate(); private final ObjectMapper objectMapper = new ObjectMapper(); - private final AirportApi airportClient = new AirportApi(); private static final String TEMPERATURE_ATTRIBUTE_NAME = "temperature_2m"; private static final String RAIN_ATTRIBUTE_NAME = "rain"; @@ -50,6 +54,13 @@ public class WeatherServiceImpl implements WeatherService { OffsetDateTime arrivalTime ) { try { + var authentication = SecurityContextHolder.getContext().getAuthentication(); + var token = (OAuth2AccessToken) (((BearerTokenAuthentication) authentication).getToken()); + var client = new ApiClient(); + client.setRequestInterceptor((builder -> { + builder.header("Authorization", "Bearer " + token.getTokenValue()); + })); + AirportApi airportClient = new AirportApi(client); AirportDto departureAirportDto = airportClient.getAirportById(departureAirportId); AirportDto arrivalAirportDto = airportClient.getAirportById(arrivalAirportId); -- GitLab