From bae20ff0a93a57ef53e6e4775d6357da3bba596a Mon Sep 17 00:00:00 2001 From: QuintenGreenstack Date: Mon, 21 Aug 2023 09:53:22 +0200 Subject: [PATCH] fix: or-1876 use key pollicy i.o. securityservice to verify if a user can create or edit a key --- .../Keys/AddOrganisationKeyCommandHandler.cs | 12 +++---- .../UpdateOrganisationKeyCommandHandler.cs | 33 ++++++++++--------- .../WhenAddingAnOrganisationKey.cs | 3 +- ...ingAnOrganisationKeyThatsAlreadyCoupled.cs | 3 +- .../WhenUpdatingAnOrganisationKey.cs | 3 +- ...gAnOrganisationKeyToAnAlreadyCoupledKey.cs | 3 +- 6 files changed, 27 insertions(+), 30 deletions(-) diff --git a/src/OrganisationRegistry/Organisation/Keys/AddOrganisationKeyCommandHandler.cs b/src/OrganisationRegistry/Organisation/Keys/AddOrganisationKeyCommandHandler.cs index 8821bae7d..d703fe0db 100644 --- a/src/OrganisationRegistry/Organisation/Keys/AddOrganisationKeyCommandHandler.cs +++ b/src/OrganisationRegistry/Organisation/Keys/AddOrganisationKeyCommandHandler.cs @@ -2,7 +2,7 @@ using System.Threading.Tasks; using Handling; -using Infrastructure.Authorization; +using Handling.Authorization; using Infrastructure.Commands; using Infrastructure.Configuration; using Infrastructure.Domain; @@ -14,16 +14,13 @@ public class AddOrganisationKeyCommandHandler : ICommandEnvelopeHandler { private readonly IOrganisationRegistryConfiguration _organisationRegistryConfiguration; - private readonly ISecurityService _securityService; public AddOrganisationKeyCommandHandler( ILogger logger, ISession session, - IOrganisationRegistryConfiguration organisationRegistryConfiguration, - ISecurityService securityService) : base(logger, session) + IOrganisationRegistryConfiguration organisationRegistryConfiguration) : base(logger, session) { _organisationRegistryConfiguration = organisationRegistryConfiguration; - _securityService = securityService; } public Task Handle(ICommandEnvelope envelope) @@ -41,6 +38,9 @@ public Task Handle(ICommandEnvelope envelope) keyType, envelope.Command.KeyValue, new Period(new ValidFrom(envelope.Command.ValidFrom), new ValidTo(envelope.Command.ValidTo)), - keyTypeId => _securityService.CanUseKeyType(envelope.User, keyTypeId)); + keyTypeId => new KeyPolicy( + organisation.State.OvoNumber, + _organisationRegistryConfiguration, + keyTypeId).Check(envelope.User).IsSuccessful); }); } diff --git a/src/OrganisationRegistry/Organisation/Keys/UpdateOrganisationKeyCommandHandler.cs b/src/OrganisationRegistry/Organisation/Keys/UpdateOrganisationKeyCommandHandler.cs index 1b3d8930b..e7b07582a 100644 --- a/src/OrganisationRegistry/Organisation/Keys/UpdateOrganisationKeyCommandHandler.cs +++ b/src/OrganisationRegistry/Organisation/Keys/UpdateOrganisationKeyCommandHandler.cs @@ -2,7 +2,7 @@ using System.Threading.Tasks; using Handling; -using Infrastructure.Authorization; +using Handling.Authorization; using Infrastructure.Commands; using Infrastructure.Configuration; using Infrastructure.Domain; @@ -14,32 +14,33 @@ public class UpdateOrganisationKeyCommandHandler : ICommandEnvelopeHandler { private readonly IOrganisationRegistryConfiguration _organisationRegistryConfiguration; - private readonly ISecurityService _securityService; public UpdateOrganisationKeyCommandHandler( ILogger logger, ISession session, - IOrganisationRegistryConfiguration organisationRegistryConfiguration, - ISecurityService securityService) : base(logger, session) + IOrganisationRegistryConfiguration organisationRegistryConfiguration) : base(logger, session) { _organisationRegistryConfiguration = organisationRegistryConfiguration; - _securityService = securityService; } public Task Handle(ICommandEnvelope envelope) => UpdateHandler.For(envelope.Command, envelope.User, Session) .WithKeyPolicy(_organisationRegistryConfiguration, envelope.Command) - .Handle(session => - { - var organisation = session.Get(envelope.Command.OrganisationId); + .Handle( + session => + { + var organisation = session.Get(envelope.Command.OrganisationId); - var keyType = session.Get(envelope.Command.KeyTypeId); + var keyType = session.Get(envelope.Command.KeyTypeId); - organisation.UpdateKey( - envelope.Command.OrganisationKeyId, - keyType, - envelope.Command.Value, - new Period(new ValidFrom(envelope.Command.ValidFrom), new ValidTo(envelope.Command.ValidTo)), - keyTypeId => _securityService.CanUseKeyType(envelope.User, keyTypeId)); - }); + organisation.UpdateKey( + envelope.Command.OrganisationKeyId, + keyType, + envelope.Command.Value, + new Period(new ValidFrom(envelope.Command.ValidFrom), new ValidTo(envelope.Command.ValidTo)), + keyTypeId => new KeyPolicy( + organisation.State.OvoNumber, + _organisationRegistryConfiguration, + keyTypeId).Check(envelope.User).IsSuccessful); + }); } diff --git a/test/OrganisationRegistry.UnitTests/Organisation/AddOrganisationKey/WhenAddingAnOrganisationKey.cs b/test/OrganisationRegistry.UnitTests/Organisation/AddOrganisationKey/WhenAddingAnOrganisationKey.cs index 6c02b8ec7..e0d34ae1f 100755 --- a/test/OrganisationRegistry.UnitTests/Organisation/AddOrganisationKey/WhenAddingAnOrganisationKey.cs +++ b/test/OrganisationRegistry.UnitTests/Organisation/AddOrganisationKey/WhenAddingAnOrganisationKey.cs @@ -53,8 +53,7 @@ protected override AddOrganisationKeyCommandHandler BuildHandler(ISession sessio => new( new Mock>().Object, session, - new OrganisationRegistryConfigurationStub(), - _securityServiceMock.Object); + new OrganisationRegistryConfigurationStub()); private IEvent[] Events => new IEvent[] diff --git a/test/OrganisationRegistry.UnitTests/Organisation/AddOrganisationKey/WhenAddingAnOrganisationKeyThatsAlreadyCoupled.cs b/test/OrganisationRegistry.UnitTests/Organisation/AddOrganisationKey/WhenAddingAnOrganisationKeyThatsAlreadyCoupled.cs index 86019a32c..5bfbd96e9 100755 --- a/test/OrganisationRegistry.UnitTests/Organisation/AddOrganisationKey/WhenAddingAnOrganisationKeyThatsAlreadyCoupled.cs +++ b/test/OrganisationRegistry.UnitTests/Organisation/AddOrganisationKey/WhenAddingAnOrganisationKeyThatsAlreadyCoupled.cs @@ -54,8 +54,7 @@ protected override AddOrganisationKeyCommandHandler BuildHandler(ISession sessio => new( new Mock>().Object, session, - Mock.Of(), - _securityServiceMock.Object); + Mock.Of()); private IEvent[] Events => new IEvent[] diff --git a/test/OrganisationRegistry.UnitTests/Organisation/UpdateOrganisationKey/WhenUpdatingAnOrganisationKey.cs b/test/OrganisationRegistry.UnitTests/Organisation/UpdateOrganisationKey/WhenUpdatingAnOrganisationKey.cs index 3e44e6627..00bfa0d0b 100755 --- a/test/OrganisationRegistry.UnitTests/Organisation/UpdateOrganisationKey/WhenUpdatingAnOrganisationKey.cs +++ b/test/OrganisationRegistry.UnitTests/Organisation/UpdateOrganisationKey/WhenUpdatingAnOrganisationKey.cs @@ -51,8 +51,7 @@ protected override UpdateOrganisationKeyCommandHandler BuildHandler(ISession ses return new UpdateOrganisationKeyCommandHandler( new Mock>().Object, session, - Mock.Of(), - securityServiceMock.Object); + Mock.Of()); } private IEvent[] Events diff --git a/test/OrganisationRegistry.UnitTests/Organisation/UpdateOrganisationKey/WhenUpdatingAnOrganisationKeyToAnAlreadyCoupledKey.cs b/test/OrganisationRegistry.UnitTests/Organisation/UpdateOrganisationKey/WhenUpdatingAnOrganisationKeyToAnAlreadyCoupledKey.cs index 9df958093..4228d825b 100755 --- a/test/OrganisationRegistry.UnitTests/Organisation/UpdateOrganisationKey/WhenUpdatingAnOrganisationKeyToAnAlreadyCoupledKey.cs +++ b/test/OrganisationRegistry.UnitTests/Organisation/UpdateOrganisationKey/WhenUpdatingAnOrganisationKeyToAnAlreadyCoupledKey.cs @@ -50,8 +50,7 @@ protected override UpdateOrganisationKeyCommandHandler BuildHandler(ISession ses => new( new Mock>().Object, session, - Mock.Of(), - _securityServiceMock.Object); + Mock.Of()); private IEvent[] Events => new IEvent[]