From dbdea9773827e831a5774a896b22aa550cca271f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 4 Mar 2020 20:17:38 +0300 Subject: [PATCH] Add Logout to backend app. --- .../BackendAdminApp.Host.csproj | 2 +- .../BackendAdminAppHostModule.cs | 6 +++ .../BackendAdminAppMenuContributor.cs | 43 +++++++++++++++++++ .../Controllers/AccountController.cs | 9 ++++ 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminAppMenuContributor.cs create mode 100644 samples/MicroserviceDemo/applications/BackendAdminApp.Host/Controllers/AccountController.cs diff --git a/samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminApp.Host.csproj b/samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminApp.Host.csproj index 1e1f6b8c90..4b24e5d584 100644 --- a/samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminApp.Host.csproj +++ b/samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminApp.Host.csproj @@ -1,4 +1,4 @@ - + netcoreapp3.1 diff --git a/samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminAppHostModule.cs b/samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminAppHostModule.cs index 5e710fbc48..d6c076cea3 100644 --- a/samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminAppHostModule.cs +++ b/samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminAppHostModule.cs @@ -24,6 +24,7 @@ using Volo.Abp.MultiTenancy; using Volo.Abp.PermissionManagement; using Volo.Abp.TenantManagement; using Volo.Abp.TenantManagement.Web; +using Volo.Abp.UI.Navigation; using Volo.Blogging; namespace BackendAdminApp.Host @@ -60,6 +61,11 @@ namespace BackendAdminApp.Host options.IsEnabled = MsDemoConsts.IsMultiTenancyEnabled; }); + Configure(options => + { + options.MenuContributors.Add(new BackendAdminAppMenuContributor(configuration)); + }); + context.Services.AddAuthentication(options => { options.DefaultScheme = "Cookies"; diff --git a/samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminAppMenuContributor.cs b/samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminAppMenuContributor.cs new file mode 100644 index 0000000000..52aba79169 --- /dev/null +++ b/samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminAppMenuContributor.cs @@ -0,0 +1,43 @@ +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.UI.Navigation; +using Volo.Abp.Users; + +namespace BackendAdminApp.Host +{ + public class BackendAdminAppMenuContributor : IMenuContributor + { + private readonly IConfiguration _configuration; + + public BackendAdminAppMenuContributor(IConfiguration configuration) + { + _configuration = configuration; + } + + public async Task ConfigureMenuAsync(MenuConfigurationContext context) + { + if (context.Menu.Name == StandardMenus.User) + { + await ConfigureUserMenuAsync(context); + } + } + + private Task ConfigureUserMenuAsync(MenuConfigurationContext context) + { + var currentUser = context.ServiceProvider.GetRequiredService(); + + var identityServerUrl = _configuration["AuthServer:Authority"] ?? ""; + + if (currentUser.IsAuthenticated) + { + //TODO: Localize menu items + context.Menu.AddItem(new ApplicationMenuItem("Account.Manage", "Manage Your Profile", $"{identityServerUrl.EnsureEndsWith('/')}Account/Manage", icon: "fa fa-cog", order: 1000, null, "_blank")); + context.Menu.AddItem(new ApplicationMenuItem("Account.Logout", "Logout", url: "/Account/Logout", icon: "fa fa-power-off", order: int.MaxValue - 1000)); + } + + return Task.CompletedTask; + } + } +} diff --git a/samples/MicroserviceDemo/applications/BackendAdminApp.Host/Controllers/AccountController.cs b/samples/MicroserviceDemo/applications/BackendAdminApp.Host/Controllers/AccountController.cs new file mode 100644 index 0000000000..18efdd96b7 --- /dev/null +++ b/samples/MicroserviceDemo/applications/BackendAdminApp.Host/Controllers/AccountController.cs @@ -0,0 +1,9 @@ +using Volo.Abp.AspNetCore.Mvc.Authentication; + +namespace BackendAdminApp.Host.Controllers +{ + public class AccountController : ChallengeAccountController + { + + } +} \ No newline at end of file