完成资源授权,元旦节正式发布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

@@ -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));
}
}
}