From f4f6f66760e7975050f81a9938b9ab6e9c53cc6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 19 Mar 2021 09:31:03 +0300 Subject: [PATCH] Add usermenu --- .../Menus/MyProjectNameMenuContributor.cs | 53 ++++++++++++++++++- .../MyProjectNameBlazorModule.cs | 6 +-- 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Menus/MyProjectNameMenuContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Menus/MyProjectNameMenuContributor.cs index eb9cd2b5ae..142c5008ab 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Menus/MyProjectNameMenuContributor.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Menus/MyProjectNameMenuContributor.cs @@ -1,21 +1,42 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; using MyCompanyName.MyProjectName.Localization; +using MyCompanyName.MyProjectName.MultiTenancy; +using Volo.Abp.Account.Localization; +using Volo.Abp.Identity.Blazor; +using Volo.Abp.SettingManagement.Blazor.Menus; +using Volo.Abp.TenantManagement.Blazor.Navigation; using Volo.Abp.UI.Navigation; +using Volo.Abp.Users; namespace MyCompanyName.MyProjectName.Blazor.Server.Tiered.Menus { public class MyProjectNameMenuContributor : IMenuContributor { + private readonly IConfiguration _configuration; + + public MyProjectNameMenuContributor(IConfiguration configuration) + { + _configuration = configuration; + } + public async Task ConfigureMenuAsync(MenuConfigurationContext context) { if (context.Menu.Name == StandardMenus.Main) { await ConfigureMainMenuAsync(context); } + else if (context.Menu.Name == StandardMenus.User) + { + await ConfigureUserMenuAsync(context); + } } private Task ConfigureMainMenuAsync(MenuConfigurationContext context) { + var administration = context.Menu.GetAdministration(); var l = context.GetLocalizer(); context.Menu.Items.Insert( @@ -27,6 +48,36 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Tiered.Menus icon: "fas fa-home" ) ); + + if (MultiTenancyConsts.IsEnabled) + { + administration.SetSubItemOrder(TenantManagementMenuNames.GroupName, 1); + } + else + { + administration.TryRemoveMenuItem(TenantManagementMenuNames.GroupName); + } + + administration.SetSubItemOrder(IdentityMenuNames.GroupName, 2); + administration.SetSubItemOrder(SettingManagementMenus.GroupName, 3); + + return Task.CompletedTask; + } + + private Task ConfigureUserMenuAsync(MenuConfigurationContext context) + { + var l = context.GetLocalizer(); + var accountStringLocalizer = context.GetLocalizer(); + var currentUser = context.ServiceProvider.GetRequiredService(); + + 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")); + context.Menu.AddItem(new ApplicationMenuItem("Account.Logout", l["Logout"], url: "~/Account/Logout", icon: "fa fa-power-off", order: int.MaxValue - 1000)); + } return Task.CompletedTask; } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs index 4b72c458e2..aa63a0ee6b 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs @@ -97,7 +97,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Tiered ConfigureHttpClient(context); ConfigureBlazorise(context); ConfigureRouter(context); - ConfigureMenu(context); + ConfigureMenu(configuration); ConfigureRedis(context, configuration, hostingEnvironment); ConfigureSwaggerServices(context.Services); } @@ -240,11 +240,11 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Tiered .AddFontAwesomeIcons(); } - private void ConfigureMenu(ServiceConfigurationContext context) + private void ConfigureMenu(IConfiguration configuration) { Configure(options => { - options.MenuContributors.Add(new MyProjectNameMenuContributor()); + options.MenuContributors.Add(new MyProjectNameMenuContributor(configuration)); }); Configure(options =>