😎1、优化没有对应接口的按钮增加到授权集合 2、清理代码
This commit is contained in:
parent
8210fe8753
commit
2e64a7f29c
@ -11,5 +11,4 @@ namespace Admin.NET.Application;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class AppClaimConst : ClaimConst
|
public class AppClaimConst : ClaimConst
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -160,10 +160,6 @@ public class AppAuthService : IDynamicApiController, ITransient
|
|||||||
[NonAction]
|
[NonAction]
|
||||||
public virtual async Task<LoginOutput> CreateToken(SysUser user, LoginModeEnum loginMode)
|
public virtual async Task<LoginOutput> CreateToken(SysUser user, LoginModeEnum loginMode)
|
||||||
{
|
{
|
||||||
// 默认PC端登录模式
|
|
||||||
if (loginMode == 0)
|
|
||||||
loginMode = LoginModeEnum.PC;
|
|
||||||
|
|
||||||
// 单用户登录
|
// 单用户登录
|
||||||
await _sysOnlineUserService.SingleLogin(user.Id, loginMode);
|
await _sysOnlineUserService.SingleLogin(user.Id, loginMode);
|
||||||
|
|
||||||
@ -189,9 +185,6 @@ public class AppAuthService : IDynamicApiController, ITransient
|
|||||||
// 设置响应报文头
|
// 设置响应报文头
|
||||||
_httpContextAccessor.HttpContext.SetTokensOfResponseHeaders(accessToken, refreshToken);
|
_httpContextAccessor.HttpContext.SetTokensOfResponseHeaders(accessToken, refreshToken);
|
||||||
|
|
||||||
// Swagger Knife4UI-AfterScript登录脚本
|
|
||||||
// ke.global.setAllHeader('Authorization', 'Bearer ' + ke.response.headers['access-token']);
|
|
||||||
|
|
||||||
return new LoginOutput
|
return new LoginOutput
|
||||||
{
|
{
|
||||||
AccessToken = accessToken,
|
AccessToken = accessToken,
|
||||||
|
|||||||
@ -18,5 +18,4 @@ public class AppUserManager : UserManager
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 扩展属性
|
// 扩展属性
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -11,99 +11,99 @@ namespace Admin.NET.Core;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static class DataTypeExtension
|
public static class DataTypeExtension
|
||||||
{
|
{
|
||||||
/// <summary>转为SByte整数,转换失败时返回默认值。</summary>
|
/// <summary>转为SByte整数,转换失败时返回默认值。</summary>
|
||||||
/// <remarks></remarks>
|
/// <remarks></remarks>
|
||||||
/// <param name="value">待转换对象</param>
|
/// <param name="value">待转换对象</param>
|
||||||
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
|
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static sbyte ToSByte(this object value, sbyte defaultValue = default)
|
public static sbyte ToSByte(this object value, sbyte defaultValue = default)
|
||||||
{
|
{
|
||||||
if (value is sbyte num) return num;
|
if (value is sbyte num) return num;
|
||||||
if (value == null || value == DBNull.Value) return defaultValue;
|
if (value == null || value == DBNull.Value) return defaultValue;
|
||||||
|
|
||||||
if (sbyte.TryParse(value.ToString(), out var result))
|
if (sbyte.TryParse(value.ToString(), out var result))
|
||||||
return result;
|
return result;
|
||||||
else
|
else
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>转为Byte整数,转换失败时返回默认值。</summary>
|
/// <summary>转为Byte整数,转换失败时返回默认值。</summary>
|
||||||
/// <remarks></remarks>
|
/// <remarks></remarks>
|
||||||
/// <param name="value">待转换对象</param>
|
/// <param name="value">待转换对象</param>
|
||||||
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
|
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static byte ToByte(this object value, byte defaultValue = default)
|
public static byte ToByte(this object value, byte defaultValue = default)
|
||||||
{
|
{
|
||||||
if (value is byte num) return num;
|
if (value is byte num) return num;
|
||||||
if (value == null || value == DBNull.Value) return defaultValue;
|
if (value == null || value == DBNull.Value) return defaultValue;
|
||||||
|
|
||||||
if (byte.TryParse(value.ToString(), out var result))
|
if (byte.TryParse(value.ToString(), out var result))
|
||||||
return result;
|
return result;
|
||||||
else
|
else
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>转为Int16整数,转换失败时返回默认值。</summary>
|
/// <summary>转为Int16整数,转换失败时返回默认值。</summary>
|
||||||
/// <remarks></remarks>
|
/// <remarks></remarks>
|
||||||
/// <param name="value">待转换对象</param>
|
/// <param name="value">待转换对象</param>
|
||||||
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
|
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static short ToInt16(this object value, short defaultValue = default)
|
public static short ToInt16(this object value, short defaultValue = default)
|
||||||
{
|
{
|
||||||
if (value is short num) return num;
|
if (value is short num) return num;
|
||||||
if (value == null || value == DBNull.Value) return defaultValue;
|
if (value == null || value == DBNull.Value) return defaultValue;
|
||||||
|
|
||||||
if (short.TryParse(value.ToString(), out var result))
|
if (short.TryParse(value.ToString(), out var result))
|
||||||
return result;
|
return result;
|
||||||
else
|
else
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>转为UInt16整数,转换失败时返回默认值。</summary>
|
/// <summary>转为UInt16整数,转换失败时返回默认值。</summary>
|
||||||
/// <remarks></remarks>
|
/// <remarks></remarks>
|
||||||
/// <param name="value">待转换对象</param>
|
/// <param name="value">待转换对象</param>
|
||||||
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
|
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static ushort ToUInt16(this object value, ushort defaultValue = default)
|
public static ushort ToUInt16(this object value, ushort defaultValue = default)
|
||||||
{
|
{
|
||||||
if (value is ushort num) return num;
|
if (value is ushort num) return num;
|
||||||
if (value == null || value == DBNull.Value) return defaultValue;
|
if (value == null || value == DBNull.Value) return defaultValue;
|
||||||
|
|
||||||
if (ushort.TryParse(value.ToString(), out var result))
|
if (ushort.TryParse(value.ToString(), out var result))
|
||||||
return result;
|
return result;
|
||||||
else
|
else
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>转为UInt32整数,转换失败时返回默认值。</summary>
|
/// <summary>转为UInt32整数,转换失败时返回默认值。</summary>
|
||||||
/// <remarks></remarks>
|
/// <remarks></remarks>
|
||||||
/// <param name="value">待转换对象</param>
|
/// <param name="value">待转换对象</param>
|
||||||
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
|
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static uint ToUInt32(this object value, uint defaultValue = default)
|
public static uint ToUInt32(this object value, uint defaultValue = default)
|
||||||
{
|
{
|
||||||
if (value is uint num) return num;
|
if (value is uint num) return num;
|
||||||
if (value == null || value == DBNull.Value) return defaultValue;
|
if (value == null || value == DBNull.Value) return defaultValue;
|
||||||
|
|
||||||
if (uint.TryParse(value.ToString(), out var result))
|
if (uint.TryParse(value.ToString(), out var result))
|
||||||
return result;
|
return result;
|
||||||
else
|
else
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>转为UInt64整数,转换失败时返回默认值。</summary>
|
/// <summary>转为UInt64整数,转换失败时返回默认值。</summary>
|
||||||
/// <remarks></remarks>
|
/// <remarks></remarks>
|
||||||
/// <param name="value">待转换对象</param>
|
/// <param name="value">待转换对象</param>
|
||||||
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
|
/// <param name="defaultValue">默认值。待转换对象无效时使用</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static ulong ToUInt64(this object value, ulong defaultValue = default)
|
public static ulong ToUInt64(this object value, ulong defaultValue = default)
|
||||||
{
|
{
|
||||||
if (value is ulong num) return num;
|
if (value is ulong num) return num;
|
||||||
if (value == null || value == DBNull.Value) return defaultValue;
|
if (value == null || value == DBNull.Value) return defaultValue;
|
||||||
|
|
||||||
if (ulong.TryParse(value.ToString(), out var result))
|
if (ulong.TryParse(value.ToString(), out var result))
|
||||||
return result;
|
return result;
|
||||||
else
|
else
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -38,7 +38,7 @@ public class LoginInput
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 登录模式
|
/// 登录模式
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LoginModeEnum LoginMode { get; set; }
|
public LoginModeEnum LoginMode { get; set; } = LoginModeEnum.PC;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class LoginPhoneInput
|
public class LoginPhoneInput
|
||||||
|
|||||||
@ -313,31 +313,29 @@ public class SysRoleService : IDynamicApiController, ITransient
|
|||||||
apiList[0].AddRange(controller.Children.Select(u => u.Route));
|
apiList[0].AddRange(controller.Children.Select(u => u.Route));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 按钮权限集合
|
// 所有按钮权限集合
|
||||||
var allButtonList = await GetButtonList(new());
|
var allButtonList = await GetButtonList();
|
||||||
|
// 没有接口对应的按钮权限集合
|
||||||
// 没有对应接口的按钮集合
|
var diffButtonList = allButtonList.Except(apiList[0]).ToList(); // 差集
|
||||||
var diffList = allButtonList.Except(apiList[0]).ToList();
|
apiList[0].AddRange(diffButtonList);
|
||||||
|
|
||||||
apiList[0].AddRange(diffList);
|
|
||||||
}
|
}
|
||||||
else
|
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(); // 差集
|
apiList[1] = allButtonList.Except(apiList[0]).ToList(); // 差集
|
||||||
|
|
||||||
// 接口黑名单集合
|
// 接口黑名单集合
|
||||||
var roleApis = await _sysRoleApiService.GetRoleApiList(roleIds);
|
var roleApiList = await _sysRoleApiService.GetRoleApiList(roleIdList);
|
||||||
apiList[1].AddRange(roleApis);
|
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;
|
return apiList;
|
||||||
}
|
}
|
||||||
@ -375,11 +373,11 @@ public class SysRoleService : IDynamicApiController, ITransient
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="menuIds"></param>
|
/// <param name="menuIds"></param>
|
||||||
/// <returns></returns>
|
/// <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()
|
return await _sysRoleRep.ChangeRepository<SqlSugarRepository<SysMenu>>().AsQueryable()
|
||||||
.Where(u => u.Type == MenuTypeEnum.Btn)
|
.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();
|
.Select(u => u.Permission).ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user