示例#1
0
文件: AppHub.cs 项目: minkione/HES
        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)
            });
        }
示例#2
0
文件: AppHub.cs 项目: minkione/HES
        // 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);
        }
示例#4
0
文件: AppHub.cs 项目: minkione/HES
        // 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));
            }
        }