/// <summary> /// Gets the public available Users information /// </summary> /// <param name="request">The request.</param> /// <returns>System.Object.</returns> public object Get(GetPublicUsers request) { var result = _userManager .Users .Where(item => !item.Policy.IsDisabled); if (ServerConfigurationManager.Configuration.IsStartupWizardCompleted) { var deviceId = _authContext.GetAuthorizationInfo(Request).DeviceId; result = result.Where(item => !item.Policy.IsHidden); if (!string.IsNullOrWhiteSpace(deviceId)) { result = result.Where(i => _deviceManager.CanAccessDevice(i, deviceId)); } if (!_networkManager.IsInLocalNetwork(Request.RemoteIp)) { result = result.Where(i => i.Policy.EnableRemoteAccess); } } return(ToOptimizedResult(result .OrderBy(u => u.Name) .Select(i => _userManager.GetPublicUserDto(i, Request.RemoteIp)) .ToArray() )); }
public ActionResult <IEnumerable <SessionInfo> > GetSessions( [FromQuery] Guid?controllableByUserId, [FromQuery] string?deviceId, [FromQuery] int?activeWithinSeconds) { var result = _sessionManager.Sessions; if (!string.IsNullOrEmpty(deviceId)) { result = result.Where(i => string.Equals(i.DeviceId, deviceId, StringComparison.OrdinalIgnoreCase)); } if (controllableByUserId.HasValue && !controllableByUserId.Equals(Guid.Empty)) { result = result.Where(i => i.SupportsRemoteControl); var user = _userManager.GetUserById(controllableByUserId.Value); if (!user.HasPermission(PermissionKind.EnableRemoteControlOfOtherUsers)) { result = result.Where(i => i.UserId.Equals(Guid.Empty) || i.ContainsUser(controllableByUserId.Value)); } if (!user.HasPermission(PermissionKind.EnableSharedDeviceControl)) { result = result.Where(i => !i.UserId.Equals(Guid.Empty)); } if (activeWithinSeconds.HasValue && activeWithinSeconds.Value > 0) { var minActiveDate = DateTime.UtcNow.AddSeconds(0 - activeWithinSeconds.Value); result = result.Where(i => i.LastActivityDate >= minActiveDate); } result = result.Where(i => { if (!string.IsNullOrWhiteSpace(i.DeviceId)) { if (!_deviceManager.CanAccessDevice(user, i.DeviceId)) { return(false); } } return(true); }); } return(Ok(result)); }
/// <summary> /// Gets the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>System.Object.</returns> public object Get(GetSessions request) { var result = _sessionManager.Sessions; if (!string.IsNullOrEmpty(request.DeviceId)) { result = result.Where(i => string.Equals(i.DeviceId, request.DeviceId, StringComparison.OrdinalIgnoreCase)); } if (!request.ControllableByUserId.Equals(Guid.Empty)) { result = result.Where(i => i.SupportsRemoteControl); var user = _userManager.GetUserById(request.ControllableByUserId); if (!user.HasPermission(PermissionKind.EnableRemoteControlOfOtherUsers)) { result = result.Where(i => i.UserId.Equals(Guid.Empty) || i.ContainsUser(request.ControllableByUserId)); } if (!user.HasPermission(PermissionKind.EnableSharedDeviceControl)) { result = result.Where(i => !i.UserId.Equals(Guid.Empty)); } if (request.ActiveWithinSeconds.HasValue && request.ActiveWithinSeconds.Value > 0) { var minActiveDate = DateTime.UtcNow.AddSeconds(0 - request.ActiveWithinSeconds.Value); result = result.Where(i => i.LastActivityDate >= minActiveDate); } result = result.Where(i => { var deviceId = i.DeviceId; if (!string.IsNullOrWhiteSpace(deviceId)) { if (!_deviceManager.CanAccessDevice(user, deviceId)) { return(false); } } return(true); }); } return(ToOptimizedResult(result.ToArray())); }
private void UpdateDeviceAccess(User user) { var existing = _authRepo.Get(new AuthenticationInfoQuery { UserId = user.Id }).Items; foreach (var authInfo in existing) { if (!string.IsNullOrEmpty(authInfo.DeviceId) && !_deviceManager.CanAccessDevice(user, authInfo.DeviceId)) { _sessionManager.Logout(authInfo); } } }
private async Task UpdateDeviceAccess(User user) { var existing = (await _deviceManager.GetDevices(new DeviceQuery { UserId = user.Id }).ConfigureAwait(false)).Items; foreach (var device in existing) { if (!string.IsNullOrEmpty(device.DeviceId) && !_deviceManager.CanAccessDevice(user, device.DeviceId)) { await _sessionManager.Logout(device).ConfigureAwait(false); } } }
private object Get(GetUsers request, bool filterByDevice, bool filterByNetwork) { var users = _userManager.Users; if (request.IsDisabled.HasValue) { users = users.Where(i => i.Policy.IsDisabled == request.IsDisabled.Value); } if (request.IsHidden.HasValue) { users = users.Where(i => i.Policy.IsHidden == request.IsHidden.Value); } if (request.IsGuest.HasValue) { users = users.Where(i => (i.ConnectLinkType.HasValue && i.ConnectLinkType.Value == UserLinkType.Guest) == request.IsGuest.Value); } if (filterByDevice) { var deviceId = _authContext.GetAuthorizationInfo(Request).DeviceId; if (!string.IsNullOrWhiteSpace(deviceId)) { users = users.Where(i => _deviceManager.CanAccessDevice(i, deviceId)); } } if (filterByNetwork) { if (!_networkManager.IsInLocalNetwork(Request.RemoteIp)) { users = users.Where(i => i.Policy.EnableRemoteAccess); } } var result = users .OrderBy(u => u.Name) .Select(i => _userManager.GetUserDto(i, Request.RemoteIp)) .ToArray(); return(ToOptimizedResult(result)); }
/// <summary> /// Gets the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>System.Object.</returns> public object Get(GetSessions request) { var result = _sessionManager.Sessions.Where(i => i.IsActive); if (!string.IsNullOrEmpty(request.DeviceId)) { result = result.Where(i => string.Equals(i.DeviceId, request.DeviceId, StringComparison.OrdinalIgnoreCase)); } if (!string.IsNullOrWhiteSpace(request.ControllableByUserId)) { result = result.Where(i => i.SupportsMediaControl); var user = _userManager.GetUserById(request.ControllableByUserId); if (!user.Policy.EnableRemoteControlOfOtherUsers) { result = result.Where(i => !i.UserId.HasValue || i.ContainsUser(request.ControllableByUserId)); } if (!user.Policy.EnableSharedDeviceControl) { result = result.Where(i => i.UserId.HasValue); } result = result.Where(i => { var deviceId = i.DeviceId; if (!string.IsNullOrWhiteSpace(deviceId)) { if (!_deviceManager.CanAccessDevice(user.Id.ToString("N"), deviceId)) { return(false); } } return(true); }); } return(ToOptimizedResult(result.Select(_sessionManager.GetSessionInfoDto).ToList())); }
private async Task <IEnumerable <UserDto> > Get(bool?isHidden, bool?isDisabled, bool filterByDevice, bool filterByNetwork) { var users = _userManager.Users; if (isDisabled.HasValue) { users = users.Where(i => i.HasPermission(PermissionKind.IsDisabled) == isDisabled.Value); } if (isHidden.HasValue) { users = users.Where(i => i.HasPermission(PermissionKind.IsHidden) == isHidden.Value); } if (filterByDevice) { var deviceId = (await _authContext.GetAuthorizationInfo(Request).ConfigureAwait(false)).DeviceId; if (!string.IsNullOrWhiteSpace(deviceId)) { users = users.Where(i => _deviceManager.CanAccessDevice(i, deviceId)); } } if (filterByNetwork) { if (!_networkManager.IsInLocalNetwork(HttpContext.GetNormalizedRemoteIp())) { users = users.Where(i => i.HasPermission(PermissionKind.EnableRemoteAccess)); } } var result = users .OrderBy(u => u.Username) .Select(i => _userManager.GetUserDto(i, HttpContext.GetNormalizedRemoteIp().ToString())); return(result); }
private object Get(GetUsers request, bool filterByDevice) { var users = _userManager.Users; if (request.IsDisabled.HasValue) { users = users.Where(i => i.Policy.IsDisabled == request.IsDisabled.Value); } if (request.IsHidden.HasValue) { users = users.Where(i => i.Policy.IsHidden == request.IsHidden.Value); } if (request.IsGuest.HasValue) { users = users.Where(i => (i.ConnectLinkType.HasValue && i.ConnectLinkType.Value == UserLinkType.Guest) == request.IsGuest.Value); } if (filterByDevice) { var deviceId = AuthorizationContext.GetAuthorizationInfo(Request).DeviceId; if (!string.IsNullOrWhiteSpace(deviceId)) { users = users.Where(i => _deviceManager.CanAccessDevice(i.Id.ToString("N"), deviceId)); } } var result = users .OrderBy(u => u.Name) .Select(i => _userManager.GetUserDto(i, Request.RemoteIp)) .ToList(); return(ToOptimizedSerializedResultUsingCache(result)); }