Ejemplo n.º 1
0
        public async Task <string> LogOffUser(LogOffUserQuery logOffUserQuery)
        {
            _logger.LogInformation($"Make api call to log off user session of session id {logOffUserQuery.sessionId}");
            string token = Request.Headers["Authorization"];

            return(await _userSessionService.LogOffUserSession(token, logOffUserQuery).ConfigureAwait(false));
        }
        public async Task <string> LogOffUserSession(string accessToken, LogOffUserQuery logOffUserQuery)
        {
            _logger.LogInformation($"Enter into service call to log off user session of {logOffUserQuery.sessionId}");

            var key    = logOffUserQuery;
            var result = await _cache.GetOrCreateAsync(key, async entry =>
            {
                var url     = string.Empty;
                var Content = new StringContent(JsonConvert.SerializeObject(logOffUserQuery), Encoding.UTF8, "application/json");
                url         = $"{_brokerUrl}RdsManagement/V1/TenantGroups/{logOffUserQuery.tenantGroupName}/Tenants/{logOffUserQuery.tenantName}/HostPools/{logOffUserQuery.hostPoolName}/SessionHosts/{logOffUserQuery.sessionHostName}/Sessions/{logOffUserQuery.sessionId}/actions/logoff-user";
                var reply   = await PostRequest(url, JsonConvert.SerializeObject(logOffUserQuery), accessToken).ConfigureAwait(false);
                // Set cache expiration
                entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(2);
                return(reply);
            }).ConfigureAwait(false);

            return(result);
        }
        public async Task <IActionResult> LogOffUserSession(DiagnoseDetailPageViewModel data)
        {
            var viewData = new LogOffUserQuery();

            tenantGroupName = HttpContext.Session.Get <string>("SelectedTenantGroupName");
            tenant          = HttpContext.Session.Get <string>("SelectedTenantName");
            var refreshtoken = await HttpContext.GetTokenAsync("refresh_token").ConfigureAwait(false);

            accessToken = _commonService.GetAccessTokenWVD(refreshtoken); //await HttpContext.GetTokenAsync("access_token");

            var messageStatus = new List <MessageStatus>();

            if (data.UserSessions.Where(x => x.IsSelected == true).ToList().Count > 0)
            {
                foreach (var item in data.UserSessions.Where(x => x.IsSelected == true).ToList())
                {
                    var logOffUserQuery = new LogOffUserQuery()
                    {
                        tenantGroupName = item.tenantGroupName,
                        tenantName      = item.tenantName,
                        hostPoolName    = item.hostPoolName,
                        sessionHostName = item.sessionHostName,
                        sessionId       = item.sessionId,
                        adUserName      = item.adUserName
                    };
                    var Content = new StringContent(JsonConvert.SerializeObject(logOffUserQuery), Encoding.UTF8, "application/json");
                    _logger.LogInformation($"Service Call to log off user session ");
                    // var response = await client.PostAsync($"SessionHost/LogOffUser", Content);
                    var response = await _userSessionService.LogOffUserSession(accessToken, logOffUserQuery).ConfigureAwait(false);

                    if (response == HttpStatusCode.OK.ToString() || response == "Success")
                    {
                        messageStatus.Add(new MessageStatus()
                        {
                            Message = $"Log off successfully for {item.adUserName} user session.",
                            Status  = "Success"
                        });
                    }
                    else if (response == HttpStatusCode.Forbidden.ToString() || response == HttpStatusCode.Unauthorized.ToString())
                    {
                        messageStatus.Add(new MessageStatus()
                        {
                            Message = $"Failed to log off  {item.adUserName} . You don't have permissions to log off user.",
                            Status  = "Error"
                        });
                    }
                    else
                    {
                        messageStatus.Add(new MessageStatus()
                        {
                            Message = $"Failed to logoff {item.adUserName} user session.",
                            Status  = "Error"
                        });
                    }
                }
                ViewBag.ErrorMsg = "";
            }
            else
            {
                ViewBag.ErrorMsg = "Please select at least one user";
            }
            await Task.Delay(1500); // delay the process for 1.5 second to get current list of user sessions


            return(View("ActivityHostDetails", new DiagnoseDetailPageViewModel()
            {
                Title = string.Empty,
                Message = string.Empty,
                SendMsgStatuses = messageStatus,
                ConnectionActivity = data.ConnectionActivity,
                ShowConnectedUser = true,
                ShowMessageForm = false,
                UserSessions = await GetUserSessions(accessToken, tenantGroupName, tenant, data.ConnectionActivity.SessionHostPoolName, data.ConnectionActivity.SessionHostName).ConfigureAwait(false),
                VMPerformance = await GetVMPerformance(data.ConnectionActivity.SessionHostName).ConfigureAwait(false)
            }));
        }