diff --git a/src/Squidex/Config/Identity/Cert/IdentityCert.pfx b/src/Squidex/Areas/IdentityServer/Config/Cert/IdentityCert.pfx similarity index 100% rename from src/Squidex/Config/Identity/Cert/IdentityCert.pfx rename to src/Squidex/Areas/IdentityServer/Config/Cert/IdentityCert.pfx diff --git a/src/Squidex/Config/Identity/Cert/IdentityCert.snk b/src/Squidex/Areas/IdentityServer/Config/Cert/IdentityCert.snk similarity index 100% rename from src/Squidex/Config/Identity/Cert/IdentityCert.snk rename to src/Squidex/Areas/IdentityServer/Config/Cert/IdentityCert.snk diff --git a/src/Squidex/Config/Identity/IdentityExtensions.cs b/src/Squidex/Areas/IdentityServer/Config/IdentityServerExtensions.cs similarity index 94% rename from src/Squidex/Config/Identity/IdentityExtensions.cs rename to src/Squidex/Areas/IdentityServer/Config/IdentityServerExtensions.cs index 6bcee01ee..7981a0982 100644 --- a/src/Squidex/Config/Identity/IdentityExtensions.cs +++ b/src/Squidex/Areas/IdentityServer/Config/IdentityServerExtensions.cs @@ -1,5 +1,5 @@ // ========================================================================== -// IdentityExtensions.cs +// IdentityServerExtensions.cs // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex Group @@ -13,14 +13,15 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using Squidex.Config; using Squidex.Domain.Users; using Squidex.Infrastructure.Log; using Squidex.Shared.Identity; using Squidex.Shared.Users; -namespace Squidex.Config.Identity +namespace Squidex.Areas.IdentityServer.Config { - public static class IdentityExtensions + public static class IdentityServerExtensions { public static IApplicationBuilder UseMyIdentityServer(this IApplicationBuilder app) { diff --git a/src/Squidex/Config/Identity/IdentityServerServices.cs b/src/Squidex/Areas/IdentityServer/Config/IdentityServerServices.cs similarity index 74% rename from src/Squidex/Config/Identity/IdentityServerServices.cs rename to src/Squidex/Areas/IdentityServer/Config/IdentityServerServices.cs index 53f3ade0a..e3c8cbf26 100644 --- a/src/Squidex/Config/Identity/IdentityServerServices.cs +++ b/src/Squidex/Areas/IdentityServer/Config/IdentityServerServices.cs @@ -13,12 +13,14 @@ using IdentityModel; using IdentityServer4.Models; using IdentityServer4.Stores; using Microsoft.AspNetCore.Identity; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Squidex.Config; using Squidex.Domain.Users; using Squidex.Shared.Identity; using Squidex.Shared.Users; -namespace Squidex.Config.Identity +namespace Squidex.Areas.IdentityServer.Config { public static class IdentityServerServices { @@ -26,9 +28,9 @@ namespace Squidex.Config.Identity { X509Certificate2 certificate; - var assembly = typeof(IdentityServices).GetTypeInfo().Assembly; + var assembly = typeof(IdentityServerServices).GetTypeInfo().Assembly; - using (var certStream = assembly.GetManifestResourceStream("Squidex.Config.Identity.Cert.IdentityCert.pfx")) + using (var certStream = assembly.GetManifestResourceStream("Squidex.Areas.IdentityServer.Config.Cert.IdentityCert.pfx")) { var certData = new byte[certStream.Length]; @@ -39,10 +41,12 @@ namespace Squidex.Config.Identity X509KeyStorageFlags.Exportable); } - services.AddSingleton( - GetApiResources()); - services.AddSingleton( - GetIdentityResources()); + services.AddIdentity() + .AddDefaultTokenProviders(); + + services.AddSingleton(GetApiResources()); + services.AddSingleton(GetIdentityResources()); + services.AddSingleton, UserClaimsPrincipalFactoryWithEmail>(); services.AddSingleton(); + + services.AddSingleton>(s => + { + return new ConfigureOptions(options => + { + options.XmlRepository = s.GetRequiredService(); + }); + }); + } + private static IEnumerable GetApiResources() { yield return new ApiResource(Constants.ApiScope) diff --git a/src/Squidex/Config/Identity/LazyClientStore.cs b/src/Squidex/Areas/IdentityServer/Config/LazyClientStore.cs similarity index 98% rename from src/Squidex/Config/Identity/LazyClientStore.cs rename to src/Squidex/Areas/IdentityServer/Config/LazyClientStore.cs index 10fa13e95..5fab6e5b9 100644 --- a/src/Squidex/Config/Identity/LazyClientStore.cs +++ b/src/Squidex/Areas/IdentityServer/Config/LazyClientStore.cs @@ -13,11 +13,12 @@ using IdentityServer4; using IdentityServer4.Models; using IdentityServer4.Stores; using Microsoft.Extensions.Options; +using Squidex.Config; using Squidex.Domain.Apps.Core.Apps; using Squidex.Domain.Apps.Read; using Squidex.Infrastructure; -namespace Squidex.Config.Identity +namespace Squidex.Areas.IdentityServer.Config { public class LazyClientStore : IClientStore { diff --git a/src/Squidex/Areas/IdentityServer/Controllers/Account/AccountController.cs b/src/Squidex/Areas/IdentityServer/Controllers/Account/AccountController.cs index 3dbb53458..1db1f1393 100644 --- a/src/Squidex/Areas/IdentityServer/Controllers/Account/AccountController.cs +++ b/src/Squidex/Areas/IdentityServer/Controllers/Account/AccountController.cs @@ -27,7 +27,7 @@ using Squidex.Infrastructure.Tasks; using Squidex.Shared.Identity; using Squidex.Shared.Users; -namespace Squidex.Controllers.UI.Account +namespace Squidex.Areas.IdentityServer.Controllers.Account { [SwaggerIgnore] public sealed class AccountController : Controller diff --git a/src/Squidex/Areas/IdentityServer/Controllers/Account/LoginModel.cs b/src/Squidex/Areas/IdentityServer/Controllers/Account/LoginModel.cs index ca70d9aca..3fbcecaba 100644 --- a/src/Squidex/Areas/IdentityServer/Controllers/Account/LoginModel.cs +++ b/src/Squidex/Areas/IdentityServer/Controllers/Account/LoginModel.cs @@ -8,7 +8,7 @@ using System.ComponentModel.DataAnnotations; -namespace Squidex.Controllers.UI.Account +namespace Squidex.Areas.IdentityServer.Controllers.Account { public sealed class LoginModel { diff --git a/src/Squidex/Areas/IdentityServer/Controllers/Account/LoginVM.cs b/src/Squidex/Areas/IdentityServer/Controllers/Account/LoginVM.cs index 0b047d552..a36dc068c 100644 --- a/src/Squidex/Areas/IdentityServer/Controllers/Account/LoginVM.cs +++ b/src/Squidex/Areas/IdentityServer/Controllers/Account/LoginVM.cs @@ -8,7 +8,7 @@ using System.Collections.Generic; -namespace Squidex.Controllers.UI.Account +namespace Squidex.Areas.IdentityServer.Controllers.Account { public class LoginVM { diff --git a/src/Squidex/Areas/IdentityServer/Controllers/Error/ErrorController.cs b/src/Squidex/Areas/IdentityServer/Controllers/Error/ErrorController.cs index 6726d7e72..442c91128 100644 --- a/src/Squidex/Areas/IdentityServer/Controllers/Error/ErrorController.cs +++ b/src/Squidex/Areas/IdentityServer/Controllers/Error/ErrorController.cs @@ -9,7 +9,7 @@ using Microsoft.AspNetCore.Mvc; using NSwag.Annotations; -namespace Squidex.Controllers.UI.Error +namespace Squidex.Areas.IdentityServer.Controllers.Error { [SwaggerIgnore] public sealed class ErrorController : Controller diff --git a/src/Squidex/Areas/IdentityServer/Controllers/Extensions.cs b/src/Squidex/Areas/IdentityServer/Controllers/Extensions.cs index 1ba7f7e63..f6c2503af 100644 --- a/src/Squidex/Areas/IdentityServer/Controllers/Extensions.cs +++ b/src/Squidex/Areas/IdentityServer/Controllers/Extensions.cs @@ -12,7 +12,7 @@ using Microsoft.AspNetCore.Identity; using Squidex.Domain.Users; using Squidex.Shared.Users; -namespace Squidex.Controllers.UI +namespace Squidex.Areas.IdentityServer.Controllers { public static class Extensions { diff --git a/src/Squidex/Areas/IdentityServer/Controllers/ExternalProvider.cs b/src/Squidex/Areas/IdentityServer/Controllers/ExternalProvider.cs index 26574c5b1..26ec5ec9c 100644 --- a/src/Squidex/Areas/IdentityServer/Controllers/ExternalProvider.cs +++ b/src/Squidex/Areas/IdentityServer/Controllers/ExternalProvider.cs @@ -6,7 +6,7 @@ // All rights reserved. // ========================================================================== -namespace Squidex.Controllers.UI +namespace Squidex.Areas.IdentityServer.Controllers { public class ExternalProvider { diff --git a/src/Squidex/Areas/IdentityServer/Controllers/Profile/ChangePasswordModel.cs b/src/Squidex/Areas/IdentityServer/Controllers/Profile/ChangePasswordModel.cs index 669742723..6ec711857 100644 --- a/src/Squidex/Areas/IdentityServer/Controllers/Profile/ChangePasswordModel.cs +++ b/src/Squidex/Areas/IdentityServer/Controllers/Profile/ChangePasswordModel.cs @@ -8,7 +8,7 @@ using System.ComponentModel.DataAnnotations; -namespace Squidex.Controllers.UI.Profile +namespace Squidex.Areas.IdentityServer.Controllers.Profile { public class ChangePasswordModel { diff --git a/src/Squidex/Areas/IdentityServer/Controllers/Profile/ChangeProfileModel.cs b/src/Squidex/Areas/IdentityServer/Controllers/Profile/ChangeProfileModel.cs index 2969c0dfa..5d734bc94 100644 --- a/src/Squidex/Areas/IdentityServer/Controllers/Profile/ChangeProfileModel.cs +++ b/src/Squidex/Areas/IdentityServer/Controllers/Profile/ChangeProfileModel.cs @@ -8,7 +8,7 @@ using System.ComponentModel.DataAnnotations; -namespace Squidex.Controllers.UI.Profile +namespace Squidex.Areas.IdentityServer.Controllers.Profile { public class ChangeProfileModel { diff --git a/src/Squidex/Areas/IdentityServer/Controllers/Profile/PortalController.cs b/src/Squidex/Areas/IdentityServer/Controllers/Profile/PortalController.cs index d6e760739..ef3f2326e 100644 --- a/src/Squidex/Areas/IdentityServer/Controllers/Profile/PortalController.cs +++ b/src/Squidex/Areas/IdentityServer/Controllers/Profile/PortalController.cs @@ -13,7 +13,7 @@ using NSwag.Annotations; using Squidex.Domain.Apps.Read.Apps.Services; using Squidex.Infrastructure.Security; -namespace Squidex.Controllers.UI.Profile +namespace Squidex.Areas.IdentityServer.Controllers.Profile { [Authorize] [SwaggerIgnore] diff --git a/src/Squidex/Areas/IdentityServer/Controllers/Profile/ProfileController.cs b/src/Squidex/Areas/IdentityServer/Controllers/Profile/ProfileController.cs index e09e105cd..326d19598 100644 --- a/src/Squidex/Areas/IdentityServer/Controllers/Profile/ProfileController.cs +++ b/src/Squidex/Areas/IdentityServer/Controllers/Profile/ProfileController.cs @@ -24,7 +24,7 @@ using Squidex.Infrastructure.Assets; using Squidex.Infrastructure.Reflection; using Squidex.Shared.Users; -namespace Squidex.Controllers.UI.Profile +namespace Squidex.Areas.IdentityServer.Controllers.Profile { [Authorize] [SwaggerIgnore] diff --git a/src/Squidex/Areas/IdentityServer/Controllers/Profile/ProfileVM.cs b/src/Squidex/Areas/IdentityServer/Controllers/Profile/ProfileVM.cs index 730589a46..650814bf4 100644 --- a/src/Squidex/Areas/IdentityServer/Controllers/Profile/ProfileVM.cs +++ b/src/Squidex/Areas/IdentityServer/Controllers/Profile/ProfileVM.cs @@ -9,7 +9,7 @@ using System.Collections.Generic; using Squidex.Shared.Users; -namespace Squidex.Controllers.UI.Profile +namespace Squidex.Areas.IdentityServer.Controllers.Profile { public sealed class ProfileVM { diff --git a/src/Squidex/Areas/IdentityServer/Controllers/Profile/RemoveLoginModel.cs b/src/Squidex/Areas/IdentityServer/Controllers/Profile/RemoveLoginModel.cs index 415608b18..6682bdb1e 100644 --- a/src/Squidex/Areas/IdentityServer/Controllers/Profile/RemoveLoginModel.cs +++ b/src/Squidex/Areas/IdentityServer/Controllers/Profile/RemoveLoginModel.cs @@ -8,7 +8,7 @@ using System.ComponentModel.DataAnnotations; -namespace Squidex.Controllers.UI.Profile +namespace Squidex.Areas.IdentityServer.Controllers.Profile { public class RemoveLoginModel { diff --git a/src/Squidex/Areas/IdentityServer/Controllers/Profile/SetPasswordModel.cs b/src/Squidex/Areas/IdentityServer/Controllers/Profile/SetPasswordModel.cs index cb9ab2dbe..1f6f8310b 100644 --- a/src/Squidex/Areas/IdentityServer/Controllers/Profile/SetPasswordModel.cs +++ b/src/Squidex/Areas/IdentityServer/Controllers/Profile/SetPasswordModel.cs @@ -8,7 +8,7 @@ using System.ComponentModel.DataAnnotations; -namespace Squidex.Controllers.UI.Profile +namespace Squidex.Areas.IdentityServer.Controllers.Profile { public class SetPasswordModel { diff --git a/src/Squidex/Areas/IdentityServer/Views/Account/Login.cshtml b/src/Squidex/Areas/IdentityServer/Views/Account/Login.cshtml index d64812b2a..318d9cc0e 100644 --- a/src/Squidex/Areas/IdentityServer/Views/Account/Login.cshtml +++ b/src/Squidex/Areas/IdentityServer/Views/Account/Login.cshtml @@ -1,4 +1,4 @@ -@model Squidex.Controllers.UI.Account.LoginVM +@model Squidex.Areas.IdentityServer.Controllers.Account.LoginVM @{ var type = Model.IsLogin ? "Login" : "Signup"; diff --git a/src/Squidex/Areas/IdentityServer/Views/Profile/Profile.cshtml b/src/Squidex/Areas/IdentityServer/Views/Profile/Profile.cshtml index acab8b46d..7150c41c7 100644 --- a/src/Squidex/Areas/IdentityServer/Views/Profile/Profile.cshtml +++ b/src/Squidex/Areas/IdentityServer/Views/Profile/Profile.cshtml @@ -1,4 +1,4 @@ -@model Squidex.Controllers.UI.Profile.ProfileVM +@model Squidex.Areas.IdentityServer.Controllers.Profile.ProfileVM @{ ViewBag.Theme = "white"; diff --git a/src/Squidex/Config/Identity/AuthenticationExtensions.cs b/src/Squidex/Config/Authentication/AuthenticationExtensions.cs similarity index 100% rename from src/Squidex/Config/Identity/AuthenticationExtensions.cs rename to src/Squidex/Config/Authentication/AuthenticationExtensions.cs diff --git a/src/Squidex/Config/Identity/AuthenticationServices.cs b/src/Squidex/Config/Authentication/AuthenticationServices.cs similarity index 100% rename from src/Squidex/Config/Identity/AuthenticationServices.cs rename to src/Squidex/Config/Authentication/AuthenticationServices.cs diff --git a/src/Squidex/Config/Identity/GoogleAuthenticationServices.cs b/src/Squidex/Config/Authentication/GoogleAuthenticationServices.cs similarity index 100% rename from src/Squidex/Config/Identity/GoogleAuthenticationServices.cs rename to src/Squidex/Config/Authentication/GoogleAuthenticationServices.cs diff --git a/src/Squidex/Config/Identity/GoogleHandler.cs b/src/Squidex/Config/Authentication/GoogleHandler.cs similarity index 100% rename from src/Squidex/Config/Identity/GoogleHandler.cs rename to src/Squidex/Config/Authentication/GoogleHandler.cs diff --git a/src/Squidex/Config/Identity/MicrosoftAuthenticationServices.cs b/src/Squidex/Config/Authentication/MicrosoftAuthenticationServices.cs similarity index 100% rename from src/Squidex/Config/Identity/MicrosoftAuthenticationServices.cs rename to src/Squidex/Config/Authentication/MicrosoftAuthenticationServices.cs diff --git a/src/Squidex/Config/Identity/MicrosoftHandler.cs b/src/Squidex/Config/Authentication/MicrosoftHandler.cs similarity index 100% rename from src/Squidex/Config/Identity/MicrosoftHandler.cs rename to src/Squidex/Config/Authentication/MicrosoftHandler.cs diff --git a/src/Squidex/Config/Identity/IdentityServices.cs b/src/Squidex/Config/Identity/IdentityServices.cs deleted file mode 100644 index 621a585b3..000000000 --- a/src/Squidex/Config/Identity/IdentityServices.cs +++ /dev/null @@ -1,44 +0,0 @@ -// ========================================================================== -// IdentityServices.cs -// Squidex Headless CMS -// ========================================================================== -// Copyright (c) Squidex Group -// All rights reserved. -// ========================================================================== - -using Microsoft.AspNetCore.DataProtection; -using Microsoft.AspNetCore.DataProtection.KeyManagement; -using Microsoft.AspNetCore.Identity; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Options; -using Squidex.Domain.Users; -using Squidex.Domain.Users.DataProtection.Orleans; -using Squidex.Shared.Users; - -namespace Squidex.Config.Identity -{ - public static class IdentityServices - { - public static void AddMyIdentity(this IServiceCollection services) - { - services.AddIdentity() - .AddDefaultTokenProviders(); - } - - public static void AddMyDataProtectection(this IServiceCollection services, IConfiguration config) - { - var dataProtection = services.AddDataProtection().SetApplicationName("Squidex"); - - services.AddSingleton(); - - services.AddSingleton>(s => - { - return new ConfigureOptions(options => - { - options.XmlRepository = s.GetRequiredService(); - }); - }); - } - } -} diff --git a/src/Squidex/Config/Identity/MyIdentityOptions.cs b/src/Squidex/Config/MyIdentityOptions.cs similarity index 97% rename from src/Squidex/Config/Identity/MyIdentityOptions.cs rename to src/Squidex/Config/MyIdentityOptions.cs index f38566b94..cd4e2df50 100644 --- a/src/Squidex/Config/Identity/MyIdentityOptions.cs +++ b/src/Squidex/Config/MyIdentityOptions.cs @@ -6,7 +6,7 @@ // All rights reserved. // ========================================================================== -namespace Squidex.Config.Identity +namespace Squidex.Config { public sealed class MyIdentityOptions { diff --git a/src/Squidex/Squidex.csproj b/src/Squidex/Squidex.csproj index f07d5374b..c35ba873f 100644 --- a/src/Squidex/Squidex.csproj +++ b/src/Squidex/Squidex.csproj @@ -12,7 +12,7 @@ - +