diff --git a/src/Squidex/Config/Orleans/SiloExtensions.cs b/src/Squidex/Config/Orleans/SiloExtensions.cs index c58028dd8..db03aa84b 100644 --- a/src/Squidex/Config/Orleans/SiloExtensions.cs +++ b/src/Squidex/Config/Orleans/SiloExtensions.cs @@ -7,10 +7,13 @@ // ========================================================================== using System.Reflection; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; using Orleans; using Orleans.Hosting; using Orleans.Runtime.Configuration; +using Squidex.Shared.Identity; namespace Squidex.Config.Orleans { @@ -39,5 +42,29 @@ namespace Squidex.Config.Orleans return config; } + + public static IApplicationBuilder UseMyOrleansDashboard(this IApplicationBuilder app) + { + app.Use(async (context, next) => + { + var authentication = await context.AuthenticateAsync(); + + if (authentication.Succeeded && authentication.Principal.IsInRole(SquidexRoles.Administrator)) + { + await next(); + } + else + { + await context.ChallengeAsync(new AuthenticationProperties + { + RedirectUri = context.Request.PathBase + context.Request.Path + }); + } + }); + + app.UseOrleansDashboard(); + + return app; + } } } diff --git a/src/Squidex/Squidex.csproj b/src/Squidex/Squidex.csproj index ea7cf4eb5..f07d5374b 100644 --- a/src/Squidex/Squidex.csproj +++ b/src/Squidex/Squidex.csproj @@ -56,7 +56,6 @@ - diff --git a/src/Squidex/WebStartup.cs b/src/Squidex/WebStartup.cs index 28c2e6719..190d091c2 100644 --- a/src/Squidex/WebStartup.cs +++ b/src/Squidex/WebStartup.cs @@ -69,10 +69,6 @@ namespace Squidex private void MapAndUseOrleans(IApplicationBuilder app) { - app.Map(Constants.OrleansPrefix, orleansApp => - { - orleansApp.UseOrleansDashboard(); - }); } private void MapAndUseIdentityServer(IApplicationBuilder app) @@ -98,6 +94,11 @@ namespace Squidex { mvcApp.UseMvc(); }); + + identityApp.Map(Constants.OrleansPrefix, orleansApp => + { + orleansApp.UseMyOrleansDashboard(); + }); }); } diff --git a/src/Squidex/app/features/administration/administration-area.component.html b/src/Squidex/app/features/administration/administration-area.component.html index af9ef753e..35258c707 100644 --- a/src/Squidex/app/features/administration/administration-area.component.html +++ b/src/Squidex/app/features/administration/administration-area.component.html @@ -13,7 +13,7 @@