From 6f4408a7276159d8dfb1fd06bb691e73e1368ab6 Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Fri, 27 Oct 2017 21:31:36 +0200 Subject: [PATCH] Added interface for user events. #155 --- src/Squidex.Domain.Users/IUserEvents.cs | 17 +++++++++++++ src/Squidex.Domain.Users/NoopUserEvents.cs | 19 ++++++++++++++ src/Squidex/Config/Domain/WriteModule.cs | 25 ++++++++++--------- .../UI/Account/AccountController.cs | 5 ++++ 4 files changed, 54 insertions(+), 12 deletions(-) create mode 100644 src/Squidex.Domain.Users/IUserEvents.cs create mode 100644 src/Squidex.Domain.Users/NoopUserEvents.cs diff --git a/src/Squidex.Domain.Users/IUserEvents.cs b/src/Squidex.Domain.Users/IUserEvents.cs new file mode 100644 index 000000000..27b336825 --- /dev/null +++ b/src/Squidex.Domain.Users/IUserEvents.cs @@ -0,0 +1,17 @@ +// ========================================================================== +// IUserEvents.cs +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex Group +// All rights reserved. +// ========================================================================== + +using Squidex.Shared.Users; + +namespace Squidex.Domain.Users +{ + public interface IUserEvents + { + void OnUserRegistered(IUser user); + } +} diff --git a/src/Squidex.Domain.Users/NoopUserEvents.cs b/src/Squidex.Domain.Users/NoopUserEvents.cs new file mode 100644 index 000000000..23e44b344 --- /dev/null +++ b/src/Squidex.Domain.Users/NoopUserEvents.cs @@ -0,0 +1,19 @@ +// ========================================================================== +// NoopUserEvents.cs +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex Group +// All rights reserved. +// ========================================================================== + +using Squidex.Shared.Users; + +namespace Squidex.Domain.Users +{ + public sealed class NoopUserEvents : IUserEvents + { + public void OnUserRegistered(IUser user) + { + } + } +} diff --git a/src/Squidex/Config/Domain/WriteModule.cs b/src/Squidex/Config/Domain/WriteModule.cs index 24389f8e9..c93e5ea55 100644 --- a/src/Squidex/Config/Domain/WriteModule.cs +++ b/src/Squidex/Config/Domain/WriteModule.cs @@ -15,6 +15,7 @@ using Squidex.Domain.Apps.Write.Assets; using Squidex.Domain.Apps.Write.Contents; using Squidex.Domain.Apps.Write.Schemas; using Squidex.Domain.Apps.Write.Webhooks; +using Squidex.Domain.Users; using Squidex.Infrastructure.CQRS.Commands; using Squidex.Pipeline.CommandMiddlewares; @@ -31,6 +32,18 @@ namespace Squidex.Config.Domain protected override void Load(ContainerBuilder builder) { + builder.RegisterType() + .As() + .SingleInstance(); + + builder.RegisterType() + .As() + .SingleInstance(); + + builder.RegisterType() + .As() + .SingleInstance(); + builder.RegisterType() .As() .SingleInstance(); @@ -51,14 +64,6 @@ namespace Squidex.Config.Domain .As() .SingleInstance(); - builder.RegisterType() - .As() - .SingleInstance(); - - builder.RegisterType() - .As() - .SingleInstance(); - builder.RegisterType() .As() .SingleInstance(); @@ -79,10 +84,6 @@ namespace Squidex.Config.Domain .As() .SingleInstance(); - builder.RegisterType() - .As() - .SingleInstance(); - builder.Register>(c => (id => new AppDomainObject(id, -1))) .AsSelf() .SingleInstance(); diff --git a/src/Squidex/Controllers/UI/Account/AccountController.cs b/src/Squidex/Controllers/UI/Account/AccountController.cs index 952c33452..55ff820f6 100644 --- a/src/Squidex/Controllers/UI/Account/AccountController.cs +++ b/src/Squidex/Controllers/UI/Account/AccountController.cs @@ -35,6 +35,7 @@ namespace Squidex.Controllers.UI.Account private readonly SignInManager signInManager; private readonly UserManager userManager; private readonly IUserFactory userFactory; + private readonly IUserEvents userEvents; private readonly IOptions identityOptions; private readonly IOptions urlOptions; private readonly ISemanticLog log; @@ -44,6 +45,7 @@ namespace Squidex.Controllers.UI.Account SignInManager signInManager, UserManager userManager, IUserFactory userFactory, + IUserEvents userEvents, IOptions identityOptions, IOptions urlOptions, ISemanticLog log, @@ -51,6 +53,7 @@ namespace Squidex.Controllers.UI.Account { this.log = log; this.urlOptions = urlOptions; + this.userEvents = userEvents; this.userManager = userManager; this.userFactory = userFactory; this.interactions = interactions; @@ -242,6 +245,8 @@ namespace Squidex.Controllers.UI.Account await LockAsync(user, isFirst) && await LoginAsync(externalLogin); + userEvents.OnUserRegistered(user); + if (user.IsLocked) { return View(nameof(LockedOut));