public JsonResult AddOrEditGroup(GroupEditViewModel model) { SyncContext.Lock(); try { using (var masterPassword = SessionContext.GetMasterPassword()) { if (ModelState.IsValid) { var currentVaultName = SessionContext.GetCurrentVaultName(); var vaultRepository = VaultRepositoryFactory.CreateInstance(); var vault = vaultRepository.GetVault(currentVaultName, masterPassword); var vaultManipulator = this.VaultManipulatorFactory.CreateInstance(vault); var group = vaultManipulator.GetGroupById(Guid.Parse(model.Id)); bool isNew = false; if (group == null) { group = new Model.Group(); group.Id = Guid.Parse(model.Id); isNew = true; } group.Name = model.Name; if (isNew) { Guid?parentId = model.ParentId == "#" ? null : (Guid?)Guid.Parse(model.ParentId); vaultManipulator.AddGroup(parentId, group); } else { vaultManipulator.UpdateGroup(group); } vaultRepository.SaveVault(vault, masterPassword); return(Json(new { success = true })); } else { return(Json(new { success = false })); } } } finally { SyncContext.Release(); } }
public IActionResult Rename(VaultRenameViewModel model) { SyncContext.Lock(); try { using (var masterPassword = SessionContext.GetMasterPassword()) { if (ModelState.IsValid) { var vaultRepository = VaultRepositoryFactory.CreateInstance(); if (vaultRepository.VaultExists(model.NewVaultName)) { ModelState.AddModelError(nameof(model.NewVaultName), StringResources.VaultNameAlreadyExists); return(View(model)); } var currentVaultName = SessionContext.GetCurrentVaultName(); var vault = vaultRepository.GetVault(currentVaultName, masterPassword); vault.Name = model.NewVaultName; vaultRepository.SaveVault(vault, masterPassword); vaultRepository.DeleteVault(currentVaultName); SessionContext.SetCurrentVaultName(model.NewVaultName); return(RedirectToAction("Index", "VaultExplorer")); } else { return(View(model)); } } } finally { SyncContext.Release(); } }