v3.4.6
This commit is contained in:
@@ -145,4 +145,16 @@ public interface IUserManager
|
||||
/// <param name="organizeId">组织Id.</param>
|
||||
/// <returns></returns>
|
||||
Task<List<string>> GetUserOrgRoleIds(string roleIds, string organizeId);
|
||||
|
||||
/// <summary>
|
||||
/// 判断是否管理员.
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
bool IsAdmin(string userId);
|
||||
|
||||
/// <summary>
|
||||
/// 获取管理员用户id.
|
||||
/// </summary>
|
||||
string GetAdminUserId();
|
||||
}
|
||||
@@ -11,6 +11,7 @@ using JNPF.DependencyInjection;
|
||||
using JNPF.Systems.Entitys.Entity.Permission;
|
||||
using JNPF.Systems.Entitys.Permission;
|
||||
using JNPF.Systems.Entitys.System;
|
||||
using Mapster;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using SqlSugar;
|
||||
using System.Security.Claims;
|
||||
@@ -118,7 +119,7 @@ public class UserManager : IUserManager, IScoped
|
||||
/// </summary>
|
||||
public string ToKen
|
||||
{
|
||||
get => String.IsNullOrEmpty(App.HttpContext?.Request.Headers["Authorization"]) ? App.HttpContext?.Request.Query["token"] : App.HttpContext?.Request.Headers["Authorization"];
|
||||
get => string.IsNullOrEmpty(App.HttpContext?.Request.Headers["Authorization"]) ? App.HttpContext?.Request.Query["token"] : App.HttpContext?.Request.Headers["Authorization"];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -134,7 +135,7 @@ public class UserManager : IUserManager, IScoped
|
||||
/// </summary>
|
||||
public string TenantId
|
||||
{
|
||||
get => ConnectionConfig.ConfigId;
|
||||
get => ConnectionConfig?.ConfigId;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -142,7 +143,7 @@ public class UserManager : IUserManager, IScoped
|
||||
/// </summary>
|
||||
public string TenantDbName
|
||||
{
|
||||
get => ConnectionConfig.ConfigList.Find(it => it.IsMaster.Equals(true)).ServiceName;
|
||||
get => ConnectionConfig?.ConfigList?.Find(it => it.IsMaster.Equals(true)).ServiceName;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -204,9 +205,11 @@ public class UserManager : IUserManager, IScoped
|
||||
{
|
||||
UserAgent userAgent = new UserAgent(_httpContext);
|
||||
var data = new UserInfoModel();
|
||||
var userCache = string.Format("{0}:{1}:{2}", TenantId, CommonConst.CACHEKEYUSER, UserId);
|
||||
var userDataScope = await GetUserDataScopeAsync(UserId);
|
||||
|
||||
var ipAddress = NetHelper.Ip;
|
||||
//var ipAddressName = await NetHelper.GetLocation(ipAddress);
|
||||
var userDataScope = await GetUserDataScopeAsync(UserId);
|
||||
var sysConfigInfo = await _repository.AsSugarClient().Queryable<SysConfigEntity>().FirstAsync(s => s.Category.Equals("SysConfig") && s.Key.ToLower().Equals("tokentimeout"));
|
||||
data = await _repository.AsQueryable().Where(it => it.Id == UserId)
|
||||
.Select(a => new UserInfoModel
|
||||
@@ -235,11 +238,14 @@ public class UserManager : IUserManager, IScoped
|
||||
birthday = a.Birthday,
|
||||
systemId = a.SystemId,
|
||||
signImg = SqlFunc.Subqueryable<SignImgEntity>().Where(a => a.CreatorUserId == UserId && a.IsDefault == 1).Select(a => a.SignImg),
|
||||
changePasswordDate = a.ChangePasswordDate,
|
||||
loginTime = DateTime.Now,
|
||||
}).FirstAsync();
|
||||
if (data.portalId.IsNullOrWhiteSpace()) data.portalId = string.Empty;
|
||||
if (data != null && data.organizeName.IsNotEmptyOrNull())
|
||||
{
|
||||
var orgIdTree = data?.organizeName?.Split(',');
|
||||
data.organizeIdList = orgIdTree.ToList();
|
||||
var organizeName = await _repository.AsSugarClient().Queryable<OrganizeEntity>().Where(x => orgIdTree.Contains(x.Id)).OrderBy(x => x.SortCode).OrderBy(x => x.CreatorTime).Select(x => x.FullName).ToListAsync();
|
||||
data.organizeName = string.Join("/", organizeName);
|
||||
}
|
||||
@@ -247,8 +253,6 @@ public class UserManager : IUserManager, IScoped
|
||||
{
|
||||
data.organizeName = data.departmentName;
|
||||
}
|
||||
|
||||
data.loginTime = DateTime.Now;
|
||||
data.prevLogin = (await _repository.AsSugarClient().Queryable<SysConfigEntity>().FirstAsync(x => x.Category.Equals("SysConfig") && x.Key.ToLower().Equals("lastlogintimeswitch"))).Value.ParseToInt();
|
||||
data.loginIPAddress = ipAddress;
|
||||
//data.loginIPAddressName = ipAddressName;
|
||||
@@ -277,7 +281,8 @@ public class UserManager : IUserManager, IScoped
|
||||
data.tenantDbName = TenantDbName;
|
||||
|
||||
// 根据系统配置过期时间自动过期
|
||||
await SetUserInfo(string.Format("{0}{1}_{2}", CommonConst.CACHEKEYUSER, TenantId, UserId), data, TimeSpan.FromMinutes(sysConfigInfo.Value.ParseToDouble()));
|
||||
await SetUserInfo(userCache, data, TimeSpan.FromMinutes(sysConfigInfo.Value.ParseToDouble()));
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
@@ -1572,7 +1577,7 @@ public class UserManager : IUserManager, IScoped
|
||||
ids.AddRange(Subsidiary);
|
||||
for (int i = 0; i < ids.Count; i++)
|
||||
{
|
||||
if(i == 0)
|
||||
if (i == 0)
|
||||
{
|
||||
switch (conditionItem.Logic)
|
||||
{
|
||||
@@ -1622,7 +1627,7 @@ public class UserManager : IUserManager, IScoped
|
||||
}
|
||||
else
|
||||
{
|
||||
if(itemMethod.Equals(QueryType.NotEqual) || itemMethod.Equals(QueryType.NotIncluded))
|
||||
if (itemMethod.Equals(QueryType.NotEqual) || itemMethod.Equals(QueryType.NotIncluded))
|
||||
conditionalList.Add(new { Key = (int)WhereType.And, Value = new { FieldName = itemField, FieldValue = ids[i], ConditionalType = (int)cmodel.ConditionalType } });
|
||||
else
|
||||
conditionalList.Add(new { Key = (int)WhereType.Or, Value = new { FieldName = itemField, FieldValue = ids[i], ConditionalType = (int)cmodel.ConditionalType } });
|
||||
@@ -2009,6 +2014,16 @@ public class UserManager : IUserManager, IScoped
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 会否存在用户缓存.
|
||||
/// </summary>
|
||||
/// <param name="cacheKey"></param>
|
||||
/// <returns></returns>
|
||||
private async Task<bool> ExistsUserInfo(string cacheKey)
|
||||
{
|
||||
return await _cacheManager.ExistsAsync(cacheKey);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存用户登录信息.
|
||||
/// </summary>
|
||||
@@ -2020,4 +2035,35 @@ public class UserManager : IUserManager, IScoped
|
||||
{
|
||||
return await _cacheManager.SetAsync(cacheKey, userInfo, timeSpan);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取用户登录信息.
|
||||
/// </summary>
|
||||
/// <param name="cacheKey">key.</param>
|
||||
/// <returns></returns>
|
||||
private async Task<UserInfoModel> GetUserInfo(string cacheKey)
|
||||
{
|
||||
return (await _cacheManager.GetAsync(cacheKey)).Adapt<UserInfoModel>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 判断是否管理员.
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
public bool IsAdmin(string userId)
|
||||
{
|
||||
if (userId == "admin") return true;
|
||||
return _repository.AsSugarClient().Queryable<UserEntity>().Any(x => x.Id == userId && x.Account == "admin" && x.DeleteMark == null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取管理员用户id.
|
||||
/// </summary>
|
||||
public string GetAdminUserId()
|
||||
{
|
||||
var user = _repository.AsSugarClient().Queryable<UserEntity>().First(x => x.Account == "admin" && x.DeleteMark == null);
|
||||
if (user.IsNotEmptyOrNull()) return user.Id;
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user