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 e540ed49dc2b321c0606fc3ac9e2e4c7607cb842..187127ec2d8d6697f3ef82a8bbe916d740370260 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);