Browse Source

Use RequireAuthenticated&RequireFeatures&RequirePermissions for menus.

pull/8742/head
maliming 6 years ago
parent
commit
e755788332
  1. 41
      modules/cms-kit/host/Volo.CmsKit.Web.Host/CmsKitWebHostMenuContributor.cs
  2. 102
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Menus/CmsKitAdminMenuContributor.cs
  3. 1
      modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityWebMainMenuContributor.cs
  4. 12
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Menus/MyProjectNameMenuContributor.cs
  5. 19
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Menus/MyProjectNameMenuContributor.cs
  6. 12
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Menus/MyProjectNameMenuContributor.cs
  7. 40
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostMenuContributor.cs

41
modules/cms-kit/host/Volo.CmsKit.Web.Host/CmsKitWebHostMenuContributor.cs

@ -4,6 +4,7 @@ using Localization.Resources.AbpUi;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using Volo.Abp.Authorization.Permissions;
using Volo.CmsKit.Localization; using Volo.CmsKit.Localization;
using Volo.Abp.UI.Navigation; using Volo.Abp.UI.Navigation;
using Volo.Abp.Users; using Volo.Abp.Users;
@ -31,30 +32,26 @@ namespace Volo.CmsKit
private void AddLogoutItemToMenu(MenuConfigurationContext context) private void AddLogoutItemToMenu(MenuConfigurationContext context)
{ {
var currentUser = context.ServiceProvider.GetRequiredService<ICurrentUser>();
var l = context.GetLocalizer<CmsKitResource>(); var l = context.GetLocalizer<CmsKitResource>();
if (currentUser.IsAuthenticated) context.Menu.Items.Add(new ApplicationMenuItem(
{ "Account.Manage",
context.Menu.Items.Add(new ApplicationMenuItem( l["ManageYourProfile"],
"Account.Manage", $"{_configuration["AuthServer:Authority"].EnsureEndsWith('/')}Account/Manage",
l["ManageYourProfile"], icon: "fa fa-cog",
$"{_configuration["AuthServer:Authority"].EnsureEndsWith('/')}Account/Manage", order: int.MaxValue - 1001,
icon: "fa fa-cog", null,
order: int.MaxValue - 1001, "_blank"
null, ).RequireAuthenticated());
"_blank")
);
context.Menu.Items.Add(new ApplicationMenuItem(
"Account.Logout",
context.Menu.Items.Add(new ApplicationMenuItem( l["Logout"],
"Account.Logout", "~/Account/Logout",
l["Logout"], "fas fa-power-off",
"~/Account/Logout", order: int.MaxValue - 1000
"fas fa-power-off", ).RequireAuthenticated());
order: int.MaxValue - 1000
));
}
} }
} }
} }

102
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Menus/CmsKitAdminMenuContributor.cs

@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.GlobalFeatures; using Volo.Abp.GlobalFeatures;
using Volo.Abp.UI.Navigation; using Volo.Abp.UI.Navigation;
using Volo.CmsKit.GlobalFeatures; using Volo.CmsKit.GlobalFeatures;
@ -29,67 +30,46 @@ namespace Volo.CmsKit.Admin.Web.Menus
var l = context.GetLocalizer<CmsKitResource>(); var l = context.GetLocalizer<CmsKitResource>();
var cmsMenus = new List<ApplicationMenuItem>(); var cmsMenus = new List<ApplicationMenuItem>();
if (GlobalFeatureManager.Instance.IsEnabled<PagesFeature>())
{
if (await context.IsGrantedAsync(CmsKitAdminPermissions.Pages.Default))
{
cmsMenus.Add(new ApplicationMenuItem(
CmsKitAdminMenus.Pages.PagesMenu,
l["Pages"].Value,
"/Cms/Pages",
"fa fa-file-alt"));
}
}
if (GlobalFeatureManager.Instance.IsEnabled<BlogsFeature>())
{
if (await context.IsGrantedAsync(CmsKitAdminPermissions.Blogs.Default))
{
cmsMenus.Add(new ApplicationMenuItem(
CmsKitAdminMenus.Blogs.BlogsMenu,
l["Blogs"],
"/Cms/Blogs",
"fa fa-blog"
));
}
if (await context.IsGrantedAsync(CmsKitAdminPermissions.BlogPosts.Default)) cmsMenus.Add(new ApplicationMenuItem(
{ CmsKitAdminMenus.Pages.PagesMenu,
cmsMenus.Add(new ApplicationMenuItem( l["Pages"].Value,
CmsKitAdminMenus.BlogPosts.BlogPostsMenu, "/Cms/Pages",
l["BlogPosts"], "fa fa-file-alt")
"/Cms/BlogPosts", .RequireGlobalFeatures(typeof(PagesFeature))
"fa fa-file-signature" .RequirePermissions(CmsKitAdminPermissions.Pages.Default));
));
} cmsMenus.Add(new ApplicationMenuItem(
} CmsKitAdminMenus.Blogs.BlogsMenu,
l["Blogs"],
if (GlobalFeatureManager.Instance.IsEnabled<TagsFeature>()) "/Cms/Blogs",
{ "fa fa-blog")
if (await context.IsGrantedAsync(CmsKitAdminPermissions.Tags.Default)) .RequireGlobalFeatures(typeof(BlogsFeature))
{ .RequirePermissions(CmsKitAdminPermissions.Blogs.Default));
cmsMenus.Add(new ApplicationMenuItem(
CmsKitAdminMenus.Tags.TagsMenu, cmsMenus.Add(new ApplicationMenuItem(
l["Tags"].Value, CmsKitAdminMenus.BlogPosts.BlogPostsMenu,
"/Cms/Tags", l["BlogPosts"],
"fa fa-tags")); "/Cms/BlogPosts",
} "fa fa-file-signature")
} .RequireGlobalFeatures(typeof(BlogsFeature))
.RequirePermissions(CmsKitAdminPermissions.BlogPosts.Default));
if (GlobalFeatureManager.Instance.IsEnabled<CommentsFeature>())
{ cmsMenus.Add(new ApplicationMenuItem(
if (await context.IsGrantedAsync(CmsKitAdminPermissions.Comments.Default)) CmsKitAdminMenus.Tags.TagsMenu,
{ l["Tags"].Value,
cmsMenus.Add(new ApplicationMenuItem( "/Cms/Tags",
CmsKitAdminMenus.Comments.CommentsMenu, "fa fa-tags")
l["Comments"].Value, .RequireGlobalFeatures(typeof(TagsFeature))
"/Cms/Comments", .RequirePermissions(CmsKitAdminPermissions.Tags.Default));
"fa fa-comments"
) cmsMenus.Add(new ApplicationMenuItem(
); CmsKitAdminMenus.Comments.CommentsMenu,
} l["Comments"].Value,
} "/Cms/Comments",
"fa fa-comments")
.RequireGlobalFeatures(typeof(CommentsFeature))
.RequirePermissions(CmsKitAdminPermissions.Comments.Default));
if (cmsMenus.Any()) if (cmsMenus.Any())
{ {
@ -112,4 +92,4 @@ namespace Volo.CmsKit.Admin.Web.Menus
} }
} }
} }
} }

1
modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityWebMainMenuContributor.cs

@ -27,7 +27,6 @@ namespace Volo.Abp.Identity.Blazor
l["Roles"], l["Roles"],
url: "~/identity/roles").RequirePermissions(IdentityPermissions.Roles.Default)); url: "~/identity/roles").RequirePermissions(IdentityPermissions.Roles.Default));
identityMenuItem.AddItem(new ApplicationMenuItem( identityMenuItem.AddItem(new ApplicationMenuItem(
IdentityMenuNames.Users, IdentityMenuNames.Users,
l["Users"], l["Users"],

12
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Menus/MyProjectNameMenuContributor.cs

@ -6,6 +6,7 @@ using MyCompanyName.MyProjectName.Localization;
using MyCompanyName.MyProjectName.MultiTenancy; using MyCompanyName.MyProjectName.MultiTenancy;
using Volo.Abp.Account.Localization; using Volo.Abp.Account.Localization;
using Volo.Abp.Identity.Blazor; using Volo.Abp.Identity.Blazor;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.SettingManagement.Blazor.Menus; using Volo.Abp.SettingManagement.Blazor.Menus;
using Volo.Abp.TenantManagement.Blazor.Navigation; using Volo.Abp.TenantManagement.Blazor.Navigation;
using Volo.Abp.UI.Navigation; using Volo.Abp.UI.Navigation;
@ -69,16 +70,11 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Tiered.Menus
{ {
var l = context.GetLocalizer<MyProjectNameResource>(); var l = context.GetLocalizer<MyProjectNameResource>();
var accountStringLocalizer = context.GetLocalizer<AccountResource>(); var accountStringLocalizer = context.GetLocalizer<AccountResource>();
var currentUser = context.ServiceProvider.GetRequiredService<ICurrentUser>();
var identityServerUrl = _configuration["AuthServer:Authority"] ?? ""; var identityServerUrl = _configuration["AuthServer:Authority"] ?? "";
if (currentUser.IsAuthenticated) context.Menu.AddItem(new ApplicationMenuItem("Account.Manage", accountStringLocalizer["ManageYourProfile"],
{ $"{identityServerUrl.EnsureEndsWith('/')}Account/Manage?returnUrl={_configuration["App:SelfUrl"]}", icon: "fa fa-cog", order: 1000, null, "_blank").RequireAuthenticated());
context.Menu.AddItem(new ApplicationMenuItem("Account.Manage", accountStringLocalizer["ManageYourProfile"], context.Menu.AddItem(new ApplicationMenuItem("Account.Logout", l["Logout"], url: "~/Account/Logout", icon: "fa fa-power-off", order: int.MaxValue - 1000).RequireAuthenticated());
$"{identityServerUrl.EnsureEndsWith('/')}Account/Manage?returnUrl={_configuration["App:SelfUrl"]}", icon: "fa fa-cog", order: 1000, null, "_blank"));
context.Menu.AddItem(new ApplicationMenuItem("Account.Logout", l["Logout"], url: "~/Account/Logout", icon: "fa fa-power-off", order: int.MaxValue - 1000));
}
return Task.CompletedTask; return Task.CompletedTask;
} }

19
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Menus/MyProjectNameMenuContributor.cs

@ -4,6 +4,7 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using MyCompanyName.MyProjectName.Localization; using MyCompanyName.MyProjectName.Localization;
using Volo.Abp.Account.Localization; using Volo.Abp.Account.Localization;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.UI.Navigation; using Volo.Abp.UI.Navigation;
using Volo.Abp.Users; using Volo.Abp.Users;
@ -50,20 +51,16 @@ namespace MyCompanyName.MyProjectName.Blazor.Menus
private Task ConfigureUserMenuAsync(MenuConfigurationContext context) private Task ConfigureUserMenuAsync(MenuConfigurationContext context)
{ {
var accountStringLocalizer = context.GetLocalizer<AccountResource>(); var accountStringLocalizer = context.GetLocalizer<AccountResource>();
var currentUser = context.ServiceProvider.GetRequiredService<ICurrentUser>();
var identityServerUrl = _configuration["AuthServer:Authority"] ?? ""; var identityServerUrl = _configuration["AuthServer:Authority"] ?? "";
if (currentUser.IsAuthenticated) context.Menu.AddItem(new ApplicationMenuItem(
{ "Account.Manage",
context.Menu.AddItem(new ApplicationMenuItem( accountStringLocalizer["ManageYourProfile"],
"Account.Manage", $"{identityServerUrl.EnsureEndsWith('/')}Account/Manage?returnUrl={_configuration["App:SelfUrl"]}",
accountStringLocalizer["ManageYourProfile"], icon: "fa fa-cog",
$"{identityServerUrl.EnsureEndsWith('/')}Account/Manage?returnUrl={_configuration["App:SelfUrl"]}", order: 1000,
icon: "fa fa-cog", null).RequireAuthenticated());
order: 1000,
null));
}
return Task.CompletedTask; return Task.CompletedTask;
} }

12
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Menus/MyProjectNameMenuContributor.cs

@ -5,6 +5,7 @@ using Microsoft.Extensions.DependencyInjection;
using MyCompanyName.MyProjectName.Localization; using MyCompanyName.MyProjectName.Localization;
using MyCompanyName.MyProjectName.MultiTenancy; using MyCompanyName.MyProjectName.MultiTenancy;
using Volo.Abp.Account.Localization; using Volo.Abp.Account.Localization;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Identity.Web.Navigation; using Volo.Abp.Identity.Web.Navigation;
using Volo.Abp.SettingManagement.Web.Navigation; using Volo.Abp.SettingManagement.Web.Navigation;
using Volo.Abp.TenantManagement.Web.Navigation; using Volo.Abp.TenantManagement.Web.Navigation;
@ -69,16 +70,11 @@ namespace MyCompanyName.MyProjectName.Web.Menus
{ {
var l = context.GetLocalizer<MyProjectNameResource>(); var l = context.GetLocalizer<MyProjectNameResource>();
var accountStringLocalizer = context.GetLocalizer<AccountResource>(); var accountStringLocalizer = context.GetLocalizer<AccountResource>();
var currentUser = context.ServiceProvider.GetRequiredService<ICurrentUser>();
var identityServerUrl = _configuration["AuthServer:Authority"] ?? ""; var identityServerUrl = _configuration["AuthServer:Authority"] ?? "";
if (currentUser.IsAuthenticated) context.Menu.AddItem(new ApplicationMenuItem("Account.Manage", accountStringLocalizer["ManageYourProfile"],
{ $"{identityServerUrl.EnsureEndsWith('/')}Account/Manage?returnUrl={_configuration["App:SelfUrl"]}", icon: "fa fa-cog", order: 1000, null, "_blank").RequireAuthenticated());
context.Menu.AddItem(new ApplicationMenuItem("Account.Manage", accountStringLocalizer["ManageYourProfile"], context.Menu.AddItem(new ApplicationMenuItem("Account.Logout", l["Logout"], url: "~/Account/Logout", icon: "fa fa-power-off", order: int.MaxValue - 1000).RequireAuthenticated());
$"{identityServerUrl.EnsureEndsWith('/')}Account/Manage?returnUrl={_configuration["App:SelfUrl"]}", icon: "fa fa-cog", order: 1000, null, "_blank"));
context.Menu.AddItem(new ApplicationMenuItem("Account.Logout", l["Logout"], url: "~/Account/Logout", icon: "fa fa-power-off", order: int.MaxValue - 1000));
}
return Task.CompletedTask; return Task.CompletedTask;
} }

40
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostMenuContributor.cs

@ -5,6 +5,7 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using MyCompanyName.MyProjectName.Localization; using MyCompanyName.MyProjectName.Localization;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.UI.Navigation; using Volo.Abp.UI.Navigation;
using Volo.Abp.Users; using Volo.Abp.Users;
@ -31,30 +32,25 @@ namespace MyCompanyName.MyProjectName
private void AddLogoutItemToMenu(MenuConfigurationContext context) private void AddLogoutItemToMenu(MenuConfigurationContext context)
{ {
var currentUser = context.ServiceProvider.GetRequiredService<ICurrentUser>();
var l = context.GetLocalizer<MyProjectNameResource>(); var l = context.GetLocalizer<MyProjectNameResource>();
if (currentUser.IsAuthenticated) context.Menu.Items.Add(new ApplicationMenuItem(
{ "Account.Manage",
context.Menu.Items.Add(new ApplicationMenuItem( l["ManageYourProfile"],
"Account.Manage", $"{_configuration["AuthServer:Authority"].EnsureEndsWith('/')}Account/Manage",
l["ManageYourProfile"], icon: "fa fa-cog",
$"{_configuration["AuthServer:Authority"].EnsureEndsWith('/')}Account/Manage", order: int.MaxValue - 1001,
icon: "fa fa-cog", null,
order: int.MaxValue - 1001, "_blank"
null, ).RequireAuthenticated());
"_blank")
); context.Menu.Items.Add(new ApplicationMenuItem(
"Account.Logout",
l["Logout"],
context.Menu.Items.Add(new ApplicationMenuItem( "~/Account/Logout",
"Account.Logout", "fas fa-power-off",
l["Logout"], order: int.MaxValue - 1000
"~/Account/Logout", ).RequireAuthenticated());
"fas fa-power-off",
order: int.MaxValue - 1000
));
}
} }
} }
} }

Loading…
Cancel
Save