mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-07-15 23:13:40 +08:00
refactor: Relevance替换key为relkey
This commit is contained in:
parent
965a8ae2e8
commit
ca9835a039
@ -43,7 +43,7 @@ namespace OpenAuth.App
|
||||
get {
|
||||
var moduleIds = SugarClient.Queryable<Relevance>().Where(
|
||||
u =>
|
||||
u.Key == Define.ROLEMODULE && _userRoleIds.Contains(u.FirstId)).Select(u => u.SecondId).ToList();
|
||||
u.RelKey == Define.ROLEMODULE && _userRoleIds.Contains(u.FirstId)).Select(u => u.SecondId).ToList();
|
||||
var elementIds = GetElementIds();
|
||||
|
||||
return SugarClient.Queryable<ModuleView>().Where(m =>moduleIds.Contains(m.Id))
|
||||
@ -70,7 +70,7 @@ namespace OpenAuth.App
|
||||
{
|
||||
var elementIds = SugarClient.Queryable<Relevance>().Where(
|
||||
u =>
|
||||
u.Key == Define.ROLEELEMENT && _userRoleIds.Contains(u.FirstId)).Select(u => u.SecondId).ToList();
|
||||
u.RelKey == Define.ROLEELEMENT && _userRoleIds.Contains(u.FirstId)).Select(u => u.SecondId).ToList();
|
||||
return elementIds;
|
||||
}
|
||||
|
||||
@ -85,7 +85,7 @@ namespace OpenAuth.App
|
||||
{
|
||||
var resourceIds = SugarClient.Queryable<Relevance>().Where(
|
||||
u =>
|
||||
u.Key == Define.ROLERESOURCE && _userRoleIds.Contains(u.FirstId)).Select(u => u.SecondId).ToList();
|
||||
u.RelKey == Define.ROLERESOURCE && _userRoleIds.Contains(u.FirstId)).Select(u => u.SecondId).ToList();
|
||||
return SugarClient.Queryable<SysResource>().Where(u => resourceIds.Contains(u.Id)).ToList();
|
||||
}
|
||||
}
|
||||
@ -95,7 +95,7 @@ namespace OpenAuth.App
|
||||
get
|
||||
{
|
||||
var orgids = SugarClient.Queryable<Relevance>().Where(
|
||||
u =>u.FirstId == _user.Id && u.Key == Define.USERORG).Select(u => u.SecondId).ToList();
|
||||
u =>u.FirstId == _user.Id && u.RelKey == Define.USERORG).Select(u => u.SecondId).ToList();
|
||||
return SugarClient.Queryable<SysOrg>().Where(org =>orgids.Contains(org.Id))
|
||||
.LeftJoin<SysUser>((org, user) => org.ChairmanId ==user.Id)
|
||||
.Select((org,user)=>new OrgView
|
||||
@ -112,7 +112,7 @@ namespace OpenAuth.App
|
||||
set
|
||||
{
|
||||
_user = value;
|
||||
_userRoleIds = SugarClient.Queryable<Relevance>().Where(u => u.FirstId == _user.Id && u.Key == Define.USERROLE)
|
||||
_userRoleIds = SugarClient.Queryable<Relevance>().Where(u => u.FirstId == _user.Id && u.RelKey == Define.USERROLE)
|
||||
.Select(u => u.SecondId).ToList();
|
||||
}
|
||||
}
|
||||
@ -142,7 +142,7 @@ namespace OpenAuth.App
|
||||
}
|
||||
|
||||
var props =SugarClient.Queryable<Relevance>().Where(u =>
|
||||
u.Key == Define.ROLEDATAPROPERTY && _userRoleIds.Contains(u.FirstId) && u.SecondId == moduleCode)
|
||||
u.RelKey == Define.ROLEDATAPROPERTY && _userRoleIds.Contains(u.FirstId) && u.SecondId == moduleCode)
|
||||
.Select(u => u.ThirdId).ToList();
|
||||
|
||||
return allprops.Where(u => props.Contains(u.ColumnName)).ToList();
|
||||
@ -160,7 +160,7 @@ namespace OpenAuth.App
|
||||
}
|
||||
|
||||
var props =SugarClient.Queryable<Relevance>().Where(u =>
|
||||
u.Key == Define.ROLEDATAPROPERTY && _userRoleIds.Contains(u.FirstId) && u.SecondId == moduleCode)
|
||||
u.RelKey == Define.ROLEDATAPROPERTY && _userRoleIds.Contains(u.FirstId) && u.SecondId == moduleCode)
|
||||
.Select(u => u.ThirdId).ToList();
|
||||
|
||||
return allprops.Where(u => props.Contains(u.ColumnName)).ToList();
|
||||
|
@ -761,14 +761,18 @@ namespace OpenAuth.App.Flow
|
||||
|
||||
/// <summary>
|
||||
/// 替换SQL中的权限占位符
|
||||
/// <para>如:select id from sysuser where parentId = {loginUser}</para>
|
||||
/// <para>替换后:select id from sysuser where parentId = '123'</para>
|
||||
/// <para>如:select id from sysuser where parentId = {loginUser}</para>
|
||||
/// <para>替换后:select id from sysuser where parentId = '123'</para>
|
||||
/// </summary>
|
||||
/// <param name="sql"></param>
|
||||
/// <returns></returns>
|
||||
private string ReplaceSql(string sql){
|
||||
var loginUser = AutofacContainerModule.GetService<IAuth>().GetCurrentUser();
|
||||
var res = sql.Replace(Define.DATAPRIVILEGE_LOGINUSER, loginUser.User.Id);
|
||||
res = res.Replace(Define.DATAPRIVILEGE_LOGINROLE, string.Join(',', loginUser.Roles.Select(u => u.Id)));
|
||||
res = res.Replace(Define.DATAPRIVILEGE_LOGINORG, string.Join(',', loginUser.Orgs.Select(u => u.Id)));
|
||||
var res = sql.Replace(Define.DATAPRIVILEGE_LOGINUSER, $"'{loginUser.User.Id}'");
|
||||
res = res.Replace(Define.DATAPRIVILEGE_LOGINROLE, string.Join(',', loginUser.Roles.Select(u => $"'{u.Id}'")));
|
||||
res = res.Replace(Define.DATAPRIVILEGE_LOGINORG, string.Join(',', loginUser.Orgs.Select(u => $"'{u.Id}'")));
|
||||
return res;
|
||||
}
|
||||
|
||||
|
@ -792,17 +792,17 @@ namespace OpenAuth.App
|
||||
select distinct FirstId as InstanceId
|
||||
from Relevance rel
|
||||
inner join FlowInstance flow on rel.FirstId = flow.Id and flow.IsFinish = 1
|
||||
where `key` = '{Define.INSTANCE_NOTICE_USER}'
|
||||
where RelKey = '{Define.INSTANCE_NOTICE_USER}'
|
||||
and SecondId = '{user.User.Id}'
|
||||
union
|
||||
select distinct a.FirstId as InstanceId
|
||||
from Relevance a
|
||||
inner join (select SecondId as RoleId
|
||||
from Relevance
|
||||
where `key` = 'UserRole'
|
||||
where RelKey = 'UserRole'
|
||||
and FirstId = '{user.User.Id}') b on a.SecondId = b.RoleId
|
||||
inner join FlowInstance flow on a.FirstId = flow.Id and flow.IsFinish = 1
|
||||
where a.`key` = '{Define.INSTANCE_NOTICE_ROLE}') UniqueInstanceIds
|
||||
where a.RelKey = '{Define.INSTANCE_NOTICE_ROLE}') UniqueInstanceIds
|
||||
ON fi.Id = UniqueInstanceIds.InstanceId
|
||||
";
|
||||
}
|
||||
@ -810,15 +810,8 @@ namespace OpenAuth.App
|
||||
switch (SugarClient.CurrentConnectionConfig.DbType)
|
||||
{
|
||||
case DbType.SqlServer:
|
||||
sql = sql.Replace("`key`", "[Key]");
|
||||
sql = sql.Replace("from dual", "");
|
||||
break;
|
||||
case DbType.Oracle:
|
||||
sql = sql.Replace("`key`", "\"KEY\"");
|
||||
break;
|
||||
case DbType.PostgreSQL:
|
||||
sql = sql.Replace("`key`", "key");
|
||||
break;
|
||||
}
|
||||
|
||||
var finalQuery = SugarClient.SqlQueryable<FlowInstance>(sql)
|
||||
|
@ -52,7 +52,7 @@ namespace OpenAuth.App
|
||||
/// <param name="roleId">The role unique identifier.</param>
|
||||
public IEnumerable<Module> LoadForRole(string roleId)
|
||||
{
|
||||
var moduleIds = UnitWork.Find<Relevance>(u => u.FirstId == roleId && u.Key == Define.ROLEMODULE)
|
||||
var moduleIds = UnitWork.Find<Relevance>(u => u.FirstId == roleId && u.RelKey == Define.ROLEMODULE)
|
||||
.Select(u => u.SecondId);
|
||||
return UnitWork.Find<Module>(u => moduleIds.Contains(u.Id)).OrderBy(u => u.SortNo);
|
||||
}
|
||||
|
@ -71,7 +71,7 @@ namespace OpenAuth.App
|
||||
delOrgIds.AddRange(UnitWork.Find<SysOrg>(u=>u.CascadeId.Contains(cascadeId)).Select(u =>u.Id).ToArray());
|
||||
}
|
||||
|
||||
UnitWork.Delete<Relevance>(u =>u.Key == Define.USERORG && delOrgIds.Contains(u.SecondId));
|
||||
UnitWork.Delete<Relevance>(u =>u.RelKey == Define.USERORG && delOrgIds.Contains(u.SecondId));
|
||||
UnitWork.Delete<SysOrg>(u => delOrgIds.Contains(u.Id));
|
||||
UnitWork.Save();
|
||||
|
||||
@ -85,7 +85,7 @@ namespace OpenAuth.App
|
||||
{
|
||||
var result = from userorg in UnitWork.Find<Relevance>(null)
|
||||
join org in UnitWork.Find<SysOrg>(null) on userorg.SecondId equals org.Id
|
||||
where userorg.FirstId == userId && userorg.Key == Define.USERORG
|
||||
where userorg.FirstId == userId && userorg.RelKey == Define.USERORG
|
||||
select org;
|
||||
return result.ToList();
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ namespace OpenAuth.App
|
||||
from value in sameVals
|
||||
select new Relevance
|
||||
{
|
||||
Key = key,
|
||||
RelKey = key,
|
||||
FirstId = sameVals.Key,
|
||||
SecondId = value,
|
||||
OperateTime = DateTime.Now
|
||||
@ -81,7 +81,7 @@ namespace OpenAuth.App
|
||||
_logger.LogInformation($"start=> delete {key} {sameVals.Key} {value}");
|
||||
try
|
||||
{
|
||||
UnitWork.Delete<Relevance>(u => u.Key == key && u.FirstId == sameVals.Key && u.SecondId == value);
|
||||
UnitWork.Delete<Relevance>(u => u.RelKey == key && u.FirstId == sameVals.Key && u.SecondId == value);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@ -94,7 +94,7 @@ namespace OpenAuth.App
|
||||
|
||||
public void DeleteBy(string key, params string[] firstIds)
|
||||
{
|
||||
UnitWork.Delete<Relevance>(u => firstIds.Contains(u.FirstId) && u.Key == key);
|
||||
UnitWork.Delete<Relevance>(u => firstIds.Contains(u.FirstId) && u.RelKey == key);
|
||||
}
|
||||
|
||||
|
||||
@ -109,12 +109,12 @@ namespace OpenAuth.App
|
||||
{
|
||||
if (returnSecondIds)
|
||||
{
|
||||
return Repository.Find(u => u.Key == key
|
||||
return Repository.Find(u => u.RelKey == key
|
||||
&& ids.Contains(u.FirstId)).Select(u => u.SecondId).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
return Repository.Find(u => u.Key == key
|
||||
return Repository.Find(u => u.RelKey == key
|
||||
&& ids.Contains(u.SecondId)).Select(u => u.FirstId).ToList();
|
||||
}
|
||||
}
|
||||
@ -128,7 +128,7 @@ namespace OpenAuth.App
|
||||
/// <returns></returns>
|
||||
public List<string> Get(string key, string firstId, string secondId)
|
||||
{
|
||||
return Repository.Find(u => u.Key == key && u.FirstId == firstId && u.SecondId == secondId)
|
||||
return Repository.Find(u => u.RelKey == key && u.FirstId == firstId && u.SecondId == secondId)
|
||||
.Select(u => u.ThirdId).ToList();
|
||||
}
|
||||
|
||||
@ -148,7 +148,7 @@ namespace OpenAuth.App
|
||||
{
|
||||
relevances.Add(new Relevance
|
||||
{
|
||||
Key = Define.ROLEDATAPROPERTY,
|
||||
RelKey = Define.ROLEDATAPROPERTY,
|
||||
FirstId = request.RoleId,
|
||||
SecondId = request.ModuleCode,
|
||||
ThirdId = requestProperty,
|
||||
@ -181,7 +181,7 @@ namespace OpenAuth.App
|
||||
{
|
||||
foreach (var property in request.Properties)
|
||||
{
|
||||
UnitWork.Delete<Relevance>(u => u.Key == Define.ROLEDATAPROPERTY
|
||||
UnitWork.Delete<Relevance>(u => u.RelKey == Define.ROLEDATAPROPERTY
|
||||
&& u.FirstId == request.RoleId
|
||||
&& u.SecondId == request.ModuleCode
|
||||
&& u.ThirdId == property);
|
||||
@ -198,12 +198,12 @@ namespace OpenAuth.App
|
||||
UnitWork.ExecuteWithTransaction(() =>
|
||||
{
|
||||
//删除以前的所有用户
|
||||
UnitWork.Delete<Relevance>(u => u.SecondId == request.RoleId && u.Key == Define.USERROLE);
|
||||
UnitWork.Delete<Relevance>(u => u.SecondId == request.RoleId && u.RelKey == Define.USERROLE);
|
||||
//批量分配用户角色
|
||||
UnitWork.BatchAdd((from firstId in request.UserIds
|
||||
select new Relevance
|
||||
{
|
||||
Key = Define.USERROLE,
|
||||
RelKey = Define.USERROLE,
|
||||
FirstId = firstId,
|
||||
SecondId = request.RoleId,
|
||||
OperateTime = DateTime.Now
|
||||
@ -221,12 +221,12 @@ namespace OpenAuth.App
|
||||
UnitWork.ExecuteWithTransaction(() =>
|
||||
{
|
||||
//删除以前的所有用户
|
||||
UnitWork.Delete<Relevance>(u => u.SecondId == request.OrgId && u.Key == Define.USERORG);
|
||||
UnitWork.Delete<Relevance>(u => u.SecondId == request.OrgId && u.RelKey == Define.USERORG);
|
||||
//批量分配用户角色
|
||||
UnitWork.BatchAdd((from firstId in request.UserIds
|
||||
select new Relevance
|
||||
{
|
||||
Key = Define.USERORG,
|
||||
RelKey = Define.USERORG,
|
||||
FirstId = firstId,
|
||||
SecondId = request.OrgId,
|
||||
OperateTime = DateTime.Now
|
||||
@ -244,12 +244,12 @@ namespace OpenAuth.App
|
||||
UnitWork.ExecuteWithTransaction(() =>
|
||||
{
|
||||
//删除以前的所有资源
|
||||
UnitWork.Delete<Relevance>(u => u.FirstId == request.RoleId && u.Key == Define.ROLERESOURCE);
|
||||
UnitWork.Delete<Relevance>(u => u.FirstId == request.RoleId && u.RelKey == Define.ROLERESOURCE);
|
||||
//批量分配角色资源
|
||||
UnitWork.BatchAdd((from firstId in request.ResourceIds
|
||||
select new Relevance
|
||||
{
|
||||
Key = Define.ROLERESOURCE,
|
||||
RelKey = Define.ROLERESOURCE,
|
||||
FirstId = request.RoleId,
|
||||
SecondId = firstId,
|
||||
OperateTime = DateTime.Now
|
||||
|
@ -88,8 +88,8 @@ namespace OpenAuth.App
|
||||
{
|
||||
UnitWork.ExecuteWithTransaction(() =>
|
||||
{
|
||||
UnitWork.Delete<Relevance>(u=>(u.Key == Define.ROLEMODULE || u.Key == Define.ROLEELEMENT) && ids.Contains(u.FirstId));
|
||||
UnitWork.Delete<Relevance>(u=>u.Key == Define.USERROLE && ids.Contains(u.SecondId));
|
||||
UnitWork.Delete<Relevance>(u=>(u.RelKey == Define.ROLEMODULE || u.RelKey == Define.ROLEELEMENT) && ids.Contains(u.FirstId));
|
||||
UnitWork.Delete<Relevance>(u=>u.RelKey == Define.USERROLE && ids.Contains(u.SecondId));
|
||||
UnitWork.Delete<Role>(u =>ids.Contains(u.Id));
|
||||
UnitWork.Save();
|
||||
});
|
||||
|
@ -44,7 +44,7 @@ namespace OpenAuth.App
|
||||
join user2 in UnitWork.Find<SysUser>(null)
|
||||
on user.ParentId equals user2.Id into tempuser
|
||||
from u in tempuser.DefaultIfEmpty()
|
||||
join relevance in UnitWork.Find<Relevance>(u => u.Key == "UserOrg")
|
||||
join relevance in UnitWork.Find<Relevance>(u => u.RelKey == "UserOrg")
|
||||
on user.Id equals relevance.FirstId into temp
|
||||
from r in temp.DefaultIfEmpty()
|
||||
join org in UnitWork.Find<SysOrg>(null)
|
||||
@ -64,7 +64,7 @@ namespace OpenAuth.App
|
||||
user.TypeName,
|
||||
user.ParentId,
|
||||
ParentName = u.Name, //直属上级
|
||||
r.Key,
|
||||
Key = r.RelKey,
|
||||
r.SecondId,
|
||||
OrgId = o.Id,
|
||||
OrgName = o.Name
|
||||
@ -122,7 +122,7 @@ namespace OpenAuth.App
|
||||
join user2 in UnitWork.Find<SysUser>(null)
|
||||
on user.ParentId equals user2.Id into tempuser
|
||||
from u in tempuser.DefaultIfEmpty()
|
||||
join relevance in UnitWork.Find<Relevance>(u => u.Key == "UserOrg")
|
||||
join relevance in UnitWork.Find<Relevance>(u => u.RelKey == "UserOrg")
|
||||
on user.Id equals relevance.FirstId into temp
|
||||
from r in temp.DefaultIfEmpty()
|
||||
join org in UnitWork.Find<SysOrg>(null)
|
||||
@ -142,7 +142,7 @@ namespace OpenAuth.App
|
||||
user.TypeName,
|
||||
user.ParentId,
|
||||
ParentName = u.Name, //直属上级
|
||||
r.Key,
|
||||
Key = r.RelKey,
|
||||
r.SecondId,
|
||||
OrgId = o.Id,
|
||||
OrgName = o.Name
|
||||
@ -230,7 +230,7 @@ namespace OpenAuth.App
|
||||
{
|
||||
UnitWork.ExecuteWithTransaction(() =>
|
||||
{
|
||||
UnitWork.Delete<Relevance>(u =>(u.Key == Define.USERROLE || u.Key == Define.USERORG)
|
||||
UnitWork.Delete<Relevance>(u =>(u.RelKey == Define.USERROLE || u.RelKey == Define.USERORG)
|
||||
&& ids.Contains(u.FirstId));
|
||||
UnitWork.Delete<SysUser>(u => ids.Contains(u.Id));
|
||||
UnitWork.Save();
|
||||
@ -255,7 +255,7 @@ namespace OpenAuth.App
|
||||
public async Task<TableData> LoadByRole(QueryUserListByRoleReq request)
|
||||
{
|
||||
var users = from userRole in UnitWork.Find<Relevance>(u =>
|
||||
u.SecondId == request.roleId && u.Key == Define.USERROLE)
|
||||
u.SecondId == request.roleId && u.RelKey == Define.USERROLE)
|
||||
join user in UnitWork.Find<SysUser>(null) on userRole.FirstId equals user.Id into temp
|
||||
from c in temp.Where(u =>u.Id != null)
|
||||
select c;
|
||||
@ -273,7 +273,7 @@ namespace OpenAuth.App
|
||||
public async Task<TableData> LoadByOrg(QueryUserListByOrgReq request)
|
||||
{
|
||||
var users = from userOrg in UnitWork.Find<Relevance>(u =>
|
||||
u.SecondId == request.orgId && u.Key == Define.USERORG)
|
||||
u.SecondId == request.orgId && u.RelKey == Define.USERORG)
|
||||
join user in UnitWork.Find<SysUser>(null) on userOrg.FirstId equals user.Id into temp
|
||||
from c in temp.Where(u =>u.Id != null)
|
||||
select c;
|
||||
@ -327,30 +327,16 @@ namespace OpenAuth.App
|
||||
from sysuser u
|
||||
join (select distinct SecondId as UserId
|
||||
from Relevance
|
||||
where `key` = '{Define.INSTANCE_NOTICE_USER}'
|
||||
where RelKey = '{Define.INSTANCE_NOTICE_USER}'
|
||||
and FirstId = '{instanceId}'
|
||||
union
|
||||
select distinct FirstId as UserId
|
||||
from Relevance a
|
||||
inner join (select SecondId as RoleId
|
||||
from Relevance
|
||||
where `key` = '{Define.INSTANCE_NOTICE_ROLE}'
|
||||
where RelKey = '{Define.INSTANCE_NOTICE_ROLE}'
|
||||
and FirstId = '{instanceId}') b on a.SecondId = b.RoleId
|
||||
where `key` = 'UserRole') userids on u.Id = userids.UserId";
|
||||
|
||||
if (UnitWork.GetDbContext().Database.GetDbConnection().GetType().Name == "SqlConnection")
|
||||
{
|
||||
sql = sql.Replace("`key`", "[Key]");
|
||||
}
|
||||
else if (UnitWork.GetDbContext().Database.GetDbConnection().GetType().Name == "OracleConnection")
|
||||
{
|
||||
sql = sql.Replace("`key`", "\"KEY\"");
|
||||
}
|
||||
else if (UnitWork.GetDbContext().Database.GetDbConnection().GetType().Name == "NpgsqlConnection")
|
||||
{
|
||||
sql = sql.Replace("`key`", "\"key\"");
|
||||
}
|
||||
|
||||
where RelKey = 'UserRole') userids on u.Id = userids.UserId";
|
||||
var users = UnitWork.FromSql<SysUser>(sql);
|
||||
return users.Select(u=>u.Id).ToList();
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ namespace OpenAuth.Repository.Domain
|
||||
public Relevance()
|
||||
{
|
||||
this.Description= string.Empty;
|
||||
this.Key= string.Empty;
|
||||
this.RelKey= string.Empty;
|
||||
this.Status= 0;
|
||||
this.OperateTime= DateTime.Now;
|
||||
this.OperatorId= string.Empty;
|
||||
@ -42,7 +42,7 @@ namespace OpenAuth.Repository.Domain
|
||||
/// 映射标识
|
||||
/// </summary>
|
||||
[Description("映射标识")]
|
||||
public string Key { get; set; }
|
||||
public string RelKey { get; set; }
|
||||
/// <summary>
|
||||
/// 状态
|
||||
/// </summary>
|
||||
|
Loading…
Reference in New Issue
Block a user