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