From 0099de072478b2e094224c00f3e10e4c97b4671e Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Mon, 26 Aug 2024 15:21:07 -0700 Subject: [PATCH] Add AddPermissionProvider extension (#16622) --- src/OrchardCore.Modules/OrchardCore.Admin/Startup.cs | 4 ++-- .../OrchardCore.AdminDashboard/Startup.cs | 2 +- .../OrchardCore.AdminMenu/Startup.cs | 2 +- .../OrchardCore.Apis.GraphQL/Startup.cs | 2 +- .../OrchardCore.AuditTrail/Startup.cs | 2 +- .../OrchardCore.Autoroute/Startup.cs | 2 +- .../OrchardCore.BackgroundTasks/Startup.cs | 2 +- .../OrchardCore.ContentLocalization/Startup.cs | 2 +- .../OrchardCore.ContentTypes/Startup.cs | 2 +- .../OrchardCore.Contents/Startup.cs | 4 ++-- src/OrchardCore.Modules/OrchardCore.Cors/Startup.cs | 2 +- .../OrchardCore.CustomSettings/Startup.cs | 2 +- src/OrchardCore.Modules/OrchardCore.Demo/Startup.cs | 2 +- .../OrchardCore.Deployment.Remote/Startup.cs | 2 +- .../OrchardCore.Deployment/Startup.cs | 2 +- src/OrchardCore.Modules/OrchardCore.Email/Startup.cs | 2 +- .../OrchardCore.Facebook/Startup.cs | 2 +- .../OrchardCore.Facebook/StartupPixel.cs | 2 +- .../OrchardCore.Features/Startup.cs | 2 +- .../OrchardCore.GitHub/Startup.cs | 2 +- .../GoogleAuthenticationStartup.cs | 6 +++--- src/OrchardCore.Modules/OrchardCore.Https/Startup.cs | 2 +- .../OrchardCore.Layers/Startup.cs | 2 +- .../OrchardCore.Localization/Startup.cs | 2 +- .../OrchardCore.Media.AmazonS3/Startup.cs | 2 +- .../OrchardCore.Media.Azure/Startup.cs | 2 +- src/OrchardCore.Modules/OrchardCore.Media/Startup.cs | 6 +++--- src/OrchardCore.Modules/OrchardCore.Menu/Startup.cs | 2 +- .../OrchardCore.MiniProfiler/Startup.cs | 2 +- .../OrchardCore.Notifications/Startup.cs | 2 +- .../OrchardCore.Placements/Startup.cs | 2 +- .../OrchardCore.Queries/Sql/Startup.cs | 2 +- .../OrchardCore.Queries/Startup.cs | 2 +- .../OrchardCore.ReCaptcha/Startup.cs | 2 +- .../OrchardCore.ReverseProxy/Startup.cs | 2 +- src/OrchardCore.Modules/OrchardCore.Roles/Startup.cs | 2 +- .../OrchardCore.Search.Elasticsearch/Startup.cs | 2 +- .../OrchardCore.Search.Lucene/Startup.cs | 2 +- .../OrchardCore.Search/Startup.cs | 2 +- .../OrchardCore.Security/Startup.cs | 2 +- src/OrchardCore.Modules/OrchardCore.Seo/Startup.cs | 2 +- .../OrchardCore.Settings/Startup.cs | 2 +- .../OrchardCore.Shortcodes/Startup.cs | 2 +- .../OrchardCore.Sitemaps/Startup.cs | 2 +- src/OrchardCore.Modules/OrchardCore.Sms/Startup.cs | 2 +- .../OrchardCore.Taxonomies/Startup.cs | 2 +- .../OrchardCore.Templates/Startup.cs | 4 ++-- .../OrchardCore.Tenants/Startup.cs | 2 +- .../OrchardCore.Themes/Startup.cs | 2 +- .../OrchardCore.Twitter/Startup.cs | 2 +- src/OrchardCore.Modules/OrchardCore.Users/Startup.cs | 6 +++--- .../OrchardCore.Workflows/Startup.cs | 2 +- .../ServiceCollectionExtensions.cs | 2 +- .../Security/Permissions/IPermissionProvider.cs | 6 ------ .../Security/Permissions/PermissionStereotype.cs | 8 ++++++++ .../PermissionsServiceCollectionExtensions.cs | 12 ++++++++++++ .../Extensions/ServiceCollectionExtensions.cs | 2 +- src/docs/releases/2.0.0.md | 4 ++++ 58 files changed, 87 insertions(+), 69 deletions(-) create mode 100644 src/OrchardCore/OrchardCore.Infrastructure.Abstractions/Security/Permissions/PermissionStereotype.cs create mode 100644 src/OrchardCore/OrchardCore.Infrastructure.Abstractions/Security/Permissions/PermissionsServiceCollectionExtensions.cs diff --git a/src/OrchardCore.Modules/OrchardCore.Admin/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Admin/Startup.cs index 886fd300b20..054c654b2d8 100644 --- a/src/OrchardCore.Modules/OrchardCore.Admin/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Admin/Startup.cs @@ -51,11 +51,11 @@ public override void ConfigureServices(IServiceCollection services) }); services.AddTransient(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddScoped(); services.AddScoped(); services.AddSiteDisplayDriver(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddNavigationProvider(); services.AddSingleton(); services.AddScoped, VisitSiteNavbarDisplayDriver>(); diff --git a/src/OrchardCore.Modules/OrchardCore.AdminDashboard/Startup.cs b/src/OrchardCore.Modules/OrchardCore.AdminDashboard/Startup.cs index a1b471ccd58..26b34aab842 100644 --- a/src/OrchardCore.Modules/OrchardCore.AdminDashboard/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.AdminDashboard/Startup.cs @@ -31,7 +31,7 @@ public Startup(IOptions adminOptions) public override void ConfigureServices(IServiceCollection services) { - services.AddScoped(); + services.AddPermissionProvider(); services.AddScoped(); services.AddIndexProvider(); diff --git a/src/OrchardCore.Modules/OrchardCore.AdminMenu/Startup.cs b/src/OrchardCore.Modules/OrchardCore.AdminMenu/Startup.cs index c4f8c40f4ab..74e1b7fa0e9 100644 --- a/src/OrchardCore.Modules/OrchardCore.AdminMenu/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.AdminMenu/Startup.cs @@ -15,7 +15,7 @@ public sealed class Startup : StartupBase { public override void ConfigureServices(IServiceCollection services) { - services.AddScoped(); + services.AddPermissionProvider(); services.AddNavigationProvider(); services.AddScoped(); diff --git a/src/OrchardCore.Modules/OrchardCore.Apis.GraphQL/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Apis.GraphQL/Startup.cs index a3e1cf606de..c928c74358f 100644 --- a/src/OrchardCore.Modules/OrchardCore.Apis.GraphQL/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Apis.GraphQL/Startup.cs @@ -45,7 +45,7 @@ public override void ConfigureServices(IServiceCollection services) return new ErrorInfoProvider(new ErrorInfoProviderOptions { ExposeExceptionDetails = settings.Value.ExposeExceptions }); }); - services.AddScoped(); + services.AddPermissionProvider(); services.AddNavigationProvider(); services.AddSingleton(); diff --git a/src/OrchardCore.Modules/OrchardCore.AuditTrail/Startup.cs b/src/OrchardCore.Modules/OrchardCore.AuditTrail/Startup.cs index 992a4da8cbe..8c76e521209 100644 --- a/src/OrchardCore.Modules/OrchardCore.AuditTrail/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.AuditTrail/Startup.cs @@ -42,7 +42,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddIndexProvider(); services.AddSingleton(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddNavigationProvider(); services.AddNavigationProvider(); diff --git a/src/OrchardCore.Modules/OrchardCore.Autoroute/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Autoroute/Startup.cs index 3f2634d1f45..1d127699bb4 100644 --- a/src/OrchardCore.Modules/OrchardCore.Autoroute/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Autoroute/Startup.cs @@ -74,7 +74,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddScoped(); services.AddScoped(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddScoped(); services.AddScoped(); diff --git a/src/OrchardCore.Modules/OrchardCore.BackgroundTasks/Startup.cs b/src/OrchardCore.Modules/OrchardCore.BackgroundTasks/Startup.cs index 264108c50fe..6511d01e1d9 100644 --- a/src/OrchardCore.Modules/OrchardCore.BackgroundTasks/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.BackgroundTasks/Startup.cs @@ -12,7 +12,7 @@ public override void ConfigureServices(IServiceCollection services) { services .AddScoped() - .AddScoped() + .AddPermissionProvider() .AddNavigationProvider() .AddScoped(); } diff --git a/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Startup.cs b/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Startup.cs index 7cd0ebaf828..5c66b843436 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Startup.cs @@ -39,7 +39,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddSingleton(); services.AddContentLocalization(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddScoped(); services.AddScoped(); diff --git a/src/OrchardCore.Modules/OrchardCore.ContentTypes/Startup.cs b/src/OrchardCore.Modules/OrchardCore.ContentTypes/Startup.cs index 9b93a1da76b..5de96f75766 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentTypes/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentTypes/Startup.cs @@ -19,7 +19,7 @@ public sealed class Startup : StartupBase { public override void ConfigureServices(IServiceCollection services) { - services.AddScoped(); + services.AddPermissionProvider(); services.AddNavigationProvider(); services.AddScoped(); services.AddScoped(); diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Startup.cs index 88d302b12bb..19a7de75820 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Startup.cs @@ -139,8 +139,8 @@ static async Task GetContentByHandleAsync(LiquidTemplateContext cont services.AddContentManagement(); services.AddContentManagementDisplay(); - services.AddScoped(); - services.AddScoped(); + services.AddPermissionProvider(); + services.AddPermissionProvider(); services.AddScoped(); services.AddScoped(); services.AddNavigationProvider(); diff --git a/src/OrchardCore.Modules/OrchardCore.Cors/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Cors/Startup.cs index 4bfc86e5832..27e88a5990b 100644 --- a/src/OrchardCore.Modules/OrchardCore.Cors/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Cors/Startup.cs @@ -25,7 +25,7 @@ public override void Configure(IApplicationBuilder app, IEndpointRouteBuilder ro public override void ConfigureServices(IServiceCollection services) { services.AddNavigationProvider(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddSingleton(); services.TryAddEnumerable(ServiceDescriptor diff --git a/src/OrchardCore.Modules/OrchardCore.CustomSettings/Startup.cs b/src/OrchardCore.Modules/OrchardCore.CustomSettings/Startup.cs index 89bb4455830..3d534193221 100644 --- a/src/OrchardCore.Modules/OrchardCore.CustomSettings/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.CustomSettings/Startup.cs @@ -24,7 +24,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddScoped(); services.AddScoped(); // Permissions - services.AddScoped(); + services.AddPermissionProvider(); services.AddScoped(); services.AddRecipeExecutionStep(); diff --git a/src/OrchardCore.Modules/OrchardCore.Demo/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Demo/Startup.cs index c9b9e65ae6f..7d55d0f3ca5 100644 --- a/src/OrchardCore.Modules/OrchardCore.Demo/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Demo/Startup.cs @@ -89,7 +89,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddNavigationProvider(); services.AddScoped(); services.AddDataMigration(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddContentPart(); services.AddScoped(); diff --git a/src/OrchardCore.Modules/OrchardCore.Deployment.Remote/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Deployment.Remote/Startup.cs index 9dec7b1a888..b4eb3c0152d 100644 --- a/src/OrchardCore.Modules/OrchardCore.Deployment.Remote/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Deployment.Remote/Startup.cs @@ -17,6 +17,6 @@ public override void ConfigureServices(IServiceCollection services) services.AddScoped(); services.AddScoped(); services.AddScoped(); - services.AddScoped(); + services.AddPermissionProvider(); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Deployment/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Deployment/Startup.cs index cf0555db9bc..0985f40db64 100644 --- a/src/OrchardCore.Modules/OrchardCore.Deployment/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Deployment/Startup.cs @@ -20,7 +20,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddDeploymentServices(); services.AddNavigationProvider(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddSingleton(); diff --git a/src/OrchardCore.Modules/OrchardCore.Email/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Email/Startup.cs index de0b25dd64f..2eca8683011 100644 --- a/src/OrchardCore.Modules/OrchardCore.Email/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Email/Startup.cs @@ -16,7 +16,7 @@ public override void ConfigureServices(IServiceCollection services) { services.AddEmailServices() .AddSiteDisplayDriver() - .AddScoped() + .AddPermissionProvider() .AddNavigationProvider(); services.AddDataMigration(); diff --git a/src/OrchardCore.Modules/OrchardCore.Facebook/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Facebook/Startup.cs index bb8f9b83182..2b30ef8dd60 100644 --- a/src/OrchardCore.Modules/OrchardCore.Facebook/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Facebook/Startup.cs @@ -26,7 +26,7 @@ public override void Configure(IApplicationBuilder builder, IEndpointRouteBuilde public override void ConfigureServices(IServiceCollection services) { - services.AddScoped(); + services.AddPermissionProvider(); services.AddNavigationProvider(); services.AddSingleton(); diff --git a/src/OrchardCore.Modules/OrchardCore.Facebook/StartupPixel.cs b/src/OrchardCore.Modules/OrchardCore.Facebook/StartupPixel.cs index 028ec35cb91..694c64b80e7 100644 --- a/src/OrchardCore.Modules/OrchardCore.Facebook/StartupPixel.cs +++ b/src/OrchardCore.Modules/OrchardCore.Facebook/StartupPixel.cs @@ -15,7 +15,7 @@ public sealed class StartupPixel : StartupBase public override void ConfigureServices(IServiceCollection services) { services.AddSiteDisplayDriver(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddNavigationProvider(); services.Configure((options) => diff --git a/src/OrchardCore.Modules/OrchardCore.Features/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Features/Startup.cs index e94915e6e9d..7b14e5f0050 100644 --- a/src/OrchardCore.Modules/OrchardCore.Features/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Features/Startup.cs @@ -18,7 +18,7 @@ public sealed class Startup : StartupBase public override void ConfigureServices(IServiceCollection services) { services.AddRecipeExecutionStep(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddScoped(); services.AddNavigationProvider(); diff --git a/src/OrchardCore.Modules/OrchardCore.GitHub/Startup.cs b/src/OrchardCore.Modules/OrchardCore.GitHub/Startup.cs index 6c9c6089edf..bcca7e22c6b 100644 --- a/src/OrchardCore.Modules/OrchardCore.GitHub/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.GitHub/Startup.cs @@ -19,7 +19,7 @@ public sealed class Startup : StartupBase { public override void ConfigureServices(IServiceCollection services) { - services.AddScoped(); + services.AddPermissionProvider(); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Google/GoogleAuthenticationStartup.cs b/src/OrchardCore.Modules/OrchardCore.Google/GoogleAuthenticationStartup.cs index 94f5b1254e1..f01e66e54a8 100644 --- a/src/OrchardCore.Modules/OrchardCore.Google/GoogleAuthenticationStartup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Google/GoogleAuthenticationStartup.cs @@ -29,7 +29,7 @@ public sealed class GoogleAuthenticationStartup : StartupBase { public override void ConfigureServices(IServiceCollection services) { - services.AddScoped(); + services.AddPermissionProvider(); services.AddSingleton(); services.AddSiteDisplayDriver(); services.AddNavigationProvider(); @@ -53,7 +53,7 @@ public sealed class GoogleAnalyticsStartup : StartupBase { public override void ConfigureServices(IServiceCollection services) { - services.AddScoped(); + services.AddPermissionProvider(); services.AddSingleton(); services.AddSiteDisplayDriver(); @@ -71,7 +71,7 @@ public sealed class GoogleTagManagerStartup : StartupBase { public override void ConfigureServices(IServiceCollection services) { - services.AddScoped(); + services.AddPermissionProvider(); services.AddSingleton(); services.AddSiteDisplayDriver(); services.AddNavigationProvider(); diff --git a/src/OrchardCore.Modules/OrchardCore.Https/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Https/Startup.cs index 5ef22c1f4e4..b7894083b28 100644 --- a/src/OrchardCore.Modules/OrchardCore.Https/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Https/Startup.cs @@ -37,7 +37,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddNavigationProvider(); services.AddSingleton(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddOptions() .Configure((options, service) => diff --git a/src/OrchardCore.Modules/OrchardCore.Layers/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Layers/Startup.cs index 350194317c8..ad7b82b30fa 100644 --- a/src/OrchardCore.Modules/OrchardCore.Layers/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Layers/Startup.cs @@ -46,7 +46,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddScoped(); services.AddIndexProvider(); services.AddDataMigration(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddRecipeExecutionStep(); services.AddDeployment(); services.AddSingleton(); diff --git a/src/OrchardCore.Modules/OrchardCore.Localization/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Localization/Startup.cs index 9a1d130737c..c035f05d418 100644 --- a/src/OrchardCore.Modules/OrchardCore.Localization/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Localization/Startup.cs @@ -29,7 +29,7 @@ public override void ConfigureServices(IServiceCollection services) { services.AddSiteDisplayDriver(); services.AddNavigationProvider(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddScoped(); services.AddPortableObjectLocalization(options => options.ResourcesPath = "Localization"). diff --git a/src/OrchardCore.Modules/OrchardCore.Media.AmazonS3/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Media.AmazonS3/Startup.cs index 68f59a76e98..b589512d865 100644 --- a/src/OrchardCore.Modules/OrchardCore.Media.AmazonS3/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Media.AmazonS3/Startup.cs @@ -34,7 +34,7 @@ public Startup(IShellConfiguration configuration, public override void ConfigureServices(IServiceCollection services) { - services.AddScoped(); + services.AddPermissionProvider(); services.AddNavigationProvider(); services.AddTransient, AwsStorageOptionsConfiguration>(); diff --git a/src/OrchardCore.Modules/OrchardCore.Media.Azure/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Media.Azure/Startup.cs index a5dc14dd15c..903d45f22f3 100644 --- a/src/OrchardCore.Modules/OrchardCore.Media.Azure/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Media.Azure/Startup.cs @@ -39,7 +39,7 @@ public override int Order public override void ConfigureServices(IServiceCollection services) { - services.AddScoped(); + services.AddPermissionProvider(); services.AddNavigationProvider(); services.AddTransient, MediaBlobStorageOptionsConfiguration>(); diff --git a/src/OrchardCore.Modules/OrchardCore.Media/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Media/Startup.cs index e1783cb772d..fa5bfdb002f 100644 --- a/src/OrchardCore.Modules/OrchardCore.Media/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Media/Startup.cs @@ -135,7 +135,7 @@ public override void ConfigureServices(IServiceCollection services) return new DefaultMediaFileStore(fileStore, mediaUrlBase, mediaOptions.CdnBaseUrl, mediaEventHandlers, mediaCreatingEventHandlers, logger); }); - services.AddScoped(); + services.AddPermissionProvider(); services.AddScoped(); services.AddNavigationProvider(); @@ -235,7 +235,7 @@ public sealed class MediaCacheStartup : StartupBase { public override void ConfigureServices(IServiceCollection services) { - services.AddScoped(); + services.AddPermissionProvider(); services.AddNavigationProvider(); } } @@ -328,7 +328,7 @@ public override void ConfigureServices(IServiceCollection services) { // Marker service to easily detect if the feature has been enabled. services.AddSingleton(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddScoped(); services.AddSingleton(); diff --git a/src/OrchardCore.Modules/OrchardCore.Menu/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Menu/Startup.cs index dae33a84d92..99d47aa64fe 100644 --- a/src/OrchardCore.Modules/OrchardCore.Menu/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Menu/Startup.cs @@ -23,7 +23,7 @@ public override void ConfigureServices(IServiceCollection services) { services.AddDataMigration(); services.AddScoped(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddNavigationProvider(); services.AddScoped(); diff --git a/src/OrchardCore.Modules/OrchardCore.MiniProfiler/Startup.cs b/src/OrchardCore.Modules/OrchardCore.MiniProfiler/Startup.cs index 3a83bc8bc7f..c3702f0ecc3 100644 --- a/src/OrchardCore.Modules/OrchardCore.MiniProfiler/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.MiniProfiler/Startup.cs @@ -25,7 +25,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddMiniProfiler(); - services.AddScoped(); + services.AddPermissionProvider(); } public override void Configure(IApplicationBuilder app, IEndpointRouteBuilder routes, IServiceProvider serviceProvider) diff --git a/src/OrchardCore.Modules/OrchardCore.Notifications/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Notifications/Startup.cs index e55d7f3e4c1..a1dfc2d526b 100644 --- a/src/OrchardCore.Modules/OrchardCore.Notifications/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Notifications/Startup.cs @@ -46,7 +46,7 @@ public override void ConfigureServices(IServiceCollection services) services.Configure(o => o.Collections.Add(NotificationConstants.NotificationCollection)); services.AddScoped(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddScoped, ListNotificationOptionsDisplayDriver>(); services.AddScoped, NotificationDisplayDriver>(); services.AddTransient(); diff --git a/src/OrchardCore.Modules/OrchardCore.Placements/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Placements/Startup.cs index 7fc021f8c2b..8d05a7d9891 100644 --- a/src/OrchardCore.Modules/OrchardCore.Placements/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Placements/Startup.cs @@ -18,7 +18,7 @@ public sealed class Startup : StartupBase { public override void ConfigureServices(IServiceCollection services) { - services.AddScoped(); + services.AddPermissionProvider(); services.AddNavigationProvider(); services.TryAddScoped(); diff --git a/src/OrchardCore.Modules/OrchardCore.Queries/Sql/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Queries/Sql/Startup.cs index 0150a61ab26..c1ad8568c5f 100644 --- a/src/OrchardCore.Modules/OrchardCore.Queries/Sql/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Queries/Sql/Startup.cs @@ -18,7 +18,7 @@ public sealed class Startup : StartupBase { public override void ConfigureServices(IServiceCollection services) { - services.AddScoped(); + services.AddPermissionProvider(); services.AddScoped, SqlQueryDisplayDriver>(); services.AddQuerySource(SqlQuerySource.SourceName); diff --git a/src/OrchardCore.Modules/OrchardCore.Queries/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Queries/Startup.cs index a148c2f6fe1..8564f6e7835 100644 --- a/src/OrchardCore.Modules/OrchardCore.Queries/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Queries/Startup.cs @@ -26,7 +26,7 @@ public override void ConfigureServices(IServiceCollection services) { services.AddNavigationProvider(); services.AddScoped, QueryDisplayDriver>(); - services.AddScoped(); + services.AddPermissionProvider(); } } diff --git a/src/OrchardCore.Modules/OrchardCore.ReCaptcha/Startup.cs b/src/OrchardCore.Modules/OrchardCore.ReCaptcha/Startup.cs index babfcbd09db..489df3464de 100644 --- a/src/OrchardCore.Modules/OrchardCore.ReCaptcha/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.ReCaptcha/Startup.cs @@ -22,7 +22,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddReCaptcha(); services.AddSiteDisplayDriver(); services.AddNavigationProvider(); - services.AddScoped(); + services.AddPermissionProvider(); } } diff --git a/src/OrchardCore.Modules/OrchardCore.ReverseProxy/Startup.cs b/src/OrchardCore.Modules/OrchardCore.ReverseProxy/Startup.cs index 83c442f5a8b..bc7d7eee61b 100644 --- a/src/OrchardCore.Modules/OrchardCore.ReverseProxy/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.ReverseProxy/Startup.cs @@ -27,7 +27,7 @@ public override void Configure(IApplicationBuilder app, IEndpointRouteBuilder ro public override void ConfigureServices(IServiceCollection services) { services.AddNavigationProvider(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddSiteDisplayDriver(); services.AddSingleton(); diff --git a/src/OrchardCore.Modules/OrchardCore.Roles/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Roles/Startup.cs index 25460ba5ee7..e471648fdd2 100644 --- a/src/OrchardCore.Modules/OrchardCore.Roles/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Roles/Startup.cs @@ -26,7 +26,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddRecipeExecutionStep(); services.AddScoped(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddNavigationProvider(); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Startup.cs index 97850455df4..6e71de34f8c 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Startup.cs @@ -93,7 +93,7 @@ public override void ConfigureServices(IServiceCollection services) }); services.AddElasticServices(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddNavigationProvider(); services.AddScoped, ElasticQueryDisplayDriver>(); services.AddDataMigration(); diff --git a/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Startup.cs index 340d88760f8..ed1c38fc995 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Startup.cs @@ -41,7 +41,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddScoped(); services.AddScoped(); services.AddNavigationProvider(); - services.AddScoped(); + services.AddPermissionProvider(); services.Configure(o => o.Analyzers.Add(new LuceneAnalyzer(LuceneSettings.StandardAnalyzer, diff --git a/src/OrchardCore.Modules/OrchardCore.Search/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Search/Startup.cs index b8de6c4b31b..387e1e78d2e 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search/Startup.cs @@ -30,7 +30,7 @@ public override void ConfigureServices(IServiceCollection services) { services.AddTransient, SearchSettingsConfiguration>(); services.AddNavigationProvider(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddSiteDisplayDriver(); services.AddContentPart() diff --git a/src/OrchardCore.Modules/OrchardCore.Security/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Security/Startup.cs index d5630b1d825..753cbabe759 100644 --- a/src/OrchardCore.Modules/OrchardCore.Security/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Security/Startup.cs @@ -19,7 +19,7 @@ public override int Order public override void ConfigureServices(IServiceCollection services) { - services.AddScoped(); + services.AddPermissionProvider(); services.AddSiteDisplayDriver(); services.AddNavigationProvider(); services.AddSingleton(); diff --git a/src/OrchardCore.Modules/OrchardCore.Seo/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Seo/Startup.cs index f3df3aa7692..2bd7b77ddb8 100644 --- a/src/OrchardCore.Modules/OrchardCore.Seo/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Seo/Startup.cs @@ -36,7 +36,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddScoped(); services.AddScoped(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddSiteDisplayDriver(); services.AddNavigationProvider(); services.AddTransient(); diff --git a/src/OrchardCore.Modules/OrchardCore.Settings/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Settings/Startup.cs index 198bd1ca2e4..297c05eb43f 100644 --- a/src/OrchardCore.Modules/OrchardCore.Settings/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Settings/Startup.cs @@ -64,7 +64,7 @@ public override void ConfigureServices(IServiceCollection services) }); services.AddScoped(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddScoped(); services.AddRecipeExecutionStep(); diff --git a/src/OrchardCore.Modules/OrchardCore.Shortcodes/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Shortcodes/Startup.cs index fcf73ac8b8c..8ba57ef578d 100644 --- a/src/OrchardCore.Modules/OrchardCore.Shortcodes/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Shortcodes/Startup.cs @@ -62,7 +62,7 @@ public sealed class ShortcodeTemplatesStartup : StartupBase public override void ConfigureServices(IServiceCollection services) { services.AddScoped(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddNavigationProvider(); services.AddRecipeExecutionStep(); diff --git a/src/OrchardCore.Modules/OrchardCore.Sitemaps/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Sitemaps/Startup.cs index 32d86b52ad7..04e964124a1 100644 --- a/src/OrchardCore.Modules/OrchardCore.Sitemaps/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Sitemaps/Startup.cs @@ -32,7 +32,7 @@ public override void ConfigureServices(IServiceCollection services) { services.AddDataMigration(); services.AddNavigationProvider(); - services.AddScoped(); + services.AddPermissionProvider(); services.Configure(options => { diff --git a/src/OrchardCore.Modules/OrchardCore.Sms/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Sms/Startup.cs index 526a154df33..392e15841c1 100644 --- a/src/OrchardCore.Modules/OrchardCore.Sms/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Sms/Startup.cs @@ -34,7 +34,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddTwilioSmsProvider() .AddSiteDisplayDriver(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddSiteDisplayDriver(); services.AddNavigationProvider(); } diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Startup.cs index a0c334a5831..9d6bec29ae1 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Startup.cs @@ -47,7 +47,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddDataMigration(); services.AddScoped(); - services.AddScoped(); + services.AddPermissionProvider(); // Taxonomy Part services.AddContentPart() diff --git a/src/OrchardCore.Modules/OrchardCore.Templates/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Templates/Startup.cs index 103ffdefe12..a351c8a6edc 100644 --- a/src/OrchardCore.Modules/OrchardCore.Templates/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Templates/Startup.cs @@ -24,7 +24,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddScoped(); services.AddScoped(); services.AddScoped(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddNavigationProvider(); services.AddRecipeExecutionStep(); @@ -36,7 +36,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddDeployment(); services.AddScoped(); - services.AddScoped(); + services.AddPermissionProvider(); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Tenants/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Tenants/Startup.cs index 0045a191803..bde8b7341c9 100644 --- a/src/OrchardCore.Modules/OrchardCore.Tenants/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Tenants/Startup.cs @@ -32,7 +32,7 @@ public Startup(IShellConfiguration shellConfiguration) public override void ConfigureServices(IServiceCollection services) { services.AddNavigationProvider(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddScoped(); services.AddScoped(); services.AddSetup(); diff --git a/src/OrchardCore.Modules/OrchardCore.Themes/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Themes/Startup.cs index 07333f92bd4..d467adf8158 100644 --- a/src/OrchardCore.Modules/OrchardCore.Themes/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Themes/Startup.cs @@ -26,7 +26,7 @@ public override void ConfigureServices(IServiceCollection services) { services.AddTransient, ResourceManagementOptionsConfiguration>(); services.AddRecipeExecutionStep(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddScoped(); services.AddScoped(); services.AddNavigationProvider(); diff --git a/src/OrchardCore.Modules/OrchardCore.Twitter/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Twitter/Startup.cs index 42ea0554984..75cd10881a4 100644 --- a/src/OrchardCore.Modules/OrchardCore.Twitter/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Twitter/Startup.cs @@ -24,7 +24,7 @@ public sealed class Startup : StartupBase { public override void ConfigureServices(IServiceCollection services) { - services.AddScoped(); + services.AddPermissionProvider(); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Users/Startup.cs index 28a801ef8b5..b099edd9d46 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Startup.cs @@ -202,7 +202,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddScoped(); services.AddScoped(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddNavigationProvider(); services.AddSiteDisplayDriver(); @@ -256,7 +256,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddIndexProvider(); services.AddScoped, UserRoleDisplayDriver>(); services.AddScoped(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddSingleton(); } } @@ -540,7 +540,7 @@ public sealed class CustomUserSettingsStartup : StartupBase public override void ConfigureServices(IServiceCollection services) { services.AddScoped, CustomUserSettingsDisplayDriver>(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddDeployment(); services.AddScoped(); diff --git a/src/OrchardCore.Modules/OrchardCore.Workflows/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Workflows/Startup.cs index 00a50e2851f..c0a57999433 100644 --- a/src/OrchardCore.Modules/OrchardCore.Workflows/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Workflows/Startup.cs @@ -60,7 +60,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddScoped(); services.AddDataMigration(); services.AddNavigationProvider(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddScoped, MissingActivityDisplayDriver>(); services.AddIndexProvider(); services.AddIndexProvider(); diff --git a/src/OrchardCore/OrchardCore.ContentManagement.GraphQL/ServiceCollectionExtensions.cs b/src/OrchardCore/OrchardCore.ContentManagement.GraphQL/ServiceCollectionExtensions.cs index b379d9b4e6a..7727a8f484d 100644 --- a/src/OrchardCore/OrchardCore.ContentManagement.GraphQL/ServiceCollectionExtensions.cs +++ b/src/OrchardCore/OrchardCore.ContentManagement.GraphQL/ServiceCollectionExtensions.cs @@ -20,7 +20,7 @@ public static IServiceCollection AddContentGraphQL(this IServiceCollection servi services.AddTransient(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddTransient(); services.AddScoped(); diff --git a/src/OrchardCore/OrchardCore.Infrastructure.Abstractions/Security/Permissions/IPermissionProvider.cs b/src/OrchardCore/OrchardCore.Infrastructure.Abstractions/Security/Permissions/IPermissionProvider.cs index 6e00cb55fbc..63d14a5990c 100644 --- a/src/OrchardCore/OrchardCore.Infrastructure.Abstractions/Security/Permissions/IPermissionProvider.cs +++ b/src/OrchardCore/OrchardCore.Infrastructure.Abstractions/Security/Permissions/IPermissionProvider.cs @@ -9,9 +9,3 @@ public interface IPermissionProvider Task> GetPermissionsAsync(); IEnumerable GetDefaultStereotypes(); } - -public class PermissionStereotype -{ - public string Name { get; set; } - public IEnumerable Permissions { get; set; } -} diff --git a/src/OrchardCore/OrchardCore.Infrastructure.Abstractions/Security/Permissions/PermissionStereotype.cs b/src/OrchardCore/OrchardCore.Infrastructure.Abstractions/Security/Permissions/PermissionStereotype.cs new file mode 100644 index 00000000000..e679309e09e --- /dev/null +++ b/src/OrchardCore/OrchardCore.Infrastructure.Abstractions/Security/Permissions/PermissionStereotype.cs @@ -0,0 +1,8 @@ +namespace OrchardCore.Security.Permissions; + +public class PermissionStereotype +{ + public string Name { get; set; } + + public IEnumerable Permissions { get; set; } +} diff --git a/src/OrchardCore/OrchardCore.Infrastructure.Abstractions/Security/Permissions/PermissionsServiceCollectionExtensions.cs b/src/OrchardCore/OrchardCore.Infrastructure.Abstractions/Security/Permissions/PermissionsServiceCollectionExtensions.cs new file mode 100644 index 00000000000..ecef453aa25 --- /dev/null +++ b/src/OrchardCore/OrchardCore.Infrastructure.Abstractions/Security/Permissions/PermissionsServiceCollectionExtensions.cs @@ -0,0 +1,12 @@ +using Microsoft.Extensions.DependencyInjection; + +namespace OrchardCore.Security.Permissions; + +public static class PermissionsServiceCollectionExtensions +{ + public static IServiceCollection AddPermissionProvider(this IServiceCollection services) + where TProvider : class, IPermissionProvider + { + return services.AddScoped(); + } +} diff --git a/src/OrchardCore/OrchardCore.Search.AzureAI.Core/Extensions/ServiceCollectionExtensions.cs b/src/OrchardCore/OrchardCore.Search.AzureAI.Core/Extensions/ServiceCollectionExtensions.cs index 144481e8082..e4378a0549f 100644 --- a/src/OrchardCore/OrchardCore.Search.AzureAI.Core/Extensions/ServiceCollectionExtensions.cs +++ b/src/OrchardCore/OrchardCore.Search.AzureAI.Core/Extensions/ServiceCollectionExtensions.cs @@ -17,7 +17,7 @@ public static IServiceCollection AddAzureAISearchServices(this IServiceCollectio { services.AddTransient, AzureAISearchDefaultOptionsConfigurations>(); services.AddAzureClientsCore(); - services.AddScoped(); + services.AddPermissionProvider(); services.AddScoped(); services.AddScoped(); services.AddScoped(); diff --git a/src/docs/releases/2.0.0.md b/src/docs/releases/2.0.0.md index e213d1d330a..664bdea52af 100644 --- a/src/docs/releases/2.0.0.md +++ b/src/docs/releases/2.0.0.md @@ -757,3 +757,7 @@ The Workflows module now has a `Trimming` feature to automatically clean up old The methods `public static string TrimEnd(this string value, string trim = "")` from `OrchardCore.Mvc.Utilities` and `OrchardCore.ContentManagement.Utilities` are being obsoleted and replaced by `OrchardCore.ContentManagement.Utilities.TrimEndString(this string value, string suffix)`. This was done to prepare the code base for the next .NET 9.0 release which has a conflicting method with a different behavior. + +### Miscellaneous + +A new extension has been introduced to simplify the registration of permission providers. Instead of using `service.AddScoped()`, you can now register it with the more streamlined `service.AddPermissionProvider()`.