Forráskód Böngészése

添加默认角色,租户初始化时为租户添加一个默认基本角色

Ir0nMax 1 éve
szülő
commit
94f843dbca

+ 10 - 0
Admin.NET/Admin.NET.Core/Const/CommonConst.cs

@@ -26,4 +26,14 @@ public class CommonConst
     /// 事件-发送异常邮件
     /// </summary>
     public const string SendErrorMail = "Send:ErrorMail";
+
+    /// <summary>
+    /// 默认基本角色名称
+    /// </summary>
+    public const string DefaultBaseRoleName = "默认基本角色";
+
+    /// <summary>
+    /// 默认基本角色编码
+    /// </summary>
+    public const string DefaultBaseRoleCode = "default_base_role";
 }

+ 37 - 1
Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs

@@ -20,6 +20,7 @@ public class SysTenantService : IDynamicApiController, ITransient
     private readonly SqlSugarRepository<SysUserExtOrg> _sysUserExtOrgRep;
     private readonly SqlSugarRepository<SysTenantMenu> _sysTenantMenuRep;
     private readonly SqlSugarRepository<SysRoleMenu> _sysRoleMenuRep;
+    private readonly SysRoleMenuService _sysRoleMenuService;
     private readonly SqlSugarRepository<SysUserRole> _userRoleRep;
     private readonly SysConfigService _sysConfigService;
     private readonly SysCacheService _sysCacheService;
@@ -36,7 +37,8 @@ public class SysTenantService : IDynamicApiController, ITransient
         SqlSugarRepository<SysUserRole> userRoleRep,
         IOptions<UploadOptions> uploadOptions,
         SysConfigService sysConfigService,
-        SysCacheService sysCacheService)
+        SysCacheService sysCacheService,
+        SysRoleMenuService sysRoleMenuService)
     {
         _sysTenantRep = sysTenantRep;
         _sysOrgRep = sysOrgRep;
@@ -50,6 +52,8 @@ public class SysTenantService : IDynamicApiController, ITransient
         _uploadOptions = uploadOptions.Value;
         _sysConfigService = sysConfigService;
         _sysCacheService = sysCacheService;
+        _sysRoleMenuService = sysRoleMenuService;
+
     }
 
     /// <summary>
@@ -259,6 +263,12 @@ public class SysTenantService : IDynamicApiController, ITransient
         var newOrg = new SysOrg { TenantId = tenantId, Pid = 0, Name = tenantName, Code = tenantName, Remark = tenantName, };
         await _sysOrgRep.InsertAsync(newOrg);
 
+        // 初始化默认角色
+        var newRole = new SysRole { TenantId = tenantId, Name = CommonConst.DefaultBaseRoleName, Code = CommonConst.DefaultBaseRoleCode, DataScope = DataScopeEnum.Self, Remark = "此角色为系统自动创建角色" };
+        var baseRole = await _sysRoleRep.InsertReturnEntityAsync(newRole);
+        var baseRoleMenuIdList = GetBaseRoleMenuIdList().ToList();
+        await _sysRoleMenuService.GrantRoleMenu(new RoleMenuInput { Id = baseRole.Id, MenuIdList = baseRoleMenuIdList.Select(u => u.MenuId).ToList() });
+
         // 初始化职位
         var newPos = new SysPos { TenantId = tenantId, Name = "管理员-" + tenantName, Code = tenantName, Remark = tenantName };
         await _sysPosRep.InsertAsync(newPos);
@@ -332,6 +342,32 @@ public class SysTenantService : IDynamicApiController, ITransient
         });
     }
 
+    /// <summary>
+    /// 获取租户默认菜单
+    /// </summary>
+    /// <returns></returns>
+    [NonAction]
+    public IEnumerable<SysTenantMenu> GetBaseRoleMenuIdList()
+    {
+        var menuList = new List<SysMenu>();
+        var allMenuList = new SysMenuSeedData().HasData().ToList();
+
+        var dashboardMenu = allMenuList.First(u => u.Type == MenuTypeEnum.Dir && u.Title == "工作台");
+        menuList.AddRange(allMenuList.ToChildList(u => u.Id, u => u.Pid, dashboardMenu.Id));
+
+        var systemMenu = allMenuList.First(u => u.Type == MenuTypeEnum.Dir && u.Title == "系统管理");
+        menuList.Add(systemMenu);
+        menuList.AddRange(allMenuList.ToChildList(u => u.Id, u => u.Pid, u => u.Pid == systemMenu.Id && new[] { "机构管理", "个人中心" }.Contains(u.Title)));
+        menuList = menuList.Where(u => !new[] { "增加", "编辑", "删除" }.Contains(u.Title)).ToList();
+
+        return menuList.Select(u => new SysTenantMenu
+        {
+            Id = CommonUtil.GetFixedHashCode("" + SqlSugarConst.DefaultTenantId + u.Id, 1300000000000),
+            TenantId = SqlSugarConst.DefaultTenantId,
+            MenuId = u.Id
+        });
+    }
+
     /// <summary>
     /// 删除租户 🔖
     /// </summary>