private async Task <HwVaultInfoFromHesDto> GetHardwareVaultInfoAsync(HwVaultInfoFromClientDto dto) { var vault = await _hardwareVaultService.GetVaultByIdAsync(dto.VaultSerialNo); if (vault == null) { throw new HideezException(HideezErrorCode.HesDeviceNotFound); } return(new HwVaultInfoFromHesDto() { OwnerName = vault.Employee?.FullName, OwnerEmail = vault.Employee?.Email, VaultMac = vault.MAC, VaultSerialNo = vault.Id, VaultRfid = vault.RFID, NeedUpdateLicense = vault.HasNewLicense, NeedStateUpdate = await _remoteDeviceConnectionsService.CheckIsNeedUpdateHwVaultStatusAsync(dto), NeedUpdateOSAccounts = vault.HardwareVaultTasks.Any(x => x.Operation == TaskOperation.Primary || x.AccountId == vault.Employee.PrimaryAccountId), NeedUpdateNonOSAccounts = vault.HardwareVaultTasks.Any(x => x.Operation != TaskOperation.Primary && x.AccountId != vault.Employee.PrimaryAccountId) }); }
// Incoming request public async Task <HesResponse <HwVaultInfoFromHesDto> > UpdateHwVaultStatus(HwVaultInfoFromClientDto dto) { try { await ValidateConnectionAsync(); await _remoteDeviceConnectionsService.UpdateHardwareVaultStatusAsync(dto.VaultSerialNo, GetWorkstationId()); var info = await GetHardwareVaultInfoAsync(dto); return(new HesResponse <HwVaultInfoFromHesDto>(info)); } catch (HideezException ex) { _logger.LogInformation($"[{dto.VaultSerialNo}] {ex.Message}"); return(new HesResponse <HwVaultInfoFromHesDto>(ex)); } catch (Exception ex) { _logger.LogError(ex.Message); return(new HesResponse <HwVaultInfoFromHesDto>(ex)); } }
public async Task <bool> CheckIsNeedUpdateHwVaultStatusAsync(HwVaultInfoFromClientDto dto) { var vault = await ValidateAndGetHardwareVaultAsync(dto.VaultSerialNo, dto.IsLinkRequired); switch (vault.Status) { case VaultStatus.Ready: throw new HideezException(HideezErrorCode.HesDeviceNotAssignedToAnyUser); case VaultStatus.Reserved: // Required Link if (dto.IsLinkRequired) { return(true); } // Transition to Active status if (!dto.IsLocked) { return(true); } // Transition to Locked status if (dto.IsLocked && !dto.IsCanUnlock) { return(true); } break; case VaultStatus.Active: // Transition to Locked status if (dto.IsLocked) { return(true); } break; case VaultStatus.Locked: throw new HideezException(HideezErrorCode.HesDeviceLocked); case VaultStatus.Suspended: // Transition to Locked status if (dto.IsLocked && !dto.IsCanUnlock) { return(true); } // Transition to Active status if (!dto.IsLocked) { return(true); } break; case VaultStatus.Deactivated: return(true); case VaultStatus.Compromised: throw new HideezException(HideezErrorCode.HesDeviceCompromised); default: throw new Exception($"Unhandled vault status. ({vault.Status})"); } return(false); }
// Incoming request public async Task <HesResponse <HwVaultInfoFromHesDto> > UpdateHwVaultProperties(HwVaultInfoFromClientDto dto, bool returnInfo = false) { try { await ValidateConnectionAsync(); await _hardwareVaultService.UpdateVaultInfoAsync(dto); switch (dto.ConnectionState) { case HwVaultConnectionState.Offline: _remoteDeviceConnectionsService.OnDeviceDisconnected(dto.VaultSerialNo, GetWorkstationId()); await _employeeService.UpdateLastSeenAsync(dto.VaultSerialNo); await InvokeVaultStateChangedAsync(dto.VaultSerialNo); break; case HwVaultConnectionState.Initializing: _remoteDeviceConnectionsService.OnDeviceConnected(dto.VaultSerialNo, GetWorkstationId(), Clients.Caller); break; case HwVaultConnectionState.Finalizing: break; case HwVaultConnectionState.Online: await InvokeVaultStateChangedAsync(dto.VaultSerialNo); break; } HwVaultInfoFromHesDto info = null; if (returnInfo) { info = await GetHardwareVaultInfoAsync(dto); return(new HesResponse <HwVaultInfoFromHesDto>(info)); } return(new HesResponse <HwVaultInfoFromHesDto>(info)); } catch (HideezException ex) { _logger.LogInformation($"[{dto.VaultSerialNo}] {ex.Message}"); return(new HesResponse <HwVaultInfoFromHesDto>(ex)); } catch (Exception ex) { _logger.LogError(ex.Message); return(new HesResponse <HwVaultInfoFromHesDto>(ex)); } }