完成资源授权,元旦节正式发布1.0版,敬请期待!

This commit is contained in:
yubaolee
2015-12-22 15:04:15 +08:00
parent f853bd13b7
commit 935f5e5cc1
13 changed files with 463 additions and 42 deletions

View File

@@ -68,20 +68,7 @@ namespace OpenAuth.App
public List<ModuleElementVM> LoadWithAccess(string accessType, int firstId, int moduleId)
{
//TODO:多个Repository使用的是不同的Context不能进行联表查询要用UnitOfWork处理
//var results = from element in _repository.Find(u => u.ModuleId == moduleId)
// join module in _moduleRepository.Find(null) on element.ModuleId equals module.Id
// join relev in _relevanceRepository.Find(u => u.Key == accessType && u.FirstId == firstId)
// on element.Id equals relev.SecondId into temp
// from t in temp.DefaultIfEmpty()
// select new ModuleElementVM
// {
// DomId = element.DomId,
// Id = element.Id,
// ModuleId = element.ModuleId,
// ModuleName = module.Name,
// Name = element.Name,
// Accessed = t != null
// };
var listVms = new List<ModuleElementVM>();
if (moduleId == 0) return listVms;
string modulename = _moduleRepository.FindSingle(u => u.Id == moduleId).Name;

View File

@@ -55,6 +55,7 @@
<Compile Include="ViewModel\LoginUserVM.cs" />
<Compile Include="ViewModel\ModuleElementVM.cs" />
<Compile Include="ViewModel\ModuleView.cs" />
<Compile Include="ViewModel\ResourceVM.cs" />
<Compile Include="ViewModel\RoleVM.cs" />
<Compile Include="ViewModel\UserView.cs" />
</ItemGroup>

View File

@@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using Infrastructure;
using OpenAuth.App.ViewModel;
namespace OpenAuth.App
{
@@ -12,12 +13,15 @@ namespace OpenAuth.App
{
private IResourceRepository _repository;
private readonly ICategoryRepository _categoryRepository;
private IRelevanceRepository _relevanceRepository;
public ResourceManagerApp(IResourceRepository repository,
ICategoryRepository categoryRepository)
ICategoryRepository categoryRepository,
IRelevanceRepository relevanceRepository)
{
_repository = repository;
_categoryRepository = categoryRepository;
_relevanceRepository = relevanceRepository;
}
public int GetResourceCntInOrg(int orgId)
@@ -102,6 +106,57 @@ namespace OpenAuth.App
}
/// <summary>
/// 获取带有授权状态的菜单列表
/// </summary>
/// <param name="accessType">授权类型当前有RoleResource/UserResource</param>
/// <param name="firstId">
/// 当为RoleResource时表示RoleId
/// 当为UserResource时表示UserId
/// </param>
/// <param name="cId">分类ID</param>
public List<ResourceVM> LoadWithAccess(string accessType, int firstId, int cId)
{
var listVms = new List<ResourceVM>();
if (cId == 0) return listVms;
foreach (var element in _repository.LoadInOrgs(cId))
{
var accessed = _relevanceRepository.FindSingle(u => u.Key == accessType
&& u.FirstId == firstId && u.SecondId == element.Id);
listVms.Add(new ResourceVM
{
Id = element.Id,
Name = element.Name,
IsBelongUser = accessed != null,
Description = element.Description,
Key = element.Key,
Status = element.Status
});
}
return listVms;
}
/// <summary>
/// 为用户分配资源
/// </summary>
/// <param name="userId">用户ID</param>
/// <param name="resIds">资源ID数组</param>
public void AssignResForUser(int userId, int[] resIds)
{
_relevanceRepository.DeleteBy("UserResource", resIds);
_relevanceRepository.AddRelevance("UserResource", resIds.ToLookup(u => userId));
}
/// <summary>
/// 为角色分配资源
/// </summary>
/// <param name="roleId">角色ID</param>
/// <param name="resIds">资源ID数组</param>
public void AssignResForRole(int roleId, int[] resIds)
{
_relevanceRepository.DeleteBy("RoleResource", resIds);
_relevanceRepository.AddRelevance("RoleResource", resIds.ToLookup(u => roleId));
}
}
}

View File

@@ -0,0 +1,39 @@
namespace OpenAuth.App.ViewModel
{
public class ResourceVM
{
/// <summary>
/// 资源表ID
/// </summary>
/// <returns></returns>
public int Id { get; set; }
/// <summary>
///
/// </summary>
/// <returns></returns>
public string Key { get; set; }
/// <summary>
/// 组织名称
/// </summary>
/// <returns></returns>
public string Name { get; set; }
/// <summary>
/// 资源分类标识
/// </summary>
/// <returns></returns>
public int Status { get; set; }
/// <summary>
/// 描述
/// </summary>
/// <returns></returns>
public string Description { get; set; }
public bool IsBelongUser { get; set; }
}
}

View File

@@ -57,7 +57,7 @@ namespace OpenAuth.App.ViewModel
public static implicit operator Role(RoleVM rolevm)
{
return rolevm.MapTo<Role>();
return rolevm.MapTo<Role>();
}
}