예제 #1
0
            public EntryVm Handle(CreateEntryCommand message)
            {
                if (!_database.IsOpen)
                {
                    throw new DatabaseClosedException();
                }

                var entry   = _database.CreateEntry(message.ParentGroup.Id);
                var entryVm = _mapper.Map <EntryVm>(entry);

                message.ParentGroup.Entries.Add(entryVm);
                return(entryVm);
            }
예제 #2
0
            public async Task Handle(ImportFromCsvCommand message)
            {
                if (!_database.IsOpen)
                {
                    throw new DatabaseClosedException();
                }

                var fileContents = await _file.ReadTextFile(message.FilePath);

                for (var index = message.HasHeaderRow ? 1 : 0; index < fileContents.Count; index++)
                {
                    var line   = fileContents[index];
                    var fields = line.Split(message.Delimiter);

                    var entry = _database.CreateEntry(message.DestinationGroupId);
                    for (var i = 0; i < fields.Length; i++)
                    {
                        var fieldMapping = message.FieldMappings[i];
                        await _database.UpdateEntry(entry.Id, fieldMapping, fields[i], fieldMapping == EntryFieldName.Password);
                    }
                }
            }
예제 #3
0
            public async Task Handle(CreateDatabaseCommand message)
            {
                if (_database.IsDirty)
                {
                    throw new DatabaseOpenException();
                }

                var version = DatabaseVersion.V2;

                switch (message.Version)
                {
                case "4":
                    version = DatabaseVersion.V4;
                    break;

                case "3":
                    version = DatabaseVersion.V3;
                    break;
                }

                await _database.Create(new Credentials
                {
                    KeyFileContents = !string.IsNullOrEmpty(message.KeyFilePath) ? await _file.ReadBinaryFile(message.KeyFilePath) : null,
                    Password        = message.Password
                }, message.Name, version);

                _database.FileAccessToken = message.FilePath;

                if (message.CreateSampleData)
                {
                    var bankingGroup = _database.CreateGroup(_database.RootGroupId, "Banking");
                    bankingGroup.Icon = Icon.Shop;
                    _database.UpdateGroup(bankingGroup);

                    var emailGroup = _database.CreateGroup(_database.RootGroupId, "Email");
                    emailGroup.Icon = Icon.Mail;
                    _database.UpdateGroup(emailGroup);

                    var internetGroup = _database.CreateGroup(_database.RootGroupId, "Internet");
                    internetGroup.Icon = Icon.World;
                    _database.UpdateGroup(internetGroup);

                    var sample1 = _database.CreateEntry(_database.RootGroupId);
                    await _database.UpdateEntry(sample1.Id, EntryFieldName.Title, "Sample Entry", false);

                    await _database.UpdateEntry(sample1.Id, EntryFieldName.UserName, "Username", false);

                    await _database.UpdateEntry(sample1.Id, EntryFieldName.Password, "Password", true);

                    await _database.UpdateEntry(sample1.Id, EntryFieldName.Url, "https://keepass.info/", false);

                    await _database.UpdateEntry(sample1.Id, EntryFieldName.Notes, "You may safely delete this sample", false);

                    var sample2 = _database.CreateEntry(_database.RootGroupId);
                    await _database.UpdateEntry(sample2.Id, EntryFieldName.Title, "Sample Entry #2", false);

                    await _database.UpdateEntry(sample2.Id, EntryFieldName.UserName, "Michael321", false);

                    await _database.UpdateEntry(sample2.Id, EntryFieldName.Password, "12345", true);

                    await _database.UpdateEntry(sample2.Id, EntryFieldName.Url, "https://keepass.info/help/kb/testform.html", false);
                }
            }