Browse Source

Post registration.

pull/1006/head
Sebastian 3 years ago
parent
commit
455a6c99cc
  1. 2
      backend/src/Squidex.Domain.Apps.Entities/Notifications/EmailUserNotifications.cs
  2. 4
      backend/src/Squidex.Infrastructure/Plugins/IPlugin.cs
  3. 13
      backend/src/Squidex.Infrastructure/Plugins/PluginManager.cs
  4. 4
      backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj
  5. 20
      backend/src/Squidex/Pipeline/Plugins/PluginExtensions.cs
  6. 12
      backend/src/Squidex/Squidex.csproj
  7. 3
      backend/src/Squidex/Startup.cs

2
backend/src/Squidex.Domain.Apps.Entities/Notifications/EmailUserNotifications.cs

@ -5,6 +5,7 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
using System.Globalization;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Squidex.Domain.Apps.Core;
@ -14,7 +15,6 @@ using Squidex.Infrastructure;
using Squidex.Infrastructure.Email;
using Squidex.Shared.Identity;
using Squidex.Shared.Users;
using System.Globalization;
namespace Squidex.Domain.Apps.Entities.Notifications;

4
backend/src/Squidex.Infrastructure/Plugins/IPlugin.cs

@ -13,4 +13,8 @@ namespace Squidex.Infrastructure.Plugins;
public interface IPlugin
{
void ConfigureServices(IServiceCollection services, IConfiguration config);
void ConfigureServicesPost(IServiceCollection services, IConfiguration config)
{
}
}

13
backend/src/Squidex.Infrastructure/Plugins/PluginManager.cs

@ -19,6 +19,8 @@ public sealed class PluginManager : DisposableObjectBase
private readonly HashSet<IPlugin> loadedPlugins = new HashSet<IPlugin>();
private readonly List<(string Plugin, string Action, Exception Exception)> exceptions = new List<(string, string, Exception)>();
public static readonly PluginManager Instance = new PluginManager();
protected override void DisposeObject(bool disposing)
{
if (disposing)
@ -102,6 +104,17 @@ public sealed class PluginManager : DisposableObjectBase
}
}
public void ConfigureServicesPost(IServiceCollection services, IConfiguration config)
{
Guard.NotNull(services);
Guard.NotNull(config);
foreach (var plugin in loadedPlugins)
{
plugin.ConfigureServicesPost(services, config);
}
}
public void Log(ISemanticLog log)
{
Guard.NotNull(log);

4
backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj

@ -26,9 +26,9 @@
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.Assets" Version="5.13.0" />
<PackageReference Include="Squidex.Caching" Version="5.13.0" />
<PackageReference Include="Squidex.Hosting.Abstractions" Version="5.13.0" />
<PackageReference Include="Squidex.Hosting.Abstractions" Version="5.14.0" />
<PackageReference Include="Squidex.Log" Version="5.13.0" />
<PackageReference Include="Squidex.Messaging" Version="5.13.0" />
<PackageReference Include="Squidex.Messaging" Version="5.14.0" />
<PackageReference Include="Squidex.Text" Version="5.13.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="System.Collections.Immutable" Version="7.0.0" />

20
backend/src/Squidex/Pipeline/Plugins/PluginExtensions.cs

@ -31,13 +31,12 @@ public static class PluginExtensions
public static IMvcBuilder AddSquidexPlugins(this IMvcBuilder mvcBuilder, IConfiguration config)
{
var pluginManager = new PluginManager();
var pluginManager = PluginManager.Instance;
var pluginOptions = config.Get<PluginOptions>();
var options = config.Get<PluginOptions>();
if (options?.Plugins != null)
if (pluginOptions?.Plugins != null)
{
foreach (var path in options.Plugins)
foreach (var path in pluginOptions.Plugins)
{
var pluginAssembly = pluginManager.Load(path, SharedAssemblies);
@ -47,15 +46,20 @@ public static class PluginExtensions
pluginManager.ConfigureServices(mvcBuilder.Services, config);
mvcBuilder.Services.AddSingleton(pluginManager);
return mvcBuilder;
}
public static void UsePlugins(this IApplicationBuilder app)
{
var pluginManager = app.ApplicationServices.GetRequiredService<PluginManager>();
var pluginManager = PluginManager.Instance;
pluginManager.Log(app.ApplicationServices.GetRequiredService<ISemanticLog>());
}
public static void AddSquidexPluginsPost(this IServiceCollection services, IConfiguration config)
{
var pluginManager = PluginManager.Instance;
pluginManager.ConfigureServicesPost(services, config);
}
}

12
backend/src/Squidex/Squidex.csproj

@ -62,17 +62,17 @@
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.0.0-rc7" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="ReportGenerator" Version="5.1.22" PrivateAssets="all" />
<PackageReference Include="Squidex.Assets.Azure" Version="5.13.0" />
<PackageReference Include="Squidex.Assets.GoogleCloud" Version="5.13.0" />
<PackageReference Include="Squidex.Assets.FTP" Version="5.13.0" />
<PackageReference Include="Squidex.Assets.Azure" Version="5.14.0" />
<PackageReference Include="Squidex.Assets.GoogleCloud" Version="5.14.0" />
<PackageReference Include="Squidex.Assets.FTP" Version="5.14.0" />
<PackageReference Include="Squidex.Assets.ImageMagick" Version="5.13.0" />
<PackageReference Include="Squidex.Assets.ImageSharp" Version="5.13.0" />
<PackageReference Include="Squidex.Assets.Mongo" Version="5.13.0" />
<PackageReference Include="Squidex.Assets.Mongo" Version="5.14.0" />
<PackageReference Include="Squidex.Assets.S3" Version="5.13.0" />
<PackageReference Include="Squidex.Assets.TusAdapter" Version="5.13.0" />
<PackageReference Include="Squidex.Assets.TusAdapter" Version="5.14.0" />
<PackageReference Include="Squidex.ClientLibrary" Version="16.0.0" />
<PackageReference Include="Squidex.Hosting" Version="5.13.0" />
<PackageReference Include="Squidex.Messaging.All" Version="5.13.0" />
<PackageReference Include="Squidex.Messaging.All" Version="5.14.0" />
<PackageReference Include="Squidex.Messaging.Subscriptions" Version="5.13.0" />
<PackageReference Include="Squidex.OpenIddict.MongoDb" Version="4.0.1-dev" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />

3
backend/src/Squidex/Startup.cs

@ -71,6 +71,9 @@ public sealed class Startup
services.AddSquidexTelemetry(config);
services.AddSquidexTranslation(config);
services.AddSquidexUsageTracking(config);
// Run last to override and wrap existing services.
services.AddSquidexPluginsPost(config);
}
public void Configure(IApplicationBuilder app)

Loading…
Cancel
Save