فهرست منبع

!1243 调整水印只有在用户登录成功后显示
Merge pull request !1243 from ir0nmax/next

zuohuaijun 1 سال پیش
والد
کامیت
da4b34ba60

+ 5 - 0
Admin.NET/Admin.NET.Core/Service/Auth/Dto/LoginUserOutput.cs

@@ -95,4 +95,9 @@ public class LoginUserOutput
     /// 角色集合
     /// </summary>
     public List<long> RoleIds { get; set; }
+
+    /// <summary>
+    /// 水印文字
+    /// </summary>
+    public string WatermarkText { get; set; }
 }

+ 6 - 2
Admin.NET/Admin.NET.Core/Service/Auth/SysAuthService.cs

@@ -4,6 +4,7 @@
 //
 // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
 
+using Elastic.Clients.Elasticsearch.Xpack;
 using Furion.SpecificationDocument;
 using Lazy.Captcha.Core;
 
@@ -274,7 +275,9 @@ public class SysAuthService : IDynamicApiController, ITransient
         // 获取角色集合
         var roleIds = await _sysUserRep.ChangeRepository<SqlSugarRepository<SysUserRole>>().AsQueryable()
             .Where(u => u.UserId == user.Id).Select(u => u.RoleId).ToListAsync();
-
+        // 获取水印文字
+        var watermarkText = await _sysConfigService.GetConfigValue<string>("sys_web_watermark");
+        watermarkText += $"-{user.RealName}-{_httpContextAccessor.HttpContext.GetRemoteIp()}-{DateTime.Now}";
         return new LoginUserOutput
         {
             Id = user.Id,
@@ -292,7 +295,8 @@ public class SysAuthService : IDynamicApiController, ITransient
             OrgType = org?.Type,
             PosName = pos?.Name,
             Buttons = buttons,
-            RoleIds = roleIds
+            RoleIds = roleIds,
+            WatermarkText = watermarkText
         };
     }
 

+ 0 - 3
Admin.NET/Admin.NET.Core/Service/Config/SysConfigService.cs

@@ -252,9 +252,6 @@ public class SysConfigService : IDynamicApiController, ITransient
         var sysIcp = await GetConfigValue<string>("sys_web_icp");
         var sysIcpUrl = await GetConfigValue<string>("sys_web_icpUrl");
 
-        //var ip = _httpContextAccessor.HttpContext.GetRemoteIp();
-        //var watermark = $"{sysWatermark}-{DateTime.Now}-{ip}-{_userManager.RealName}";
-
         return new
         {
             SysLogo = sysLogo,

+ 6 - 5
Admin.NET/Admin.NET.Core/SqlSugar/SqlSugarSetup.cs

@@ -185,33 +185,34 @@ public static class SqlSugarSetup
                 // 若当前用户非空(web线程时)
                 if (App.User != null)
                 {
+                    dynamic entityValue = entityInfo.EntityValue;
                     if (entityInfo.PropertyName == nameof(EntityTenantId.TenantId))
                     {
-                        var tenantId = ((dynamic)entityInfo.EntityValue).TenantId;
+                        var tenantId = entityValue.TenantId;
                         if (tenantId == null || tenantId == 0)
                             entityInfo.SetValue(App.User.FindFirst(ClaimConst.TenantId)?.Value);
                     }
                     else if (entityInfo.PropertyName == nameof(EntityBase.CreateUserId))
                     {
-                        var createUserId = ((dynamic)entityInfo.EntityValue).CreateUserId;
+                        var createUserId = entityValue.CreateUserId;
                         if (createUserId == 0 || createUserId == null)
                             entityInfo.SetValue(App.User.FindFirst(ClaimConst.UserId)?.Value);
                     }
                     else if (entityInfo.PropertyName == nameof(EntityBase.CreateUserName))
                     {
-                        var createUserName = ((dynamic)entityInfo.EntityValue).CreateUserName;
+                        var createUserName = entityValue.CreateUserName;
                         if (string.IsNullOrEmpty(createUserName))
                             entityInfo.SetValue(App.User.FindFirst(ClaimConst.RealName)?.Value);
                     }
                     else if (entityInfo.PropertyName == nameof(EntityBaseData.CreateOrgId))
                     {
-                        var createOrgId = ((dynamic)entityInfo.EntityValue).CreateOrgId;
+                        var createOrgId = entityValue.CreateOrgId;
                         if (createOrgId == 0 || createOrgId == null)
                             entityInfo.SetValue(App.User.FindFirst(ClaimConst.OrgId)?.Value);
                     }
                     else if (entityInfo.PropertyName == nameof(EntityBaseData.CreateOrgName))
                     {
-                        var createOrgName = ((dynamic)entityInfo.EntityValue).CreateOrgName;
+                        var createOrgName = entityValue.CreateOrgName;
                         if (string.IsNullOrEmpty(createOrgName))
                             entityInfo.SetValue(App.User.FindFirst(ClaimConst.OrgName)?.Value);
                     }

+ 5 - 5
Admin.NET/Admin.NET.Web.Core/Handlers/JwtHandler.cs

@@ -94,15 +94,15 @@ namespace Admin.NET.Web.Core
 
             var serviceScope = httpContext.RequestServices.CreateScope();
             var sysMenuService = serviceScope.ServiceProvider.GetRequiredService<SysMenuService>();
+
             // 获取用户拥有按钮权限集合
             var ownBtnPermList = await sysMenuService.GetOwnBtnPermList();
+            if (ownBtnPermList.Exists(u => routeName.Equals(u, StringComparison.CurrentCultureIgnoreCase)))
+                return true;
+
             // 获取系统所有按钮权限集合
             var allBtnPermList = await sysMenuService.GetAllBtnPermList();
-
-            // 已拥有该按钮权限或者所有按钮集合里面不存在
-            var exist1 = ownBtnPermList.Exists(u => routeName.Equals(u, StringComparison.CurrentCultureIgnoreCase));
-            var exist2 = allBtnPermList.TrueForAll(u => !routeName.Equals(u, StringComparison.CurrentCultureIgnoreCase));
-            return exist1 || exist2;
+            return allBtnPermList.TrueForAll(u => !routeName.Equals(u, StringComparison.CurrentCultureIgnoreCase));
         }
     }
 }

+ 1 - 1
Web/src/App.vue

@@ -130,7 +130,7 @@ const loadSysInfo = () => {
 			themeConfig.value.icpUrl = data.sysIcpUrl;
 			// 水印
 			themeConfig.value.isWatermark = data.sysWatermark != null;
-			themeConfig.value.watermarkText = data.sysWatermark;
+			themeConfig.value.watermarkText = '';
 			// 版权说明
 			themeConfig.value.copyright = data.sysCopyright;
 

+ 14 - 1
Web/src/stores/userInfo.ts

@@ -1,8 +1,11 @@
 import { defineStore } from 'pinia';
-import { Session } from '/@/utils/storage';
+import { Local, Session } from '/@/utils/storage';
+import Watermark from '/@/utils/watermark';
+import { useThemeConfig } from '/@/stores/themeConfig';
 
 import { getAPI } from '/@/utils/axios-utils';
 import { SysAuthApi, SysConstApi, SysDictTypeApi } from '/@/api-services/api';
+import watermark from '../utils/watermark';
 
 /**
  * 用户信息
@@ -66,6 +69,7 @@ export const useUserInfo = defineStore('userInfo', {
 					.then(async (res: any) => {
 						if (res.data.result == null) return;
 						var d = res.data.result;
+						console.log('用户信息:', d	);
 						const userInfos = {
 							id: d.id,
 							account: d.account,
@@ -88,6 +92,15 @@ export const useUserInfo = defineStore('userInfo', {
 						// 增加了下面代码,引起当前会话的用户信息不会刷新,如:重新提交的头像不更新,需要新开一个页面才能正确显示
 						// Session.set('userInfo', userInfos);
 
+						const storesThemeConfig = useThemeConfig();
+						storesThemeConfig.themeConfig.watermarkText = d.watermarkText ?? '';
+						console.log('用户信息:', d.watermarkText	);
+						if (storesThemeConfig.themeConfig.isWatermark) Watermark.set(storesThemeConfig.themeConfig.watermarkText);
+						else Watermark.del();
+
+						Local.remove('themeConfig');
+						Local.set('themeConfig', storesThemeConfig.themeConfig);
+
 						resolve(userInfos);
 					});
 			});