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 f4b7ee25f..e6ce99535 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.Rules; using Squidex.Domain.Apps.Write.Schemas; +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/Api/Assets/AssetContentController.cs b/src/Squidex/Controllers/Api/Assets/AssetContentController.cs index b85f31807..daec1cdd4 100644 --- a/src/Squidex/Controllers/Api/Assets/AssetContentController.cs +++ b/src/Squidex/Controllers/Api/Assets/AssetContentController.cs @@ -23,7 +23,6 @@ namespace Squidex.Controllers.Api.Assets /// /// Uploads and retrieves assets. /// - [ApiAuthorize] [ApiExceptionFilter] [AppApi] [SwaggerTag(nameof(Assets))] 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)); diff --git a/src/Squidex/Pipeline/Swagger/SwaggerHelper.cs b/src/Squidex/Pipeline/Swagger/SwaggerHelper.cs index 4992dbfa6..2a8ad2026 100644 --- a/src/Squidex/Pipeline/Swagger/SwaggerHelper.cs +++ b/src/Squidex/Pipeline/Swagger/SwaggerHelper.cs @@ -84,7 +84,7 @@ namespace Squidex.Pipeline.Swagger var tokenUrl = urlOptions.BuildUrl($"{Constants.IdentityPrefix}/connect/token"); var securityDocs = LoadDocs("security"); - var securityDescription = securityDocs.Replace("", tokenUrl); + var securityText = securityDocs.Replace("", tokenUrl); var result = new SwaggerSecurityScheme @@ -100,7 +100,7 @@ namespace Squidex.Pipeline.Swagger { SquidexRoles.AppReader, "Client (readonly) or App contributor with Editor permission." }, { SquidexRoles.AppDeveloper, "App contributor with Developer permission." } }, - Description = securityDescription + Description = securityText }; return result;