From 6c604e8cec455a8a9415b6eac017742729aed7c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=86=9B?= <510423039@qq.com> Date: Wed, 17 Nov 2021 20:02:32 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E8=8F=9C=E5=8D=95=E6=97=A0?= =?UTF-8?q?=E9=99=90=E7=BA=A7=E9=80=92=E5=BD=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Pages/Login.cshtml.cs | 13 ++- .../Roles/RolePermissionAppService.cs | 80 +++++++++---------- 2 files changed, 46 insertions(+), 47 deletions(-) diff --git a/aspnet-core/services/host/CompanyName.ProjectName.HttpApi.Host/Pages/Login.cshtml.cs b/aspnet-core/services/host/CompanyName.ProjectName.HttpApi.Host/Pages/Login.cshtml.cs index ffce9318..dcb27b29 100644 --- a/aspnet-core/services/host/CompanyName.ProjectName.HttpApi.Host/Pages/Login.cshtml.cs +++ b/aspnet-core/services/host/CompanyName.ProjectName.HttpApi.Host/Pages/Login.cshtml.cs @@ -1,11 +1,13 @@ using System; using System.Threading.Tasks; +using CompanyName.ProjectName.ConfigurationOptions; using CompanyName.ProjectName.Users; using CompanyName.ProjectName.Users.Dtos; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; namespace CompanyName.ProjectName.Pages @@ -15,13 +17,16 @@ namespace CompanyName.ProjectName.Pages private readonly IAccountAppService _accountAppService; private readonly ILogger _logger; private readonly IHostEnvironment _hostEnvironment; - - public Login(IAccountAppService accountAppService, ILogger logger, - IHostEnvironment hostEnvironment) + private readonly JwtOptions _jwtOptions; + public Login(IAccountAppService accountAppService, + ILogger logger, + IHostEnvironment hostEnvironment, + IOptionsSnapshot jwtOptions) { _accountAppService = accountAppService; _logger = logger; _hostEnvironment = hostEnvironment; + _jwtOptions = jwtOptions.Value; } public void OnGet() @@ -41,7 +46,7 @@ namespace CompanyName.ProjectName.Pages { var options = new CookieOptions { - Expires = DateTime.Now.AddHours(2), + Expires = DateTime.Now.AddHours(_jwtOptions.ExpirationTime), SameSite = SameSiteMode.Unspecified, }; diff --git a/aspnet-core/services/src/CompanyName.ProjectName.Application/Roles/RolePermissionAppService.cs b/aspnet-core/services/src/CompanyName.ProjectName.Application/Roles/RolePermissionAppService.cs index 2df84802..e969057a 100644 --- a/aspnet-core/services/src/CompanyName.ProjectName.Application/Roles/RolePermissionAppService.cs +++ b/aspnet-core/services/src/CompanyName.ProjectName.Application/Roles/RolePermissionAppService.cs @@ -69,18 +69,18 @@ namespace CompanyName.ProjectName.Roles foreach (var group in input) { - if (excludes.Any(e => e == group.Name)) - { - continue; - } + if (excludes.Any(e => e == group.Name)) continue; + // 获取分组信息 var groupPermission = new PermissionTreeDto - { Key = @group.Name, Title = @group.DisplayName }; - groupPermission.Key = group.Name; - groupPermission.Title = - group.Name == "AbpIdentity" + { + Key = @group.Name, + Title = @group.Name == "AbpIdentity" ? L["Permission:SystemManagement"] - : group.DisplayName; + : @group.DisplayName + }; + + // 获取所有已授权和未授权权限集合 foreach (var item in group.Permissions) { result.AllGrants.Add(item.Name); @@ -88,42 +88,13 @@ namespace CompanyName.ProjectName.Roles { result.Grants.Add(item.Name); } - - //获取ParentName=null的权限 - var management = group.Permissions - .Where(e => string.IsNullOrWhiteSpace(e.ParentName)).ToList(); - - foreach (var managementItem in management) - { - if (groupPermission.Children.Any(e => e.Key == managementItem.Name)) - { - continue; - } - - { - var managementPermission = new PermissionTreeDto() - { - Key = managementItem.Name, - Title = managementItem.DisplayName - }; - // 获取management下权限 - var childrenPermission = @group.Permissions - .Where(e => e.ParentName == managementItem.Name) - .ToList(); - foreach (var childrenPermissionItem in childrenPermission) - { - managementPermission.Children.Add(new PermissionTreeDto() - { - Key = childrenPermissionItem.Name, - Title = childrenPermissionItem.DisplayName - }); - } - - groupPermission.Children.Add(managementPermission); - } - } } + + // 递归菜单 + var childTreeMenu = RecursionMenu(group.Permissions, null); + groupPermission.Children.AddRange(childTreeMenu.Children); + permissions.Add(groupPermission); } @@ -149,5 +120,28 @@ namespace CompanyName.ProjectName.Roles return result; } + + + /// + /// 递归菜单 + /// + private PermissionTreeDto RecursionMenu(List permissionGrantInfoDtos, + string parentName) + { + var tree = new PermissionTreeDto(); + var permissions = permissionGrantInfoDtos + .Where(e => e.ParentName == parentName).ToList(); + foreach (var item in permissions) + { + var child = new PermissionTreeDto + { + Key = item.Name, + Title = item.DisplayName + }; + child.Children.AddRange(RecursionMenu(permissionGrantInfoDtos, item.Name).Children); + tree.Children.Add(child); + } + return tree; + } } } \ No newline at end of file