async public Task <bool> CreateLockerAsync(SecretsLocker secretsLocker, CancellationToken cancellationToken) { if (String.IsNullOrWhiteSpace(secretsLocker?.Name)) { throw new StatusMessageException("Invalid locker name"); } var di = new DirectoryInfo($"{ _rootPath }/{ secretsLocker.Name }"); if (di.Exists) { throw new StatusMessageException($"Locker { secretsLocker.Name } already exists"); } di.Create(); byte[] buffer = Encoding.UTF8.GetBytes( _cryptoService.EncryptText(_blobSerializer.SerializeObject(secretsLocker))); using (var fs = new FileStream($"{ di.FullName }/_item.meta", FileMode.OpenOrCreate, FileAccess.Write, FileShare.None, buffer.Length, true)) { await fs.WriteAsync(buffer, 0, buffer.Length); } return(true); }
async public Task <bool> UpadteLockerAsync(SecretsLocker secretsLocker, CancellationToken cancellationToken) { var fi = new FileInfo($"{ _rootPath }/{ secretsLocker.Name }/_item.meta"); if (!fi.Exists) { throw new StatusMessageException($"Locker { secretsLocker.Name } not exists"); } ; byte[] buffer = Encoding.UTF8.GetBytes( _cryptoService.EncryptText(_blobSerializer.SerializeObject(secretsLocker))); fi.Delete(); using (var fs = new FileStream($"{ fi.FullName }", FileMode.OpenOrCreate, FileAccess.Write, FileShare.None, buffer.Length, true)) { await fs.WriteAsync(buffer, 0, buffer.Length); } return(true); }
async public Task <IActionResult> OnPostAsync() { string lockerName = String.Empty; return(await SecureHandlerAsync(async() => { if (!ModelState.IsValid) { throw new StatusMessageException($"Type a valid locker name."); } var locker = new SecretsLocker() { Name = CreateLockerInput.Name, Description = CreateLockerInput.Description }; await _secretsVaultDb.CreateLockerAsync(locker, CancellationToken.None); lockerName = locker.Name; }, onFinally : () => RedirectToPage("EditLocker/Index", new { id = lockerName }), successMessage : "", onException : (ex) => Page())); }