Browse Source

Fixed #2568: User menu in Module.Web.Host not working.

pull/2599/head
Halil İbrahim Kalkan 7 years ago
parent
commit
b07a181db7
  1. 9
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Menus/MyProjectNameMenuContributor.cs
  2. 9
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/Controllers/AccountController.cs
  3. 60
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostMenuContributor.cs
  4. 12
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs
  5. 2
      templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/en.json
  6. 6
      templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/tr.json

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

@ -8,6 +8,7 @@ using MyCompanyName.MyProjectName.MultiTenancy;
using Volo.Abp.Account.Localization; using Volo.Abp.Account.Localization;
using Volo.Abp.TenantManagement.Web.Navigation; using Volo.Abp.TenantManagement.Web.Navigation;
using Volo.Abp.UI.Navigation; using Volo.Abp.UI.Navigation;
using Volo.Abp.Users;
namespace MyCompanyName.MyProjectName.Web.Menus namespace MyCompanyName.MyProjectName.Web.Menus
{ {
@ -51,11 +52,15 @@ namespace MyCompanyName.MyProjectName.Web.Menus
{ {
var l = context.ServiceProvider.GetRequiredService<IStringLocalizer<MyProjectNameResource>>(); var l = context.ServiceProvider.GetRequiredService<IStringLocalizer<MyProjectNameResource>>();
var accountStringLocalizer = context.ServiceProvider.GetRequiredService<IStringLocalizer<AccountResource>>(); var accountStringLocalizer = context.ServiceProvider.GetRequiredService<IStringLocalizer<AccountResource>>();
var currentUser = context.ServiceProvider.GetRequiredService<ICurrentUser>();
var identityServerUrl = _configuration["AuthServer:Authority"] ?? ""; var identityServerUrl = _configuration["AuthServer:Authority"] ?? "";
context.Menu.AddItem(new ApplicationMenuItem("Account.Manage", accountStringLocalizer["ManageYourProfile"], $"{identityServerUrl.EnsureEndsWith('/')}Account/Manage", icon: "fa fa-cog", order: 1000, null, "_blank")); if (currentUser.IsAuthenticated)
context.Menu.AddItem(new ApplicationMenuItem("Account.Logout", l["Logout"], url: "/Account/Logout", icon: "fa fa-power-off", order: int.MaxValue - 1000)); {
context.Menu.AddItem(new ApplicationMenuItem("Account.Manage", accountStringLocalizer["ManageYourProfile"], $"{identityServerUrl.EnsureEndsWith('/')}Account/Manage", 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;
} }

9
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/Controllers/AccountController.cs

@ -0,0 +1,9 @@
using Volo.Abp.AspNetCore.Mvc.Authentication;
namespace MyCompanyName.MyProjectName.Controllers
{
public class AccountController : ChallengeAccountController
{
}
}

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

@ -0,0 +1,60 @@
using System;
using System.Threading.Tasks;
using Localization.Resources.AbpUi;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
using MyCompanyName.MyProjectName.Localization;
using Volo.Abp.UI.Navigation;
using Volo.Abp.Users;
namespace MyCompanyName.MyProjectName
{
public class MyProjectNameWebHostMenuContributor : IMenuContributor
{
private readonly IConfiguration _configuration;
public MyProjectNameWebHostMenuContributor(IConfiguration configuration)
{
_configuration = configuration;
}
public Task ConfigureMenuAsync(MenuConfigurationContext context)
{
if (context.Menu.Name == StandardMenus.User)
{
AddLogoutItemToMenu(context);
}
return Task.CompletedTask;
}
private void AddLogoutItemToMenu(MenuConfigurationContext context)
{
var currentUser = context.ServiceProvider.GetRequiredService<ICurrentUser>();
var l = context.ServiceProvider.GetRequiredService<IStringLocalizer<MyProjectNameResource>>();
if (currentUser.IsAuthenticated)
{
context.Menu.Items.Add(new ApplicationMenuItem(
"Account.Manage",
l["ManageYourProfile"],
$"{_configuration["AuthServer:Authority"].EnsureEndsWith('/')}Account/Manage",
icon: "fa fa-cog",
order: int.MaxValue - 1001,
null,
"_blank")
);
context.Menu.Items.Add(new ApplicationMenuItem(
"Account.Logout",
l["Logout"],
"/Account/Logout",
"fas fa-power-off",
order: int.MaxValue - 1000
));
}
}
}
}

12
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs

@ -37,6 +37,7 @@ using Volo.Abp.TenantManagement;
using Volo.Abp.TenantManagement.Web; using Volo.Abp.TenantManagement.Web;
using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.UI.Navigation.Urls;
using Volo.Abp.UI; using Volo.Abp.UI;
using Volo.Abp.UI.Navigation;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace MyCompanyName.MyProjectName namespace MyCompanyName.MyProjectName
@ -76,6 +77,7 @@ namespace MyCompanyName.MyProjectName
var hostingEnvironment = context.Services.GetHostingEnvironment(); var hostingEnvironment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration(); var configuration = context.Services.GetConfiguration();
ConfigureMenu(configuration);
ConfigureCache(configuration); ConfigureCache(configuration);
ConfigureUrls(configuration); ConfigureUrls(configuration);
ConfigureAuthentication(context, configuration); ConfigureAuthentication(context, configuration);
@ -85,7 +87,15 @@ namespace MyCompanyName.MyProjectName
ConfigureMultiTenancy(); ConfigureMultiTenancy();
ConfigureRedis(context, configuration, hostingEnvironment); ConfigureRedis(context, configuration, hostingEnvironment);
} }
private void ConfigureMenu(IConfiguration configuration)
{
Configure<AbpNavigationOptions>(options =>
{
options.MenuContributors.Add(new MyProjectNameWebHostMenuContributor(configuration));
});
}
private void ConfigureCache(IConfiguration configuration) private void ConfigureCache(IConfiguration configuration)
{ {
Configure<AbpDistributedCacheOptions>(options => Configure<AbpDistributedCacheOptions>(options =>

2
templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/en.json

@ -1,6 +1,6 @@
{ {
"culture": "en", "culture": "en",
"texts": { "texts": {
"ManageYourProfile": "Manage your profile"
} }
} }

6
templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/tr.json

@ -0,0 +1,6 @@
{
"culture": "tr",
"texts": {
"ManageYourProfile": "Profil yönetimi"
}
}
Loading…
Cancel
Save