diff --git a/ModernKeePass.Application/Application.csproj b/ModernKeePass.Application/Application.csproj
index b2def2c..813b769 100644
--- a/ModernKeePass.Application/Application.csproj
+++ b/ModernKeePass.Application/Application.csproj
@@ -54,15 +54,18 @@
-
+
+
+
+
+
+
-
-
@@ -81,14 +84,19 @@
+
+
+
+
+
+
-
+
+
+
+
+
-
-
-
-
-
@@ -97,7 +105,6 @@
-
diff --git a/ModernKeePass.Application/ApplicationModule.cs b/ModernKeePass.Application/ApplicationModule.cs
index df6a8fc..b891e03 100644
--- a/ModernKeePass.Application/ApplicationModule.cs
+++ b/ModernKeePass.Application/ApplicationModule.cs
@@ -12,7 +12,7 @@ namespace ModernKeePass.Application
protected override void Load(ContainerBuilder builder)
{
// Register Automapper profiles
- builder.RegisterType().As();
+ builder.RegisterType().As();
// Register Mediatr
builder
diff --git a/ModernKeePass.Application/Common/Mappings/MappingProfiles.cs b/ModernKeePass.Application/Common/Mappings/MappingProfiles.cs
deleted file mode 100644
index 4467ddf..0000000
--- a/ModernKeePass.Application/Common/Mappings/MappingProfiles.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using AutoMapper;
-using ModernKeePass.Application.Database.Models;
-using ModernKeePass.Application.Entry.Models;
-using ModernKeePass.Application.Group.Models;
-
-namespace ModernKeePass.Application.Common.Mappings
-{
- public class MappingProfiles: Profile
- {
- public void ApplyMappings()
- {
- new EntryVm().Mapping(this);
- new GroupVm().Mapping(this);
- }
- }
-}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Cryptography/Models/CipherVm.cs b/ModernKeePass.Application/Cryptography/Models/CipherVm.cs
new file mode 100644
index 0000000..2a58e62
--- /dev/null
+++ b/ModernKeePass.Application/Cryptography/Models/CipherVm.cs
@@ -0,0 +1,18 @@
+using AutoMapper;
+using ModernKeePass.Application.Common.Mappings;
+using ModernKeePass.Domain.Entities;
+
+namespace ModernKeePass.Application.Cryptography.Models
+{
+ public class CipherVm: IMapFrom
+ {
+ public string Id { get; set; }
+ public string Name { get; set; }
+ public void Mapping(Profile profile)
+ {
+ profile.CreateMap()
+ .ForMember(d => d.Id, opts => opts.MapFrom(s => s.Id))
+ .ForMember(d => d.Name, opts => opts.MapFrom(s => s.Name));
+ }
+ }
+}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Cryptography/Models/KeyDerivationVm.cs b/ModernKeePass.Application/Cryptography/Models/KeyDerivationVm.cs
new file mode 100644
index 0000000..e1662f6
--- /dev/null
+++ b/ModernKeePass.Application/Cryptography/Models/KeyDerivationVm.cs
@@ -0,0 +1,19 @@
+using AutoMapper;
+using ModernKeePass.Application.Common.Mappings;
+using ModernKeePass.Domain.Entities;
+
+namespace ModernKeePass.Application.Cryptography.Models
+{
+ public class KeyDerivationVm : IMapFrom
+ {
+ public string Id { get; set; }
+ public string Name { get; set; }
+
+ public void Mapping(Profile profile)
+ {
+ profile.CreateMap()
+ .ForMember(d => d.Id, opts => opts.MapFrom(s => s.Id))
+ .ForMember(d => d.Name, opts => opts.MapFrom(s => s.Name));
+ }
+ }
+}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Cryptography/Queries/GetCiphers/GetCiphersQuery.cs b/ModernKeePass.Application/Cryptography/Queries/GetCiphers/GetCiphersQuery.cs
new file mode 100644
index 0000000..2f9866b
--- /dev/null
+++ b/ModernKeePass.Application/Cryptography/Queries/GetCiphers/GetCiphersQuery.cs
@@ -0,0 +1,28 @@
+using System.Collections.Generic;
+using AutoMapper;
+using MediatR;
+using ModernKeePass.Application.Common.Interfaces;
+using ModernKeePass.Application.Cryptography.Models;
+
+namespace ModernKeePass.Application.Cryptography.Queries.GetCiphers
+{
+ public class GetCiphersQuery: IRequest>
+ {
+ public class GetCiphersQueryHandler: IRequestHandler>
+ {
+ private readonly ICryptographyClient _cryptography;
+ private readonly IMapper _mapper;
+
+ public GetCiphersQueryHandler(ICryptographyClient cryptography, IMapper mapper)
+ {
+ _cryptography = cryptography;
+ _mapper = mapper;
+ }
+
+ public IEnumerable Handle(GetCiphersQuery message)
+ {
+ yield return _mapper.Map(_cryptography.Ciphers);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Cryptography/Queries/GetCompressions/GetCompressionsQuery.cs b/ModernKeePass.Application/Cryptography/Queries/GetCompressions/GetCompressionsQuery.cs
new file mode 100644
index 0000000..14621ef
--- /dev/null
+++ b/ModernKeePass.Application/Cryptography/Queries/GetCompressions/GetCompressionsQuery.cs
@@ -0,0 +1,25 @@
+using System.Collections.Generic;
+using System.Linq;
+using MediatR;
+using ModernKeePass.Application.Common.Interfaces;
+
+namespace ModernKeePass.Application.Cryptography.Queries.GetCompressions
+{
+ public class GetCompressionsQuery : IRequest>
+ {
+ public class GetCompressionsQueryHandler : IRequestHandler>
+ {
+ private readonly ICryptographyClient _cryptography;
+
+ public GetCompressionsQueryHandler(ICryptographyClient cryptography)
+ {
+ _cryptography = cryptography;
+ }
+
+ public IEnumerable Handle(GetCompressionsQuery message)
+ {
+ return _cryptography.CompressionAlgorithms.OrderBy(c => c);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Cryptography/Queries/GetKeyDerivations/GetKeyDerivationsQuery.cs b/ModernKeePass.Application/Cryptography/Queries/GetKeyDerivations/GetKeyDerivationsQuery.cs
new file mode 100644
index 0000000..9c72210
--- /dev/null
+++ b/ModernKeePass.Application/Cryptography/Queries/GetKeyDerivations/GetKeyDerivationsQuery.cs
@@ -0,0 +1,28 @@
+using System.Collections.Generic;
+using AutoMapper;
+using MediatR;
+using ModernKeePass.Application.Common.Interfaces;
+using ModernKeePass.Application.Cryptography.Models;
+
+namespace ModernKeePass.Application.Cryptography.Queries.GetKeyDerivations
+{
+ public class GetKeyDerivationsQuery : IRequest>
+ {
+ public class GetKeyDerivationsQueryHandler : IRequestHandler>
+ {
+ private readonly ICryptographyClient _cryptography;
+ private readonly IMapper _mapper;
+
+ public GetKeyDerivationsQueryHandler(ICryptographyClient cryptography, IMapper mapper)
+ {
+ _cryptography = cryptography;
+ _mapper = mapper;
+ }
+
+ public IEnumerable Handle(GetKeyDerivationsQuery message)
+ {
+ yield return _mapper.Map(_cryptography.KeyDerivations);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Database/Commands/CloseDatabase/CloseDatabaseCommand.cs b/ModernKeePass.Application/Database/Commands/CloseDatabase/CloseDatabaseCommand.cs
index c591a87..4c7a053 100644
--- a/ModernKeePass.Application/Database/Commands/CloseDatabase/CloseDatabaseCommand.cs
+++ b/ModernKeePass.Application/Database/Commands/CloseDatabase/CloseDatabaseCommand.cs
@@ -1,7 +1,6 @@
using MediatR;
using System.Threading.Tasks;
using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
using ModernKeePass.Domain.Exceptions;
namespace ModernKeePass.Application.Database.Commands.CloseDatabase
@@ -11,17 +10,14 @@ namespace ModernKeePass.Application.Database.Commands.CloseDatabase
public class CloseDatabaseCommandHandler : IAsyncRequestHandler
{
private readonly IDatabaseProxy _database;
- private readonly IMediator _mediator;
- public CloseDatabaseCommandHandler(IDatabaseProxy database, IMediator mediator)
+ public CloseDatabaseCommandHandler(IDatabaseProxy database)
{
_database = database;
- _mediator = mediator;
}
public async Task Handle(CloseDatabaseCommand message)
{
- var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
- if (isDatabaseOpen) _database.CloseDatabase();
+ if (_database.IsOpen) _database.CloseDatabase();
else throw new DatabaseClosedException();
}
}
diff --git a/ModernKeePass.Application/Database/Commands/CreateDatabase/CreateDatabaseCommand.cs b/ModernKeePass.Application/Database/Commands/CreateDatabase/CreateDatabaseCommand.cs
index f8fb901..7df1c31 100644
--- a/ModernKeePass.Application/Database/Commands/CreateDatabase/CreateDatabaseCommand.cs
+++ b/ModernKeePass.Application/Database/Commands/CreateDatabase/CreateDatabaseCommand.cs
@@ -2,7 +2,6 @@
using System.Threading.Tasks;
using AutoMapper;
using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
using ModernKeePass.Application.Group.Models;
using ModernKeePass.Domain.Dtos;
using ModernKeePass.Domain.Exceptions;
@@ -11,28 +10,35 @@ namespace ModernKeePass.Application.Database.Commands.CreateDatabase
{
public class CreateDatabaseCommand : IRequest
{
- public FileInfo FileInfo { get; set; }
- public Credentials Credentials { get; set; }
+ public string FilePath { get; set; }
+ public string Password { get; set; }
+ public string KeyFilePath { get; set; }
public class CreateDatabaseCommandHandler : IAsyncRequestHandler
{
private readonly IDatabaseProxy _database;
- private readonly IMediator _mediator;
private readonly IMapper _mapper;
- public CreateDatabaseCommandHandler(IDatabaseProxy database, IMediator mediator, IMapper mapper)
+ public CreateDatabaseCommandHandler(IDatabaseProxy database, IMapper mapper)
{
_database = database;
- _mediator = mediator;
_mapper = mapper;
}
public async Task Handle(CreateDatabaseCommand message)
{
- var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
- if (isDatabaseOpen) throw new DatabaseOpenException();
+ if (_database.IsOpen) throw new DatabaseOpenException();
- var rootGroup = await _database.Create(message.FileInfo, message.Credentials);
+ var rootGroup = await _database.Create(
+ new FileInfo
+ {
+ Path = message.FilePath
+ },
+ new Credentials
+ {
+ KeyFilePath = message.KeyFilePath,
+ Password = message.Password
+ });
return _mapper.Map(rootGroup);
}
diff --git a/ModernKeePass.Application/Database/Commands/CreateDatabase/CreateDatabaseQueryValidator.cs b/ModernKeePass.Application/Database/Commands/CreateDatabase/CreateDatabaseQueryValidator.cs
new file mode 100644
index 0000000..5c4ead4
--- /dev/null
+++ b/ModernKeePass.Application/Database/Commands/CreateDatabase/CreateDatabaseQueryValidator.cs
@@ -0,0 +1,22 @@
+using FluentValidation;
+
+namespace ModernKeePass.Application.Database.Commands.CreateDatabase
+{
+ public class CreateDatabaseQueryValidator : AbstractValidator
+ {
+ public CreateDatabaseQueryValidator()
+ {
+ RuleFor(v => v.FilePath)
+ .NotNull()
+ .NotEmpty();
+ RuleFor(v => v.Password)
+ .NotNull()
+ .NotEmpty()
+ .When(v => string.IsNullOrEmpty(v.KeyFilePath));
+ RuleFor(v => v.KeyFilePath)
+ .NotNull()
+ .NotEmpty()
+ .When(v => string.IsNullOrEmpty(v.Password));
+ }
+ }
+}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Database/Commands/SaveDatabase/SaveDatabaseCommand.cs b/ModernKeePass.Application/Database/Commands/SaveDatabase/SaveDatabaseCommand.cs
index 8f8a567..3da2c85 100644
--- a/ModernKeePass.Application/Database/Commands/SaveDatabase/SaveDatabaseCommand.cs
+++ b/ModernKeePass.Application/Database/Commands/SaveDatabase/SaveDatabaseCommand.cs
@@ -1,7 +1,6 @@
using MediatR;
using System.Threading.Tasks;
using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
using ModernKeePass.Domain.Dtos;
using ModernKeePass.Domain.Exceptions;
@@ -14,23 +13,18 @@ namespace ModernKeePass.Application.Database.Commands.SaveDatabase
public class SaveDatabaseCommandHandler : IAsyncRequestHandler
{
private readonly IDatabaseProxy _database;
- private readonly IMediator _mediator;
- public SaveDatabaseCommandHandler(IDatabaseProxy database, IMediator mediator)
+ public SaveDatabaseCommandHandler(IDatabaseProxy database)
{
_database = database;
- _mediator = mediator;
}
public async Task Handle(SaveDatabaseCommand message)
{
- var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
- if (isDatabaseOpen)
- {
- if (message.FileInfo != null) await _database.SaveDatabase(message.FileInfo);
- else await _database.SaveDatabase();
- }
- else throw new DatabaseClosedException();
+ if (!_database.IsOpen) throw new DatabaseClosedException();
+
+ if (message.FileInfo != null) await _database.SaveDatabase(message.FileInfo);
+ else await _database.SaveDatabase();
}
}
}
diff --git a/ModernKeePass.Application/Database/Commands/UpdateCredentials/UpdateCredentialsCommand.cs b/ModernKeePass.Application/Database/Commands/UpdateCredentials/UpdateCredentialsCommand.cs
index 9e4b07b..b565c0c 100644
--- a/ModernKeePass.Application/Database/Commands/UpdateCredentials/UpdateCredentialsCommand.cs
+++ b/ModernKeePass.Application/Database/Commands/UpdateCredentials/UpdateCredentialsCommand.cs
@@ -1,7 +1,6 @@
using System.Threading.Tasks;
using MediatR;
using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
using ModernKeePass.Domain.Dtos;
using ModernKeePass.Domain.Exceptions;
@@ -14,18 +13,15 @@ namespace ModernKeePass.Application.Database.Commands.UpdateCredentials
public class UpdateCredentialsCommandHandler : IAsyncRequestHandler
{
private readonly IDatabaseProxy _database;
- private readonly IMediator _mediator;
public UpdateCredentialsCommandHandler(IDatabaseProxy database, IMediator mediator)
{
_database = database;
- _mediator = mediator;
}
public async Task Handle(UpdateCredentialsCommand message)
{
- var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
- if (isDatabaseOpen) await _database.UpdateCredentials(message.Credentials);
+ if (_database.IsOpen) await _database.UpdateCredentials(message.Credentials);
else throw new DatabaseClosedException();
}
}
diff --git a/ModernKeePass.Application/Database/Models/MainVm.cs b/ModernKeePass.Application/Database/Models/MainVm.cs
deleted file mode 100644
index e13bb27..0000000
--- a/ModernKeePass.Application/Database/Models/MainVm.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace ModernKeePass.Application.Database.Models
-{
- public class MainVm
- {
-
- }
-}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Database/Queries/IsDatabaseOpen/IsDatabaseOpenQuery.cs b/ModernKeePass.Application/Database/Queries/IsDatabaseOpen/IsDatabaseOpenQuery.cs
deleted file mode 100644
index 32d765e..0000000
--- a/ModernKeePass.Application/Database/Queries/IsDatabaseOpen/IsDatabaseOpenQuery.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using MediatR;
-using ModernKeePass.Application.Common.Interfaces;
-
-namespace ModernKeePass.Application.Database.Queries.IsDatabaseOpen
-{
- public class IsDatabaseOpenQuery: IRequest
- {
- public class IsDatabaseOpenQueryHandler: IRequestHandler
- {
- private readonly IDatabaseProxy _databaseProxy;
-
- public IsDatabaseOpenQueryHandler(IDatabaseProxy databaseProxy)
- {
- _databaseProxy = databaseProxy;
- }
-
- public bool Handle(IsDatabaseOpenQuery message)
- {
- return _databaseProxy.IsOpen;
- }
-
- }
- }
-}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Database/Queries/OpenDatabase/OpenDatabaseQuery.cs b/ModernKeePass.Application/Database/Queries/OpenDatabase/OpenDatabaseQuery.cs
index 2dfcd66..7715553 100644
--- a/ModernKeePass.Application/Database/Queries/OpenDatabase/OpenDatabaseQuery.cs
+++ b/ModernKeePass.Application/Database/Queries/OpenDatabase/OpenDatabaseQuery.cs
@@ -2,7 +2,6 @@
using AutoMapper;
using MediatR;
using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
using ModernKeePass.Application.Group.Models;
using ModernKeePass.Domain.Dtos;
using ModernKeePass.Domain.Exceptions;
@@ -11,28 +10,35 @@ namespace ModernKeePass.Application.Database.Queries.OpenDatabase
{
public class OpenDatabaseQuery: IRequest
{
- public FileInfo FileInfo { get; set; }
- public Credentials Credentials { get; set; }
+ public string FilePath { get; set; }
+ public string Password { get; set; }
+ public string KeyFilePath { get; set; }
public class OpenDatabaseQueryHandler : IAsyncRequestHandler
{
private readonly IMapper _mapper;
- private readonly IMediator _mediator;
- private readonly IDatabaseProxy _databaseProxy;
+ private readonly IDatabaseProxy _database;
- public OpenDatabaseQueryHandler(IMapper mapper, IMediator mediator, IDatabaseProxy databaseProxy)
+ public OpenDatabaseQueryHandler(IMapper mapper, IDatabaseProxy database)
{
_mapper = mapper;
- _mediator = mediator;
- _databaseProxy = databaseProxy;
+ _database = database;
}
public async Task Handle(OpenDatabaseQuery request)
{
- var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
- if (isDatabaseOpen) throw new DatabaseOpenException();
+ if (_database.IsOpen) throw new DatabaseOpenException();
- var rootGroup = await _databaseProxy.Open(request.FileInfo, request.Credentials);
+ var rootGroup = await _database.Open(
+ new FileInfo
+ {
+ Path = request.FilePath
+ },
+ new Credentials
+ {
+ KeyFilePath = request.KeyFilePath,
+ Password = request.Password
+ });
return _mapper.Map(rootGroup);
}
}
diff --git a/ModernKeePass.Application/Database/Queries/OpenDatabase/OpenDatabaseQueryValidator.cs b/ModernKeePass.Application/Database/Queries/OpenDatabase/OpenDatabaseQueryValidator.cs
index d773f08..63863a4 100644
--- a/ModernKeePass.Application/Database/Queries/OpenDatabase/OpenDatabaseQueryValidator.cs
+++ b/ModernKeePass.Application/Database/Queries/OpenDatabase/OpenDatabaseQueryValidator.cs
@@ -6,7 +6,17 @@ namespace ModernKeePass.Application.Database.Queries.OpenDatabase
{
public OpenDatabaseQueryValidator()
{
- RuleFor(v => v.Credentials != null && v.FileInfo != null);
+ RuleFor(v => v.FilePath)
+ .NotNull()
+ .NotEmpty();
+ RuleFor(v => v.Password)
+ .NotNull()
+ .NotEmpty()
+ .When(v => string.IsNullOrEmpty(v.KeyFilePath));
+ RuleFor(v => v.KeyFilePath)
+ .NotNull()
+ .NotEmpty()
+ .When(v => string.IsNullOrEmpty(v.Password));
}
}
}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Database/Queries/ReOpenDatabase/ReOpenDatabaseQuery.cs b/ModernKeePass.Application/Database/Queries/ReOpenDatabase/ReOpenDatabaseQuery.cs
index 3625f9b..62b582b 100644
--- a/ModernKeePass.Application/Database/Queries/ReOpenDatabase/ReOpenDatabaseQuery.cs
+++ b/ModernKeePass.Application/Database/Queries/ReOpenDatabase/ReOpenDatabaseQuery.cs
@@ -2,7 +2,6 @@
using AutoMapper;
using MediatR;
using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
using ModernKeePass.Application.Group.Models;
using ModernKeePass.Domain.Exceptions;
@@ -13,22 +12,19 @@ namespace ModernKeePass.Application.Database.Queries.ReOpenDatabase
public class ReOpenDatabaseQueryHandler : IAsyncRequestHandler
{
private readonly IMapper _mapper;
- private readonly IMediator _mediator;
- private readonly IDatabaseProxy _databaseProxy;
+ private readonly IDatabaseProxy _database;
- public ReOpenDatabaseQueryHandler(IMapper mapper, IMediator mediator, IDatabaseProxy databaseProxy)
+ public ReOpenDatabaseQueryHandler(IMapper mapper, IDatabaseProxy database)
{
_mapper = mapper;
- _mediator = mediator;
- _databaseProxy = databaseProxy;
+ _database = database;
}
public async Task Handle(ReOpenDatabaseQuery request)
{
- var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
- if (!isDatabaseOpen) throw new DatabaseClosedException();
+ if (!_database.IsOpen) throw new DatabaseClosedException();
- var rootGroup = await _databaseProxy.ReOpen();
+ var rootGroup = await _database.ReOpen();
return _mapper.Map(rootGroup);
}
}
diff --git a/ModernKeePass.Application/Entry/Commands/SetFieldValue/SetFieldValueCommand.cs b/ModernKeePass.Application/Entry/Commands/SetFieldValue/SetFieldValueCommand.cs
index 11cc4ab..c9379c5 100644
--- a/ModernKeePass.Application/Entry/Commands/SetFieldValue/SetFieldValueCommand.cs
+++ b/ModernKeePass.Application/Entry/Commands/SetFieldValue/SetFieldValueCommand.cs
@@ -1,7 +1,5 @@
-using System.Threading.Tasks;
-using MediatR;
+using MediatR;
using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
using ModernKeePass.Domain.Exceptions;
namespace ModernKeePass.Application.Entry.Commands.SetFieldValue
@@ -12,21 +10,18 @@ namespace ModernKeePass.Application.Entry.Commands.SetFieldValue
public string FieldName { get; set; }
public string FieldValue { get; set; }
- public class SetFieldValueCommandHandler : IAsyncRequestHandler
+ public class SetFieldValueCommandHandler : IRequestHandler
{
private readonly IDatabaseProxy _database;
- private readonly IMediator _mediator;
- public SetFieldValueCommandHandler(IDatabaseProxy database, IMediator mediator)
+ public SetFieldValueCommandHandler(IDatabaseProxy database)
{
_database = database;
- _mediator = mediator;
}
- public async Task Handle(SetFieldValueCommand message)
+ public void Handle(SetFieldValueCommand message)
{
- var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
- if (!isDatabaseOpen) throw new DatabaseClosedException();
+ if (!_database.IsOpen) throw new DatabaseClosedException();
_database.UpdateEntry(message.EntryId, message.FieldName, message.FieldValue);
}
diff --git a/ModernKeePass.Application/Group/Commands/AddEntry/AddEntryCommand.cs b/ModernKeePass.Application/Group/Commands/AddEntry/AddEntryCommand.cs
index a1a1f27..ed5f90e 100644
--- a/ModernKeePass.Application/Group/Commands/AddEntry/AddEntryCommand.cs
+++ b/ModernKeePass.Application/Group/Commands/AddEntry/AddEntryCommand.cs
@@ -1,7 +1,6 @@
using System.Threading.Tasks;
using MediatR;
using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
using ModernKeePass.Application.Entry.Models;
using ModernKeePass.Application.Group.Models;
using ModernKeePass.Domain.Exceptions;
@@ -16,18 +15,15 @@ namespace ModernKeePass.Application.Group.Commands.AddEntry
public class AddEntryCommandHandler : IAsyncRequestHandler
{
private readonly IDatabaseProxy _database;
- private readonly IMediator _mediator;
- public AddEntryCommandHandler(IDatabaseProxy database, IMediator mediator)
+ public AddEntryCommandHandler(IDatabaseProxy database)
{
_database = database;
- _mediator = mediator;
}
public async Task Handle(AddEntryCommand message)
{
- var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
- if (!isDatabaseOpen) throw new DatabaseClosedException();
+ if (!_database.IsOpen) throw new DatabaseClosedException();
/*var entryEntity = new EntryEntity
{
Id = message.Entry.Id,
diff --git a/ModernKeePass.Application/Group/Commands/AddGroup/AddGroupCommand.cs b/ModernKeePass.Application/Group/Commands/AddGroup/AddGroupCommand.cs
index d947041..04183a0 100644
--- a/ModernKeePass.Application/Group/Commands/AddGroup/AddGroupCommand.cs
+++ b/ModernKeePass.Application/Group/Commands/AddGroup/AddGroupCommand.cs
@@ -1,7 +1,6 @@
using System.Threading.Tasks;
using MediatR;
using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
using ModernKeePass.Application.Group.Models;
using ModernKeePass.Domain.Exceptions;
@@ -15,18 +14,15 @@ namespace ModernKeePass.Application.Group.Commands.AddGroup
public class AddGroupCommandHandler : IAsyncRequestHandler
{
private readonly IDatabaseProxy _database;
- private readonly IMediator _mediator;
- public AddGroupCommandHandler(IDatabaseProxy database, IMediator mediator)
+ public AddGroupCommandHandler(IDatabaseProxy database)
{
_database = database;
- _mediator = mediator;
}
public async Task Handle(AddGroupCommand message)
{
- var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
- if (!isDatabaseOpen) throw new DatabaseClosedException();
+ if (!_database.IsOpen) throw new DatabaseClosedException();
await _database.AddGroup(message.ParentGroup.Id, message.Group.Id);
message.ParentGroup.SubGroups.Add(message.Group);
diff --git a/ModernKeePass.Application/Group/Commands/CreateEntry/CreateEntryCommand.cs b/ModernKeePass.Application/Group/Commands/CreateEntry/CreateEntryCommand.cs
index 09c5040..04f5a14 100644
--- a/ModernKeePass.Application/Group/Commands/CreateEntry/CreateEntryCommand.cs
+++ b/ModernKeePass.Application/Group/Commands/CreateEntry/CreateEntryCommand.cs
@@ -1,8 +1,6 @@
-using System.Threading.Tasks;
-using AutoMapper;
+using AutoMapper;
using MediatR;
using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
using ModernKeePass.Application.Entry.Models;
using ModernKeePass.Application.Group.Models;
using ModernKeePass.Domain.Exceptions;
@@ -13,23 +11,20 @@ namespace ModernKeePass.Application.Group.Commands.CreateEntry
{
public GroupVm ParentGroup { get; set; }
- public class CreateEntryCommandHandler : IAsyncRequestHandler
+ public class CreateEntryCommandHandler : IRequestHandler
{
private readonly IDatabaseProxy _database;
- private readonly IMediator _mediator;
private readonly IMapper _mapper;
- public CreateEntryCommandHandler(IDatabaseProxy database, IMediator mediator, IMapper mapper)
+ public CreateEntryCommandHandler(IDatabaseProxy database, IMapper mapper)
{
_database = database;
- _mediator = mediator;
_mapper = mapper;
}
- public async Task Handle(CreateEntryCommand message)
+ public EntryVm Handle(CreateEntryCommand message)
{
- var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
- if (!isDatabaseOpen) throw new DatabaseClosedException();
+ if (!_database.IsOpen) throw new DatabaseClosedException();
var entry = _database.CreateEntry(message.ParentGroup.Id);
var entryVm = _mapper.Map(entry);
diff --git a/ModernKeePass.Application/Group/Commands/CreateGroup/CreateGroupCommand.cs b/ModernKeePass.Application/Group/Commands/CreateGroup/CreateGroupCommand.cs
index 727185b..33536c1 100644
--- a/ModernKeePass.Application/Group/Commands/CreateGroup/CreateGroupCommand.cs
+++ b/ModernKeePass.Application/Group/Commands/CreateGroup/CreateGroupCommand.cs
@@ -1,8 +1,6 @@
-using System.Threading.Tasks;
-using AutoMapper;
+using AutoMapper;
using MediatR;
using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
using ModernKeePass.Application.Group.Models;
using ModernKeePass.Domain.Exceptions;
@@ -14,23 +12,20 @@ namespace ModernKeePass.Application.Group.Commands.CreateGroup
public string Name { get; set; }
public bool IsRecycleBin { get; set; }
- public class CreateGroupCommandHandler : IAsyncRequestHandler
+ public class CreateGroupCommandHandler : IRequestHandler
{
private readonly IDatabaseProxy _database;
- private readonly IMediator _mediator;
private readonly IMapper _mapper;
- public CreateGroupCommandHandler(IDatabaseProxy database, IMediator mediator, IMapper mapper)
+ public CreateGroupCommandHandler(IDatabaseProxy database, IMapper mapper)
{
_database = database;
- _mediator = mediator;
_mapper = mapper;
}
- public async Task Handle(CreateGroupCommand message)
+ public GroupVm Handle(CreateGroupCommand message)
{
- var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
- if (!isDatabaseOpen) throw new DatabaseClosedException();
+ if (!_database.IsOpen) throw new DatabaseClosedException();
var group = _database.CreateGroup(message.ParentGroup.Id, message.Name, message.IsRecycleBin);
var groupVm = _mapper.Map(group);
diff --git a/ModernKeePass.Application/Group/Commands/DeleteEntry/DeleteEntryCommand.cs b/ModernKeePass.Application/Group/Commands/DeleteEntry/DeleteEntryCommand.cs
index 5365f11..a344b7d 100644
--- a/ModernKeePass.Application/Group/Commands/DeleteEntry/DeleteEntryCommand.cs
+++ b/ModernKeePass.Application/Group/Commands/DeleteEntry/DeleteEntryCommand.cs
@@ -1,7 +1,6 @@
using System.Threading.Tasks;
using MediatR;
using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
using ModernKeePass.Application.Entry.Models;
using ModernKeePass.Domain.Exceptions;
@@ -14,18 +13,15 @@ namespace ModernKeePass.Application.Group.Commands.DeleteEntry
public class DeleteEntryCommandHandler : IAsyncRequestHandler
{
private readonly IDatabaseProxy _database;
- private readonly IMediator _mediator;
- public DeleteEntryCommandHandler(IDatabaseProxy database, IMediator mediator)
+ public DeleteEntryCommandHandler(IDatabaseProxy database)
{
_database = database;
- _mediator = mediator;
}
public async Task Handle(DeleteEntryCommand message)
{
- var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
- if (!isDatabaseOpen) throw new DatabaseClosedException();
+ if (!_database.IsOpen) throw new DatabaseClosedException();
await _database.DeleteEntry(message.Entry.Id);
message.Entry = null;
diff --git a/ModernKeePass.Application/Group/Commands/DeleteGroup/DeleteGroupCommand.cs b/ModernKeePass.Application/Group/Commands/DeleteGroup/DeleteGroupCommand.cs
index 7106748..37742b3 100644
--- a/ModernKeePass.Application/Group/Commands/DeleteGroup/DeleteGroupCommand.cs
+++ b/ModernKeePass.Application/Group/Commands/DeleteGroup/DeleteGroupCommand.cs
@@ -1,7 +1,6 @@
using System.Threading.Tasks;
using MediatR;
using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
using ModernKeePass.Application.Group.Models;
using ModernKeePass.Domain.Exceptions;
@@ -14,18 +13,15 @@ namespace ModernKeePass.Application.Group.Commands.DeleteGroup
public class DeleteGroupCommandHandler : IAsyncRequestHandler
{
private readonly IDatabaseProxy _database;
- private readonly IMediator _mediator;
- public DeleteGroupCommandHandler(IDatabaseProxy database, IMediator mediator)
+ public DeleteGroupCommandHandler(IDatabaseProxy database)
{
_database = database;
- _mediator = mediator;
}
public async Task Handle(DeleteGroupCommand message)
{
- var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
- if (!isDatabaseOpen) throw new DatabaseClosedException();
+ if (!_database.IsOpen) throw new DatabaseClosedException();
await _database.DeleteGroup(message.Group.Id);
message.Group = null;
diff --git a/ModernKeePass.Application/Group/Commands/RemoveEntry/RemoveEntryCommand.cs b/ModernKeePass.Application/Group/Commands/RemoveEntry/RemoveEntryCommand.cs
index ac20cdd..d097292 100644
--- a/ModernKeePass.Application/Group/Commands/RemoveEntry/RemoveEntryCommand.cs
+++ b/ModernKeePass.Application/Group/Commands/RemoveEntry/RemoveEntryCommand.cs
@@ -1,7 +1,6 @@
using System.Threading.Tasks;
using MediatR;
using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
using ModernKeePass.Application.Entry.Models;
using ModernKeePass.Application.Group.Models;
using ModernKeePass.Domain.Exceptions;
@@ -16,18 +15,15 @@ namespace ModernKeePass.Application.Group.Commands.RemoveEntry
public class RemoveEntryCommandHandler : IAsyncRequestHandler
{
private readonly IDatabaseProxy _database;
- private readonly IMediator _mediator;
- public RemoveEntryCommandHandler(IDatabaseProxy database, IMediator mediator)
+ public RemoveEntryCommandHandler(IDatabaseProxy database)
{
_database = database;
- _mediator = mediator;
}
public async Task Handle(RemoveEntryCommand message)
{
- var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
- if (!isDatabaseOpen) throw new DatabaseClosedException();
+ if (!_database.IsOpen) throw new DatabaseClosedException();
await _database.RemoveEntry(message.ParentGroup.Id, message.Entry.Id);
message.ParentGroup.Entries.Remove(message.Entry);
diff --git a/ModernKeePass.Application/Group/Commands/RemoveGroup/RemoveGroupCommand.cs b/ModernKeePass.Application/Group/Commands/RemoveGroup/RemoveGroupCommand.cs
index 4c02df6..7fe9230 100644
--- a/ModernKeePass.Application/Group/Commands/RemoveGroup/RemoveGroupCommand.cs
+++ b/ModernKeePass.Application/Group/Commands/RemoveGroup/RemoveGroupCommand.cs
@@ -1,7 +1,6 @@
using System.Threading.Tasks;
using MediatR;
using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
using ModernKeePass.Application.Group.Models;
using ModernKeePass.Domain.Exceptions;
@@ -15,18 +14,15 @@ namespace ModernKeePass.Application.Group.Commands.RemoveGroup
public class RemoveGroupCommandHandler : IAsyncRequestHandler
{
private readonly IDatabaseProxy _database;
- private readonly IMediator _mediator;
- public RemoveGroupCommandHandler(IDatabaseProxy database, IMediator mediator)
+ public RemoveGroupCommandHandler(IDatabaseProxy database)
{
_database = database;
- _mediator = mediator;
}
public async Task Handle(RemoveGroupCommand message)
{
- var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
- if (!isDatabaseOpen) throw new DatabaseClosedException();
+ if (!_database.IsOpen) throw new DatabaseClosedException();
await _database.RemoveGroup(message.ParentGroup.Id, message.Group.Id);
message.ParentGroup.SubGroups.Remove(message.Group);
diff --git a/ModernKeePass.Application/Group/Commands/SortEntries/SortEntriesCommand.cs b/ModernKeePass.Application/Group/Commands/SortEntries/SortEntriesCommand.cs
index 77d31e6..1685afd 100644
--- a/ModernKeePass.Application/Group/Commands/SortEntries/SortEntriesCommand.cs
+++ b/ModernKeePass.Application/Group/Commands/SortEntries/SortEntriesCommand.cs
@@ -1,7 +1,5 @@
-using System.Threading.Tasks;
-using MediatR;
+using MediatR;
using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
using ModernKeePass.Application.Group.Models;
using ModernKeePass.Domain.Exceptions;
@@ -11,21 +9,18 @@ namespace ModernKeePass.Application.Group.Commands.SortEntries
{
public GroupVm Group { get; set; }
- public class SortEntriesCommandHandler : IAsyncRequestHandler
+ public class SortEntriesCommandHandler : IRequestHandler
{
private readonly IDatabaseProxy _database;
- private readonly IMediator _mediator;
- public SortEntriesCommandHandler(IDatabaseProxy database, IMediator mediator)
+ public SortEntriesCommandHandler(IDatabaseProxy database)
{
_database = database;
- _mediator = mediator;
}
- public async Task Handle(SortEntriesCommand message)
+ public void Handle(SortEntriesCommand message)
{
- var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
- if (!isDatabaseOpen) throw new DatabaseClosedException();
+ if (!_database.IsOpen) throw new DatabaseClosedException();
_database.SortEntries(message.Group.Id);
}
diff --git a/ModernKeePass.Application/Group/Commands/SortGroups/SortGroupsCommand.cs b/ModernKeePass.Application/Group/Commands/SortGroups/SortGroupsCommand.cs
index c194135..5fd58c5 100644
--- a/ModernKeePass.Application/Group/Commands/SortGroups/SortGroupsCommand.cs
+++ b/ModernKeePass.Application/Group/Commands/SortGroups/SortGroupsCommand.cs
@@ -1,7 +1,5 @@
-using System.Threading.Tasks;
-using MediatR;
+using MediatR;
using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Application.Database.Queries.IsDatabaseOpen;
using ModernKeePass.Application.Group.Models;
using ModernKeePass.Domain.Exceptions;
@@ -11,21 +9,18 @@ namespace ModernKeePass.Application.Group.Commands.SortGroups
{
public GroupVm Group { get; set; }
- public class SortGroupsCommandHandler : IAsyncRequestHandler
+ public class SortGroupsCommandHandler : IRequestHandler
{
private readonly IDatabaseProxy _database;
- private readonly IMediator _mediator;
- public SortGroupsCommandHandler(IDatabaseProxy database, IMediator mediator)
+ public SortGroupsCommandHandler(IDatabaseProxy database)
{
_database = database;
- _mediator = mediator;
}
- public async Task Handle(SortGroupsCommand message)
+ public void Handle(SortGroupsCommand message)
{
- var isDatabaseOpen = await _mediator.Send(new IsDatabaseOpenQuery());
- if (!isDatabaseOpen) throw new DatabaseClosedException();
+ if (!_database.IsOpen) throw new DatabaseClosedException();
_database.SortSubGroups(message.Group.Id);
}
diff --git a/ModernKeePass.Application/Recent/Commands/AddRecent/AddRecentCommand.cs b/ModernKeePass.Application/Recent/Commands/AddRecent/AddRecentCommand.cs
new file mode 100644
index 0000000..326f3c8
--- /dev/null
+++ b/ModernKeePass.Application/Recent/Commands/AddRecent/AddRecentCommand.cs
@@ -0,0 +1,31 @@
+using MediatR;
+using ModernKeePass.Application.Common.Interfaces;
+using ModernKeePass.Domain.Dtos;
+
+namespace ModernKeePass.Application.Recent.Commands.AddRecent
+{
+ public class AddRecentCommand: IRequest
+ {
+ public string Name { get; set; }
+ public string Path { get; set; }
+
+ public class AddRecentCommandHandler: IRequestHandler
+ {
+ private readonly IRecentProxy _recent;
+
+ public AddRecentCommandHandler(IRecentProxy recent)
+ {
+ _recent = recent;
+ }
+
+ public void Handle(AddRecentCommand message)
+ {
+ _recent.Add(new FileInfo
+ {
+ Name = message.Name,
+ Path = message.Path
+ });
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Recent/Commands/ClearAllRecent/ClearAllRecentCommand.cs b/ModernKeePass.Application/Recent/Commands/ClearAllRecent/ClearAllRecentCommand.cs
new file mode 100644
index 0000000..9181e62
--- /dev/null
+++ b/ModernKeePass.Application/Recent/Commands/ClearAllRecent/ClearAllRecentCommand.cs
@@ -0,0 +1,23 @@
+using MediatR;
+using ModernKeePass.Application.Common.Interfaces;
+
+namespace ModernKeePass.Application.Recent.Commands.ClearAllRecent
+{
+ public class ClearAllRecentCommand : IRequest
+ {
+ public class ClearAllRecentCommandHandler : IRequestHandler
+ {
+ private readonly IRecentProxy _recent;
+
+ public ClearAllRecentCommandHandler(IRecentProxy recent)
+ {
+ _recent = recent;
+ }
+
+ public void Handle(ClearAllRecentCommand message)
+ {
+ _recent.ClearAll();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Recent/Models/RecentVm.cs b/ModernKeePass.Application/Recent/Models/RecentVm.cs
new file mode 100644
index 0000000..1abf3c1
--- /dev/null
+++ b/ModernKeePass.Application/Recent/Models/RecentVm.cs
@@ -0,0 +1,18 @@
+using AutoMapper;
+using ModernKeePass.Application.Common.Mappings;
+using ModernKeePass.Domain.Dtos;
+
+namespace ModernKeePass.Application.Recent.Models
+{
+ public class RecentVm: IMapFrom
+ {
+ public string Name { get; set; }
+ public string Path { get; set; }
+ public void Mapping(Profile profile)
+ {
+ profile.CreateMap()
+ .ForMember(d => d.Name, opts => opts.MapFrom(s => s.Name))
+ .ForMember(d => d.Path, opts => opts.MapFrom(s => s.Path));
+ }
+ }
+}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Recent/Queries/GetAllRecent/GetAllRecentQuery.cs b/ModernKeePass.Application/Recent/Queries/GetAllRecent/GetAllRecentQuery.cs
new file mode 100644
index 0000000..cf55224
--- /dev/null
+++ b/ModernKeePass.Application/Recent/Queries/GetAllRecent/GetAllRecentQuery.cs
@@ -0,0 +1,30 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using AutoMapper;
+using MediatR;
+using ModernKeePass.Application.Common.Interfaces;
+using ModernKeePass.Application.Recent.Models;
+
+namespace ModernKeePass.Application.Recent.Queries.GetAllRecent
+{
+ public class GetAllRecentQuery : IRequest>
+ {
+ public class GetAllRecentQueryHandler : IAsyncRequestHandler>
+ {
+ private readonly IRecentProxy _recent;
+ private readonly IMapper _mapper;
+
+ public GetAllRecentQueryHandler(IRecentProxy recent, IMapper mapper)
+ {
+ _recent = recent;
+ _mapper = mapper;
+ }
+
+ public async Task> Handle(GetAllRecentQuery message)
+ {
+ var fileInfo = await _recent.GetAll();
+ return _mapper.Map>(fileInfo);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Recent/Queries/GetRecent/GetRecentQuery.cs b/ModernKeePass.Application/Recent/Queries/GetRecent/GetRecentQuery.cs
new file mode 100644
index 0000000..7e20b99
--- /dev/null
+++ b/ModernKeePass.Application/Recent/Queries/GetRecent/GetRecentQuery.cs
@@ -0,0 +1,31 @@
+using System.Threading.Tasks;
+using AutoMapper;
+using MediatR;
+using ModernKeePass.Application.Common.Interfaces;
+using ModernKeePass.Application.Recent.Models;
+
+namespace ModernKeePass.Application.Recent.Queries.GetRecent
+{
+ public class GetRecentQuery : IRequest
+ {
+ public string Token { get; set; }
+
+ public class GetRecentQueryHandler : IAsyncRequestHandler
+ {
+ private readonly IRecentProxy _recent;
+ private readonly IMapper _mapper;
+
+ public GetRecentQueryHandler(IRecentProxy recent, IMapper mapper)
+ {
+ _recent = recent;
+ _mapper = mapper;
+ }
+
+ public async Task Handle(GetRecentQuery message)
+ {
+ var fileInfo = await _recent.Get(message.Token);
+ return _mapper.Map(fileInfo);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Recent/Queries/HasRecent/HasRecentQuery.cs b/ModernKeePass.Application/Recent/Queries/HasRecent/HasRecentQuery.cs
new file mode 100644
index 0000000..a939452
--- /dev/null
+++ b/ModernKeePass.Application/Recent/Queries/HasRecent/HasRecentQuery.cs
@@ -0,0 +1,23 @@
+using MediatR;
+using ModernKeePass.Application.Common.Interfaces;
+
+namespace ModernKeePass.Application.Recent.Queries.HasRecent
+{
+ public class HasRecentQuery : IRequest
+ {
+ public class HasRecentQueryHandler : IRequestHandler
+ {
+ private readonly IRecentProxy _recent;
+
+ public HasRecentQueryHandler(IRecentProxy recent)
+ {
+ _recent = recent;
+ }
+
+ public bool Handle(HasRecentQuery message)
+ {
+ return _recent.EntryCount > 0;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Security/Commands/GenerateKeyFile/GenerateKeyFileCommand.cs b/ModernKeePass.Application/Security/Commands/GenerateKeyFile/GenerateKeyFileCommand.cs
new file mode 100644
index 0000000..373d6bf
--- /dev/null
+++ b/ModernKeePass.Application/Security/Commands/GenerateKeyFile/GenerateKeyFileCommand.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Threading.Tasks;
+using MediatR;
+using ModernKeePass.Application.Common.Interfaces;
+
+namespace ModernKeePass.Application.Security.Commands.GenerateKeyFile
+{
+ public class GenerateKeyFileCommand : IRequest
+ {
+ public string KeyFilePath { get; set; }
+ public bool AddAdditionalEntropy { get; set; }
+
+ public class GenerateKeyFileCommandHandler : IAsyncRequestHandler
+ {
+ private readonly IPasswordProxy _security;
+ private readonly IFileProxy _file;
+
+ public GenerateKeyFileCommandHandler(IPasswordProxy security, IFileProxy file)
+ {
+ _security = security;
+ _file = file;
+ }
+
+ public async Task Handle(GenerateKeyFileCommand message)
+ {
+ byte[] entropy = null;
+ if (message.AddAdditionalEntropy)
+ {
+ entropy = new byte[10];
+ var random = new Random();
+ random.NextBytes(entropy);
+ }
+ var keyFile = _security.GenerateKeyFile(entropy);
+ await _file.WriteBinaryContentsToFile(message.KeyFilePath, keyFile);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Security/Commands/GeneratePassword/GeneratePasswordCommand.cs b/ModernKeePass.Application/Security/Commands/GeneratePassword/GeneratePasswordCommand.cs
new file mode 100644
index 0000000..a7ef3e8
--- /dev/null
+++ b/ModernKeePass.Application/Security/Commands/GeneratePassword/GeneratePasswordCommand.cs
@@ -0,0 +1,48 @@
+using MediatR;
+using ModernKeePass.Application.Common.Interfaces;
+using ModernKeePass.Domain.Dtos;
+
+namespace ModernKeePass.Application.Security.Commands.GeneratePassword
+{
+ public class GeneratePasswordCommand: IRequest
+ {
+ public int PasswordLength { get; set; }
+ public bool UpperCasePatternSelected { get; set; }
+ public bool LowerCasePatternSelected { get; set; }
+ public bool DigitsPatternSelected { get; set; }
+ public bool SpecialPatternSelected { get; set; }
+ public bool MinusPatternSelected { get; set; }
+ public bool UnderscorePatternSelected { get; set; }
+ public bool SpacePatternSelected { get; set; }
+ public bool BracketsPatternSelected { get; set; }
+ public string CustomChars { get; set; }
+
+ public class GeneratePasswordCommandHandler: IRequestHandler
+ {
+ private readonly IPasswordProxy _security;
+
+ public GeneratePasswordCommandHandler(IPasswordProxy security)
+ {
+ _security = security;
+ }
+
+ public string Handle(GeneratePasswordCommand message)
+ {
+ var options = new PasswordGenerationOptions
+ {
+ PasswordLength = message.PasswordLength,
+ BracketsPatternSelected = message.BracketsPatternSelected,
+ CustomChars = message.CustomChars,
+ DigitsPatternSelected = message.DigitsPatternSelected,
+ LowerCasePatternSelected = message.LowerCasePatternSelected,
+ MinusPatternSelected = message.MinusPatternSelected,
+ SpacePatternSelected = message.SpacePatternSelected,
+ SpecialPatternSelected = message.SpecialPatternSelected,
+ UnderscorePatternSelected = message.UnderscorePatternSelected,
+ UpperCasePatternSelected = message.UpperCasePatternSelected
+ };
+ return _security.GeneratePassword(options);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Security/Queries/EstimatePasswordComplexity/EstimatePasswordComplexityQuery.cs b/ModernKeePass.Application/Security/Queries/EstimatePasswordComplexity/EstimatePasswordComplexityQuery.cs
new file mode 100644
index 0000000..96f9070
--- /dev/null
+++ b/ModernKeePass.Application/Security/Queries/EstimatePasswordComplexity/EstimatePasswordComplexityQuery.cs
@@ -0,0 +1,25 @@
+using MediatR;
+using ModernKeePass.Application.Common.Interfaces;
+
+namespace ModernKeePass.Application.Security.Queries.EstimatePasswordComplexity
+{
+ public class EstimatePasswordComplexityQuery : IRequest
+ {
+ public string Password { get; set; }
+
+ public class EstimatePasswordComplexityQueryHandler : IRequestHandler
+ {
+ private readonly IPasswordProxy _security;
+
+ public EstimatePasswordComplexityQueryHandler(IPasswordProxy security)
+ {
+ _security = security;
+ }
+
+ public uint Handle(EstimatePasswordComplexityQuery message)
+ {
+ return _security.EstimatePasswordComplexity(message.Password);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Services/CryptographyService.cs b/ModernKeePass.Application/Services/CryptographyService.cs
deleted file mode 100644
index caa6a57..0000000
--- a/ModernKeePass.Application/Services/CryptographyService.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System.Collections.Generic;
-using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Domain.Entities;
-using ModernKeePass.Domain.Interfaces;
-
-namespace ModernKeePass.Application.Services
-{
- public class CryptographyService : ICryptographyService
- {
- private readonly ICryptographyClient _cryptographyClient;
- public IEnumerable Ciphers => _cryptographyClient.Ciphers;
-
- public IEnumerable KeyDerivations => _cryptographyClient.KeyDerivations;
-
- public IEnumerable CompressionAlgorithms => _cryptographyClient.CompressionAlgorithms;
-
- public CryptographyService(ICryptographyClient cryptographyClient)
- {
- _cryptographyClient = cryptographyClient;
- }
- }
-}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Services/FileService.cs b/ModernKeePass.Application/Services/FileService.cs
deleted file mode 100644
index 6d85c01..0000000
--- a/ModernKeePass.Application/Services/FileService.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Domain.Interfaces;
-
-namespace ModernKeePass.Application.Services
-{
- public class FileService: IFileService
- {
- private readonly IFileProxy _fileProxy;
-
- public FileService(IFileProxy fileProxy)
- {
- _fileProxy = fileProxy;
- }
-
- public Task OpenBinaryFile(string path)
- {
- return _fileProxy.OpenBinaryFile(path);
- }
-
- public Task WriteBinaryContentsToFile(string path, byte[] contents)
- {
- return _fileProxy.WriteBinaryContentsToFile(path, contents);
- }
-
- public Task> OpenTextFile(string path)
- {
- return _fileProxy.OpenTextFile(path);
- }
-
- public void ReleaseFile(string path)
- {
- _fileProxy.ReleaseFile(path);
- }
- }
-}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Services/ImportService.cs b/ModernKeePass.Application/Services/ImportService.cs
deleted file mode 100644
index ca1b40e..0000000
--- a/ModernKeePass.Application/Services/ImportService.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System;
-using System.Threading.Tasks;
-using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Domain.Entities;
-using ModernKeePass.Domain.Enums;
-using ModernKeePass.Domain.Interfaces;
-
-namespace ModernKeePass.Application.Services
-{
- public class ImportService: IImportService
- {
- private readonly Func _importFormatProviders;
-
- public ImportService(Func importFormatProviders)
- {
- _importFormatProviders = importFormatProviders;
- }
-
- public async Task Import(ImportFormat format, string filePath, Group group)
- {
- var importProvider = _importFormatProviders(format);
- var data = await importProvider.Import(filePath);
-
- /*foreach (var entity in data)
- {
- var entry = group.AddNewEntry();
- entry.Name = entity["0"];
- entry.UserName = entity["1"];
- entry.Password = entity["2"];
- if (entity.Count > 3) entry.Url = entity["3"];
- if (entity.Count > 4) entry.Notes = entity["4"];
- }*/
- }
- }
-}
diff --git a/ModernKeePass.Application/Services/RecentService.cs b/ModernKeePass.Application/Services/RecentService.cs
deleted file mode 100644
index 13f2625..0000000
--- a/ModernKeePass.Application/Services/RecentService.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Domain.Dtos;
-using ModernKeePass.Domain.Interfaces;
-
-namespace ModernKeePass.Application.Services
-{
- public class RecentService: IRecentService
- {
- private readonly IRecentProxy _recentProxy;
-
- public RecentService(IRecentProxy recentProxy)
- {
- _recentProxy = recentProxy;
- }
-
- public bool HasEntries => _recentProxy.EntryCount > 0;
-
- public async Task Get(string token)
- {
- return await _recentProxy.Get(token);
- }
-
- public async Task> GetAll()
- {
- return await _recentProxy.GetAll();
- }
-
- public async Task Add(FileInfo recentItem)
- {
- await _recentProxy.Add(recentItem);
- }
-
- public void ClearAll()
- {
- _recentProxy.ClearAll();
- }
- }
-}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Services/SecurityService.cs b/ModernKeePass.Application/Services/SecurityService.cs
deleted file mode 100644
index 14918fe..0000000
--- a/ModernKeePass.Application/Services/SecurityService.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System.Threading.Tasks;
-using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Domain.Dtos;
-using ModernKeePass.Domain.Interfaces;
-
-namespace ModernKeePass.Application.Services
-{
- public class SecurityService: ISecurityService
- {
- private readonly IPasswordProxy _passwordProxy;
- private readonly IFileService _fileService;
-
- public SecurityService(IPasswordProxy passwordProxy, IFileService fileService)
- {
- _passwordProxy = passwordProxy;
- _fileService = fileService;
- }
-
- public string GeneratePassword(PasswordGenerationOptions options)
- {
- return _passwordProxy.GeneratePassword(options);
- }
-
- public uint EstimatePasswordComplexity(string password)
- {
- return _passwordProxy.EstimatePasswordComplexity(password);
- }
-
- public async Task GenerateKeyFile(string filePath)
- {
- var fileContents = _passwordProxy.GenerateKeyFile(null);
- await _fileService.WriteBinaryContentsToFile(filePath, fileContents);
- }
- }
-}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Services/SettingsService.cs b/ModernKeePass.Application/Services/SettingsService.cs
deleted file mode 100644
index 2c16006..0000000
--- a/ModernKeePass.Application/Services/SettingsService.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using ModernKeePass.Application.Common.Interfaces;
-using ModernKeePass.Domain.Interfaces;
-
-namespace ModernKeePass.Application.Services
-{
- public class SettingsService: ISettingsService
- {
- private readonly ISettingsProxy _settingsProxy;
-
- public SettingsService(ISettingsProxy settingsProxy)
- {
- _settingsProxy = settingsProxy;
- }
-
- public T GetSetting(string property, T defaultValue = default)
- {
- return _settingsProxy.GetSetting(property, defaultValue);
- }
-
- public void PutSetting(string property, T value)
- {
- _settingsProxy.PutSetting(property, value);
- }
- }
-}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Settings/Commands/PutSettingCommand.cs b/ModernKeePass.Application/Settings/Commands/PutSettingCommand.cs
new file mode 100644
index 0000000..b21e833
--- /dev/null
+++ b/ModernKeePass.Application/Settings/Commands/PutSettingCommand.cs
@@ -0,0 +1,25 @@
+using MediatR;
+using ModernKeePass.Application.Common.Interfaces;
+
+namespace ModernKeePass.Application.Settings.Commands
+{
+ public class PutSettingCommand : IRequest
+ {
+ public string Key { get; set; }
+ public T value { get; set; }
+
+ public class PutSettingCommandHandler : IRequestHandler>
+ {
+ private readonly ISettingsProxy _settingsProxy;
+
+ public PutSettingCommandHandler(ISettingsProxy settingsProxy)
+ {
+ _settingsProxy = settingsProxy;
+ }
+ public void Handle(PutSettingCommand message)
+ {
+ _settingsProxy.PutSetting(message.Key, message.value);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ModernKeePass.Application/Settings/Queries/GetSettingQuery.cs b/ModernKeePass.Application/Settings/Queries/GetSettingQuery.cs
new file mode 100644
index 0000000..0968f72
--- /dev/null
+++ b/ModernKeePass.Application/Settings/Queries/GetSettingQuery.cs
@@ -0,0 +1,24 @@
+using MediatR;
+using ModernKeePass.Application.Common.Interfaces;
+
+namespace ModernKeePass.Application.Settings.Queries
+{
+ public class GetSettingQuery : IRequest
+ {
+ public string Key { get; set; }
+
+ public class GetSettingQueryHandler : IRequestHandler, T>
+ {
+ private readonly ISettingsProxy _settingsProxy;
+
+ public GetSettingQueryHandler(ISettingsProxy settingsProxy)
+ {
+ _settingsProxy = settingsProxy;
+ }
+ public T Handle(GetSettingQuery message)
+ {
+ return _settingsProxy.GetSetting(message.Key);
+ }
+ }
+ }
+}
\ No newline at end of file