コード例 #1
0
        public async Task AddProfileAsync(HardwareVault vault)
        {
            var previousProfileTask = await _hardwareVaultTaskRepository
                                      .Query()
                                      .FirstOrDefaultAsync(x => x.HardwareVaultId == vault.Id && x.Operation == TaskOperation.Profile);

            var newProfileTask = new HardwareVaultTask
            {
                CreatedAt       = DateTime.UtcNow,
                Operation       = TaskOperation.Profile,
                Timestamp       = UnixTime.GetUnixTimeUtcNow(),
                HardwareVaultId = vault.Id,
                Password        = vault.MasterPassword,
            };

            using (TransactionScope transactionScope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                if (previousProfileTask != null)
                {
                    await _hardwareVaultTaskRepository.DeleteAsync(previousProfileTask);
                }

                await _hardwareVaultTaskRepository.AddAsync(newProfileTask);

                transactionScope.Complete();
            }
        }
コード例 #2
0
ファイル: RemoteTaskService.cs プロジェクト: minkione/HES
        private async Task ProfileVaultAsync(Device remoteDevice, HardwareVaultTask task)
        {
            var accessParams = await _hardwareVaultService.GetAccessParamsAsync(task.HardwareVaultId);

            var key = ConvertUtils.HexStringToBytes(task.Password);
            await remoteDevice.Access(DateTime.UtcNow, key, accessParams);
        }
コード例 #3
0
ファイル: RemoteTaskService.cs プロジェクト: minkione/HES
        private async Task DeleteAccountAsync(Device remoteDevice, HardwareVaultTask task)
        {
            var account = await _accountService.GetAccountByIdNoTrackingAsync(task.AccountId);

            bool isPrimary = account.Employee.PrimaryAccountId == task.AccountId;

            var storageId = new StorageId(account.StorageId);
            var pm        = new DevicePasswordManager(remoteDevice, null);
            await pm.DeleteAccount(storageId, isPrimary);
        }
コード例 #4
0
ファイル: RemoteTaskService.cs プロジェクト: minkione/HES
        private async Task SetAccountAsPrimaryAsync(Device remoteDevice, HardwareVaultTask task)
        {
            var account = await _accountService.GetAccountByIdNoTrackingAsync(task.AccountId);

            var storageId = new StorageId(account.StorageId);
            var pm        = new DevicePasswordManager(remoteDevice, null);
            await pm.SaveOrUpdateAccount(storageId, task.Timestamp, null, null, null, null, null, null, true, new AccountFlagsOptions()
            {
                IsReadOnly = true
            });
        }
コード例 #5
0
ファイル: RemoteTaskService.cs プロジェクト: minkione/HES
        private async Task AddAccountAsync(Device remoteDevice, HardwareVaultTask task)
        {
            var account = await _accountService.GetAccountByIdNoTrackingAsync(task.AccountId);

            bool isPrimary = account.Employee.PrimaryAccountId == task.AccountId;

            var pm = new DevicePasswordManager(remoteDevice, null);
            await pm.SaveOrUpdateAccount(new StorageId(account.StorageId), task.Timestamp, account.Name, task.Password, account.Login, task.OtpSecret, account.Apps, account.Urls, isPrimary, new AccountFlagsOptions()
            {
                IsReadOnly = true
            });
        }
コード例 #6
0
ファイル: RemoteTaskService.cs プロジェクト: minkione/HES
        private async Task ExecuteRemoteTask(Device remoteDevice, HardwareVaultTask task)
        {
            switch (task.Operation)
            {
            case TaskOperation.Create:
                if (task.Account.UpdateInActiveDirectory)
                {
                    var ldapSettings = await _appSettingsService.GetLdapSettingsAsync();

                    if (ldapSettings?.Password == null)
                    {
                        throw new Exception("Active Directory Credentials Required");     // TODO use Communication.dll ex
                    }
                    await _ldapService.SetUserPasswordAsync(task.HardwareVault.EmployeeId, task.Password, ldapSettings);
                }
                await AddAccountAsync(remoteDevice, task);

                break;

            case TaskOperation.Update:
                await UpdateAccountAsync(remoteDevice, task);

                break;

            case TaskOperation.Delete:
                await DeleteAccountAsync(remoteDevice, task);

                break;

            case TaskOperation.Primary:
                await SetAccountAsPrimaryAsync(remoteDevice, task);

                break;

            case TaskOperation.Profile:
                await ProfileVaultAsync(remoteDevice, task);

                break;
            }
        }
コード例 #7
0
        public async Task AddPrimaryAsync(string vaultId, string accountId)
        {
            var previousTask = await _hardwareVaultTaskRepository
                               .Query()
                               .FirstOrDefaultAsync(x => x.HardwareVaultId == vaultId && x.Operation == TaskOperation.Primary);

            if (previousTask != null)
            {
                await _hardwareVaultTaskRepository.DeleteAsync(previousTask);
            }

            var task = new HardwareVaultTask()
            {
                CreatedAt       = DateTime.UtcNow,
                Operation       = TaskOperation.Primary,
                Timestamp       = UnixTime.GetUnixTimeUtcNow(),
                HardwareVaultId = vaultId,
                AccountId       = accountId
            };

            await _hardwareVaultTaskRepository.AddAsync(task);
        }
コード例 #8
0
 public async Task AddTaskAsync(HardwareVaultTask vaultTask)
 {
     await _hardwareVaultTaskRepository.AddAsync(vaultTask);
 }
コード例 #9
0
 public async Task DeleteTaskAsync(HardwareVaultTask vaultTask)
 {
     await _hardwareVaultTaskRepository.DeleteAsync(vaultTask);
 }