public JsonResult GetNodeItems(string parentId)
        {
            var treeNodes = new List <TreeNode>();

            using (var masterPassword = SessionContext.GetMasterPassword())
            {
                var currentVault = SessionContext.GetCurrentVaultName();

                var vaultRepository = VaultRepositoryFactory.CreateInstance();
                var vault           = vaultRepository.GetVault(currentVault, masterPassword);
                if (parentId == "#")
                {
                    //Root
                    treeNodes.AddRange(vault.Groups.Select(group => CreateTreeNode(group.Id.ToString(), group.Name, parentId, group.Groups.Count > 0, true, group.Entries.Count)));
                }
                else
                {
                    var vaultManipulator = VaultManipulatorFactory.CreateInstance(vault);
                    var parentGroup      = vaultManipulator.GetGroupById(Guid.Parse(parentId));

                    treeNodes.AddRange(parentGroup.Groups.Select(group => CreateTreeNode(group.Id.ToString(), group.Name, parentId, group.Groups.Count > 0, false, group.Entries.Count)));
                    //treeNodes.AddRange(parentGroup.Entries.Select(entry => CreateTreeNode(entry.Id.ToString(), entry.Title, parentId, false, false, false)));
                }

                return(Json(treeNodes));
            }
        }
        public LoginPresenter(ILoginView view, IServerCommunicator serverCommunicator, IMobileConfigurationReader mobileConfigurationReader, INavigationManager navigationManager,
                              IFileSystem fileSystem, IVaultRepositoryFactory vaultRepositoryFactory, ISynchronizer synchronizer, IAlertDisplayer alertDisplayer,
                              ISecureStringConverter secureStringConverter, IApplicationContext applicationContext)
        {
            this.View = view;
            this.MobileConfigurationReader = mobileConfigurationReader;
            this.NavigationManager         = navigationManager;
            this.FileSystem             = fileSystem;
            this.Synchronizer           = synchronizer;
            this.VaultRepositoryFactory = vaultRepositoryFactory;
            this.AlertDisplayer         = alertDisplayer;
            this.SecureStringConverter  = secureStringConverter;
            this.ApplicationContext     = applicationContext;

            var config = MobileConfigurationReader.GetConfiguration();

            this.View.SyncButtonVisible = config.ApplicationMode == ApplicationMode.Client;
            var repository = VaultRepositoryFactory.CreateInstance();
            var vaults     = repository.GetAllVaultNames();

            this.View.VaultNames        = vaults;
            this.View.SelectedVaultName = vaults.FirstOrDefault();


            this.View.Login += OnLogin;
            this.View.NavigateToConfiguration += OnNavigateToConfiguration;
            this.View.Sync += OnSync;
            this.Synchronizer.StatusUpdate += (message) => this.View.ActivityIndicatorText = message;
            this.View.Initialize           += OnInitialize;
        }
        public async void OnSync()
        {
            this.View.ActivityIndicatorText = StringResources.ContactingServer;
            this.View.DisableUI();
            this.View.ShowLoadingIndicator();

            bool success = await this.Synchronizer.Synchronize();

            if (success)
            {
                var repository = VaultRepositoryFactory.CreateInstance();
                var vaults     = repository.GetAllVaultNames();
                this.View.VaultNames        = vaults;
                this.View.SelectedVaultName = vaults.FirstOrDefault();
            }

            this.View.HideLoadingIndicator();
            this.View.EnableUI();
        }
        public IActionResult Index(bool expired)
        {
            if (this.AuthorizationLogic.IsLoggedIn)
            {
                return(RedirectToAction("Index", "VaultExplorer"));
            }

            var repository = VaultRepositoryFactory.CreateInstance();
            var vaults     = repository.GetAllVaultNames();

            if (vaults.Count() == 0)
            {
                return(RedirectToAction("Create", "Vault"));
            }

            var viewModel = new LoginIndexViewModel()
            {
                VaultNames = vaults,
                Expired    = expired
            };

            return(View(viewModel));
        }
        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();
            }
        }
예제 #6
0
        public JsonResult GetVaultsInfo()
        {
            var vaultRepository = VaultRepositoryFactory.CreateInstance();
            var vaultNames      = vaultRepository.GetAllVaultNames();
            var result          = new List <VaultInfo>();

            foreach (string vault in vaultNames)
            {
                var metadata = vaultRepository.GetVaultMetadata(vault);
                result.Add(new VaultInfo
                {
                    VaultName      = vault,
                    CreateLocation = metadata.CreateLocation,
                    Version        = metadata.Version
                });
            }

            return(Json(result));
        }