😎1、优化没有对应接口的按钮增加到授权集合 2、清理代码

This commit is contained in:
zuohuaijun 2024-10-27 16:45:36 +08:00
parent 8210fe8753
commit 2e64a7f29c
6 changed files with 98 additions and 109 deletions

View File

@ -11,5 +11,4 @@ namespace Admin.NET.Application;
/// </summary>
public class AppClaimConst : ClaimConst
{
}

View File

@ -160,10 +160,6 @@ public class AppAuthService : IDynamicApiController, ITransient
[NonAction]
public virtual async Task<LoginOutput> CreateToken(SysUser user, LoginModeEnum loginMode)
{
// 默认PC端登录模式
if (loginMode == 0)
loginMode = LoginModeEnum.PC;
// 单用户登录
await _sysOnlineUserService.SingleLogin(user.Id, loginMode);
@ -189,9 +185,6 @@ public class AppAuthService : IDynamicApiController, ITransient
// 设置响应报文头
_httpContextAccessor.HttpContext.SetTokensOfResponseHeaders(accessToken, refreshToken);
// Swagger Knife4UI-AfterScript登录脚本
// ke.global.setAllHeader('Authorization', 'Bearer ' + ke.response.headers['access-token']);
return new LoginOutput
{
AccessToken = accessToken,

View File

@ -18,5 +18,4 @@ public class AppUserManager : UserManager
}
// 扩展属性
}

View File

@ -11,99 +11,99 @@ namespace Admin.NET.Core;
/// </summary>
public static class DataTypeExtension
{
/// <summary>转为SByte整数转换失败时返回默认值。</summary>
/// <remarks></remarks>
/// <param name="value">待转换对象</param>
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
/// <returns></returns>
public static sbyte ToSByte(this object value, sbyte defaultValue = default)
{
if (value is sbyte num) return num;
if (value == null || value == DBNull.Value) return defaultValue;
/// <summary>转为SByte整数转换失败时返回默认值。</summary>
/// <remarks></remarks>
/// <param name="value">待转换对象</param>
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
/// <returns></returns>
public static sbyte ToSByte(this object value, sbyte defaultValue = default)
{
if (value is sbyte num) return num;
if (value == null || value == DBNull.Value) return defaultValue;
if (sbyte.TryParse(value.ToString(), out var result))
return result;
else
return defaultValue;
}
if (sbyte.TryParse(value.ToString(), out var result))
return result;
else
return defaultValue;
}
/// <summary>转为Byte整数转换失败时返回默认值。</summary>
/// <remarks></remarks>
/// <param name="value">待转换对象</param>
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
/// <returns></returns>
public static byte ToByte(this object value, byte defaultValue = default)
{
if (value is byte num) return num;
if (value == null || value == DBNull.Value) return defaultValue;
/// <summary>转为Byte整数转换失败时返回默认值。</summary>
/// <remarks></remarks>
/// <param name="value">待转换对象</param>
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
/// <returns></returns>
public static byte ToByte(this object value, byte defaultValue = default)
{
if (value is byte num) return num;
if (value == null || value == DBNull.Value) return defaultValue;
if (byte.TryParse(value.ToString(), out var result))
return result;
else
return defaultValue;
}
if (byte.TryParse(value.ToString(), out var result))
return result;
else
return defaultValue;
}
/// <summary>转为Int16整数转换失败时返回默认值。</summary>
/// <remarks></remarks>
/// <param name="value">待转换对象</param>
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
/// <returns></returns>
public static short ToInt16(this object value, short defaultValue = default)
{
if (value is short num) return num;
if (value == null || value == DBNull.Value) return defaultValue;
/// <summary>转为Int16整数转换失败时返回默认值。</summary>
/// <remarks></remarks>
/// <param name="value">待转换对象</param>
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
/// <returns></returns>
public static short ToInt16(this object value, short defaultValue = default)
{
if (value is short num) return num;
if (value == null || value == DBNull.Value) return defaultValue;
if (short.TryParse(value.ToString(), out var result))
return result;
else
return defaultValue;
}
if (short.TryParse(value.ToString(), out var result))
return result;
else
return defaultValue;
}
/// <summary>转为UInt16整数转换失败时返回默认值。</summary>
/// <remarks></remarks>
/// <param name="value">待转换对象</param>
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
/// <returns></returns>
public static ushort ToUInt16(this object value, ushort defaultValue = default)
{
if (value is ushort num) return num;
if (value == null || value == DBNull.Value) return defaultValue;
/// <summary>转为UInt16整数转换失败时返回默认值。</summary>
/// <remarks></remarks>
/// <param name="value">待转换对象</param>
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
/// <returns></returns>
public static ushort ToUInt16(this object value, ushort defaultValue = default)
{
if (value is ushort num) return num;
if (value == null || value == DBNull.Value) return defaultValue;
if (ushort.TryParse(value.ToString(), out var result))
return result;
else
return defaultValue;
}
if (ushort.TryParse(value.ToString(), out var result))
return result;
else
return defaultValue;
}
/// <summary>转为UInt32整数转换失败时返回默认值。</summary>
/// <remarks></remarks>
/// <param name="value">待转换对象</param>
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
/// <returns></returns>
public static uint ToUInt32(this object value, uint defaultValue = default)
{
if (value is uint num) return num;
if (value == null || value == DBNull.Value) return defaultValue;
/// <summary>转为UInt32整数转换失败时返回默认值。</summary>
/// <remarks></remarks>
/// <param name="value">待转换对象</param>
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
/// <returns></returns>
public static uint ToUInt32(this object value, uint defaultValue = default)
{
if (value is uint num) return num;
if (value == null || value == DBNull.Value) return defaultValue;
if (uint.TryParse(value.ToString(), out var result))
return result;
else
return defaultValue;
}
if (uint.TryParse(value.ToString(), out var result))
return result;
else
return defaultValue;
}
/// <summary>转为UInt64整数转换失败时返回默认值。</summary>
/// <remarks></remarks>
/// <param name="value">待转换对象</param>
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
/// <returns></returns>
public static ulong ToUInt64(this object value, ulong defaultValue = default)
{
if (value is ulong num) return num;
if (value == null || value == DBNull.Value) return defaultValue;
/// <summary>转为UInt64整数转换失败时返回默认值。</summary>
/// <remarks></remarks>
/// <param name="value">待转换对象</param>
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
/// <returns></returns>
public static ulong ToUInt64(this object value, ulong defaultValue = default)
{
if (value is ulong num) return num;
if (value == null || value == DBNull.Value) return defaultValue;
if (ulong.TryParse(value.ToString(), out var result))
return result;
else
return defaultValue;
}
if (ulong.TryParse(value.ToString(), out var result))
return result;
else
return defaultValue;
}
}

View File

@ -38,7 +38,7 @@ public class LoginInput
/// <summary>
/// 登录模式
/// </summary>
public LoginModeEnum LoginMode { get; set; }
public LoginModeEnum LoginMode { get; set; } = LoginModeEnum.PC;
}
public class LoginPhoneInput

View File

@ -312,32 +312,30 @@ public class SysRoleService : IDynamicApiController, ITransient
foreach (var controller in apiOutput.Children)
apiList[0].AddRange(controller.Children.Select(u => u.Route));
}
// 按钮权限集合
var allButtonList = await GetButtonList(new());
// 没有对应接口的按钮集合
var diffList = allButtonList.Except(apiList[0]).ToList();
apiList[0].AddRange(diffList);
// 所有按钮权限集合
var allButtonList = await GetButtonList();
// 没有接口对应的按钮权限集合
var diffButtonList = allButtonList.Except(apiList[0]).ToList(); // 差集
apiList[0].AddRange(diffButtonList);
}
else
{
// 当前账号所有角色集合
var roleIds = await _sysUserRoleService.GetUserRoleIdList(_userManager.UserId);
var roleIdList = await _sysUserRoleService.GetUserRoleIdList(_userManager.UserId);
// 已勾选按钮权限集合
apiList[0] = await GetRoleButtonList(roleIds);
apiList[0] = await GetRoleButtonList(roleIdList);
// 未勾选按钮权限集合(放到接口黑名单里面)
var allButtonList = await GetButtonList(new());
var allButtonList = await GetButtonList();
apiList[1] = allButtonList.Except(apiList[0]).ToList(); // 差集
// 接口黑名单集合
var roleApis = await _sysRoleApiService.GetRoleApiList(roleIds);
apiList[1].AddRange(roleApis);
var roleApiList = await _sysRoleApiService.GetRoleApiList(roleIdList);
apiList[1].AddRange(roleApiList);
}
_sysCacheService.Set(CacheConst.KeyUserApi + userId, apiList, TimeSpan.FromDays(7));
_sysCacheService.Set(CacheConst.KeyUserApi + userId, apiList, TimeSpan.FromDays(7)); // 缓存7天
}
return apiList;
}
@ -375,11 +373,11 @@ public class SysRoleService : IDynamicApiController, ITransient
/// </summary>
/// <param name="menuIds"></param>
/// <returns></returns>
private async Task<List<string>> GetButtonList(List<long> menuIds)
private async Task<List<string>> GetButtonList(List<long> menuIds = null)
{
return await _sysRoleRep.ChangeRepository<SqlSugarRepository<SysMenu>>().AsQueryable()
.Where(u => u.Type == MenuTypeEnum.Btn)
.WhereIF(menuIds.Count > 0, u => menuIds.Contains(u.Id))
.WhereIF(menuIds != null && menuIds.Count > 0, u => menuIds.Contains(u.Id))
.Select(u => u.Permission).ToListAsync();
}