mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-09-19 01:58:01 +08:00
修正因合并多对多映射造成的BUG
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
using Infrastructure;
|
||||
using OpenAuth.App.ViewModel;
|
||||
using OpenAuth.Domain;
|
||||
using OpenAuth.Domain.Interface;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Infrastructure;
|
||||
|
||||
namespace OpenAuth.App
|
||||
{
|
||||
@@ -51,13 +51,7 @@ namespace OpenAuth.App
|
||||
/// </summary>
|
||||
public List<Module> LoadForTree()
|
||||
{
|
||||
return _repository.Find(null).ToList();
|
||||
}
|
||||
public List<Module> LoadForUser(int userId)
|
||||
{
|
||||
var moduleIds = _relevanceRepository.Find(u => u.FirstId == userId).Select(u => u.SecondId).ToList();
|
||||
if(!moduleIds.Any()) return null;
|
||||
return _repository.Find(u => moduleIds.Contains(u.Id)).ToList();
|
||||
return _repository.Find(null).ToList();
|
||||
}
|
||||
|
||||
public List<Module> LoadForNav()
|
||||
@@ -114,12 +108,60 @@ namespace OpenAuth.App
|
||||
}
|
||||
}
|
||||
|
||||
public void AccessModules(int userId, int[] ids)
|
||||
#region 用户/角色分配模块
|
||||
|
||||
/// <summary>
|
||||
/// 加载特定用户的模块
|
||||
/// </summary>
|
||||
/// <param name="userId">The user unique identifier.</param>
|
||||
public List<Module> LoadForUser(int userId)
|
||||
{
|
||||
_relevanceRepository.DeleteBy("UserModule",userId);
|
||||
_relevanceRepository.AddRelevance("UserModule",ids.ToDictionary(u =>userId));
|
||||
var moduleIds =
|
||||
_relevanceRepository.Find(u => u.FirstId == userId && u.Key == "UserModule")
|
||||
.Select(u => u.SecondId)
|
||||
.ToList();
|
||||
if (!moduleIds.Any()) return null;
|
||||
return _repository.Find(u => moduleIds.Contains(u.Id)).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 为特定的用户分配模块
|
||||
/// </summary>
|
||||
/// <param name="userId">The user unique identifier.</param>
|
||||
/// <param name="ids">模块ID</param>
|
||||
public void AssignModuleForUser(int userId, int[] ids)
|
||||
{
|
||||
_relevanceRepository.DeleteBy("UserModule", userId);
|
||||
_relevanceRepository.AddRelevance("UserModule", ids.ToLookup(u => userId));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加载特定角色的模块
|
||||
/// </summary>
|
||||
/// <param name="roleId">The role unique identifier.</param>
|
||||
public List<Module> LoadForRole(int roleId)
|
||||
{
|
||||
var moduleIds =
|
||||
_relevanceRepository.Find(u => u.FirstId == roleId && u.Key == "RoleModule")
|
||||
.Select(u => u.SecondId)
|
||||
.ToList();
|
||||
if (!moduleIds.Any()) return null;
|
||||
return _repository.Find(u => moduleIds.Contains(u.Id)).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 为特定的角色分配模块
|
||||
/// </summary>
|
||||
/// <param name="roleId">The user unique identifier.</param>
|
||||
/// <param name="ids">模块ID</param>
|
||||
public void AssignModuleForRole(int roleId, int[] ids)
|
||||
{
|
||||
_relevanceRepository.DeleteBy("RoleModule", roleId);
|
||||
_relevanceRepository.AddRelevance("RoleModule", ids.ToLookup(u => roleId));
|
||||
}
|
||||
|
||||
#endregion 用户/角色分配模块
|
||||
|
||||
#region 私有方法
|
||||
|
||||
//根据同一级中最大的语义ID
|
||||
@@ -166,7 +208,5 @@ namespace OpenAuth.App
|
||||
}
|
||||
|
||||
#endregion 私有方法
|
||||
|
||||
|
||||
}
|
||||
}
|
@@ -4,7 +4,6 @@ using OpenAuth.Domain.Interface;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Security;
|
||||
|
||||
namespace OpenAuth.App
|
||||
{
|
||||
@@ -53,7 +52,6 @@ namespace OpenAuth.App
|
||||
total = _repository.GetRoleCntInOrgs(orgId);
|
||||
}
|
||||
|
||||
|
||||
return new
|
||||
{
|
||||
total = total,
|
||||
@@ -77,7 +75,6 @@ namespace OpenAuth.App
|
||||
var role = _repository.FindSingle(u => u.Id == id);
|
||||
if (role == null) role = new Role();
|
||||
return role;
|
||||
|
||||
}
|
||||
|
||||
public void Delete(int id)
|
||||
@@ -96,10 +93,8 @@ namespace OpenAuth.App
|
||||
{
|
||||
_repository.Update(role);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public List<RoleVM> LoadWithUser(int userId)
|
||||
{
|
||||
var roleIds = _repository.Find(null).ToList();
|
||||
@@ -108,9 +103,9 @@ namespace OpenAuth.App
|
||||
{
|
||||
RoleVM rolevm = role;
|
||||
rolevm.IsBelongUser = (_relevanceRepository.FindSingle(u => u.SecondId == role.Id
|
||||
&& u.FirstId == userId
|
||||
&& u.Key =="UserRole")
|
||||
!=null);
|
||||
&& u.FirstId == userId
|
||||
&& u.Key == "UserRole")
|
||||
!= null);
|
||||
rolevms.Add(rolevm);
|
||||
}
|
||||
return rolevms;
|
||||
@@ -120,7 +115,7 @@ namespace OpenAuth.App
|
||||
{
|
||||
_relevanceRepository.DeleteBy("UserRole", userId);
|
||||
|
||||
_relevanceRepository.AddRelevance("UserRole",roleIds.ToDictionary(roleId => userId));
|
||||
_relevanceRepository.AddRelevance("UserRole", roleIds.ToLookup(roleId => userId));
|
||||
}
|
||||
}
|
||||
}
|
@@ -116,7 +116,7 @@ namespace OpenAuth.App
|
||||
int[] orgIds = view.OrganizationIds.Split(',').Select(id => int.Parse(id)).ToArray();
|
||||
|
||||
_relevanceRepository.DeleteBy("UserOrg", user.Id);
|
||||
_relevanceRepository.AddRelevance("UserOrg", orgIds.ToDictionary(u =>user.Id));
|
||||
_relevanceRepository.AddRelevance("UserOrg", orgIds.ToLookup(u =>user.Id));
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user