public async Task InvokeAsync(HttpContext httpContext)
        {
            if (!string.IsNullOrEmpty(_loginManager.Token))
            {
                var checkAccessToken = await _tokenApiClient.ValidateAsync(_loginManager.Token);

                var checkAccessTokenResult = await checkAccessToken.Content.ReadAsStringAsync();

                if (!Convert.ToBoolean(checkAccessTokenResult))
                {
                    var newTokensAsync = await _tokenApiClient.RefreshAsync(
                        new TokenApiInputModel()
                    {
                        AccessToken  = _loginManager.Token,
                        RefreshToken = _loginManager.RefreshToken
                    }
                        );

                    if (newTokensAsync.StatusCode != System.Net.HttpStatusCode.Unauthorized)
                    {
                        var newTokensResult = await newTokensAsync.Content.ReadAsStringAsync();

                        var newTokens = JsonConvert.DeserializeObject <TokenOutputModel>(newTokensResult);

                        _loginManager.Token        = newTokens.AccessToken;
                        _loginManager.RefreshToken = newTokens.RefreshToken;
                    }
                    else
                    {
                        _loginManager.Logout();
                    }
                }

                httpContext.Request.Headers.Add("Authorization", "Bearer " + _loginManager.Token);
            }

            await _next(httpContext); // calling next middleware
        }