😎1、优化没有对应接口的按钮增加到授权集合 2、清理代码
This commit is contained in:
parent
8210fe8753
commit
2e64a7f29c
@ -11,5 +11,4 @@ namespace Admin.NET.Application;
|
||||
/// </summary>
|
||||
public class AppClaimConst : ClaimConst
|
||||
{
|
||||
|
||||
}
|
||||
@ -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,
|
||||
|
||||
@ -18,5 +18,4 @@ public class AppUserManager : UserManager
|
||||
}
|
||||
|
||||
// 扩展属性
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -38,7 +38,7 @@ public class LoginInput
|
||||
/// <summary>
|
||||
/// 登录模式
|
||||
/// </summary>
|
||||
public LoginModeEnum LoginMode { get; set; }
|
||||
public LoginModeEnum LoginMode { get; set; } = LoginModeEnum.PC;
|
||||
}
|
||||
|
||||
public class LoginPhoneInput
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user