private async Task <PlaceProviderSensitiveData> MakeSurePlaceProviderIsAuthenticated(string placeProviderId, IPlaceProviderRepository placeProviderRepository) { var data = await placeProviderRepository.GetPlaceProviderSensitiveData(placeProviderId); if (data.SessionValidity == null || data.SessionValidity.ValidThru.AddMinutes(10) < DateTimeOffset.Now) { // session is going to expire if (data.SessionValidity == null || data.SessionValidity.ValidThru.AddMinutes(10) < DateTimeOffset.Now) { if (data.SessionValidity == null || data.SessionValidity.ValidThru.AddMinutes(1) < DateTimeOffset.Now) { // expired .. login again data.LoginPayload = (await Authenticate(data.EZdravieUser, data.EZdraviePass))?.Payload; if (string.IsNullOrEmpty(data.LoginPayload.User.Login)) { throw new Exception("Unable to authenticate to ehealth"); } } // extend session var extendSessionRequest = new ExtendSessionRequest() { AccessId = data.LoginPayload.Session.SessionId, UserId = data.LoginPayload.User.Id }; data.SessionValidity = await Extendsession(data.LoginPayload.Session.Token, extendSessionRequest); if (data.SessionValidity == null) { data.SessionValidity = new ExtendSessionResponse() { ValidThru = data.LoginPayload.Session.ValidThru }; } if (data.SessionValidity.ValidThru.AddMinutes(1) < DateTimeOffset.Now) { throw new Exception("Unable to prolong the session"); } await placeProviderRepository.SetPlaceProviderSensitiveData(data, false); } } return(data); }
public abstract Task <ExtendSessionResponse> Extendsession(string token, ExtendSessionRequest request);
public override async Task <ExtendSessionResponse> Extendsession(string token, ExtendSessionRequest extendSessionRequest) { var request = new RestSharp.RestRequest($"api/v1/extendsession", RestSharp.Method.POST, RestSharp.DataFormat.Json); request.AddHeader("Authorization", $"Bearer {token}"); //request.AddJsonBody(extendSessionRequest); var body = Serialize(extendSessionRequest); request.AddParameter("application/json", body, ParameterType.RequestBody); await Task.Delay(500); logger.LogInformation($"eHealth: Extendsession"); var response = await client.ExecuteAsync(request); if (!response.IsSuccessful) { throw new Exception(response.Content); } return(JsonConvert.DeserializeObject <Model.EZdravie.ExtendSessionResponse>(response.Content, deserializeSettings)); }
public Task ExtendSessionAsync(string sessionToken, [FromBody] ExtendSessionRequest updateSessionRequest) { return(_sessionClient.ExtendSession(sessionToken, updateSessionRequest.Ttl)); }