/// <summary> /// 设置组织的用户列表 /// 用户列表必须是当前组织的所有用户集合 /// </summary> /// <param name="userIds">用户Id集合</param> /// <param name="groupId">组织Id</param> public void SetGroupUser(IList <long> userIds, long groupId) { var groupUserRepository = RepositoryFacade.ResolveInstance <GroupUserRepository>(); var groupUserList = groupUserRepository.GetByParentId(groupId).Concrete(); var changeGroupUserList = groupUserRepository.NewList(); var groupUsers = groupUserList as IList <GroupUser> ?? groupUserList.ToList(); foreach (GroupUser item in groupUsers) { if (userIds.All(id => id != item.UserId)) { changeGroupUserList.Add(item); item.PersistenceStatus = PersistenceStatus.Deleted; } } var group = new Group { Id = groupId }; foreach (var userId in userIds) { if (groupUsers.All(g => g.UserId != userId)) { GroupUser groupUser = new GroupUser(); groupUser.Group = group; groupUser.User = new Accounts.User { Id = userId }; groupUser.PersistenceStatus = PersistenceStatus.New; changeGroupUserList.Add(groupUser); } } groupUserRepository.Save(changeGroupUserList); }
// GET: Leitor private void CarregarDropDownListLivros() { RepositoryFacade repositoryFacede = new RepositoryFacade(); List <Livro> livros = repositoryFacede.Livro.GetAll(); ViewBag.Livro_Id = new SelectList(livros, "Id", "Nome"); }
/// <summary> /// 获取当前组的所有菜单资源的权限 /// </summary> /// <param name="groupID">用户组的主键</param> /// <returns>返回获取到的资源数组列表</returns> protected override IList <Resource> GenerateResourcePermission(int groupID) { ResourceList resourceList = RepositoryFacade.ResolveInstance <ResourceRepository>().Extension <ResourceRepositoryExtension>().GetResourceByGroupID(groupID); IList <Resource> resource = resourceList.Concrete().ToList(); return(resource); }
public virtual void TestInitialize() { DbContextHelper <CadastroEntities> .CreateContext(); BusinessFacade = new BusinessFacade(); //Aqui não pode ser singleton RepositoryFacade = new RepositoryFacade(); //Aqui não pode ser singleton }
public void RBAC_UserRole_GetRoleListTest() { this._controller = DomainControllerFactory.Create <UserRoleController>(); var userRoleRepository = RepositoryFacade.ResolveInstance <UserRoleRepository>(); var userRepository = RepositoryFacade.ResolveInstance <UserRepository>(); var roleRepository = RepositoryFacade.ResolveInstance <RoleRepository>(); using (RepositoryFacade.TransactionScope(userRoleRepository)) { var user = new User { Id = 1, UserName = "******", RealName = "Test_001", Email = "*****@*****.**", PhoneNumber = "18666666666" }; var role = new Role { Id = 1, Code = Guid.NewGuid().ToString("N"), Description = "", Name = "管理员" }; userRepository.Save(user); roleRepository.Save(role); userRoleRepository.Save(new UserRole { User = user, Role = role }); var roleList = roleRepository.GetRoleByUserId(user.Id); Assert.IsNotNull(roleList); Assert.IsTrue(roleList.Count == 1); } }
/// <summary> /// 根据用户所在的组集合,获取组的角色列表 /// </summary> /// <param name="user">用户</param> /// <returns></returns> public RoleList FindByUser(User user) { var groupList = RepositoryFacade.ResolveInstance <GroupRepository>().GetGroupByUserId(user.Id); var idList = groupList.Select(p => (long)p.Id); return (RepositoryFacade.ResolveInstance <RoleRepository>() .GetRoleByGroupIdList(idList)); }
public virtual void TestInitialize() { DbContextHelper <LanchoneteEntities> .CreateContext(); FabricaDeDados.IncluirTodosIngredientesDisponiveis(); BusinessFacade = new BusinessFacade(); //Aqui não pode ser singleton RepositoryFacade = new RepositoryFacade(); //Aqui não pode ser singleton }
public void RBAC_GetPermissionEntry_Success() { var repo = RepositoryFacade.ResolveInstance <GroupRepository>(); using (RepositoryFacade.TransactionScope(repo)) { var controller = new PermissionFacadeController(); Assert.IsNotNull(controller.GetPermissionEntry(1)); } }
public void RBAC_Role_GetResourceOperation() { var repo = RepositoryFacade.ResolveInstance <ResourceOperationRepository>(); using (RepositoryFacade.TransactionScope(repo)) { var tuple = RBAC_InitRBAC(); Assert.IsTrue(repo.GetByParentId(tuple.Item4.Id).Count == 2); Assert.IsTrue(repo.GetResourceOperation(tuple.Item1.Id, tuple.Item4.Id).Count == 1); } }
public void RBAC_Group_GetAllGroupList() { var repo = RepositoryFacade.ResolveInstance <GroupRepository>(); using (RepositoryFacade.TransactionScope(repo)) { RBAC_InitRBAC(); var groupList = TreeHelper.ConvertToList <Group>(repo.GetAll()); Assert.IsTrue(groupList.Count == 2); } }
public void NewsMessageControllerPost() { IRepository <NewsMessage> nm = new RepositoryFacade().GetNewsMessageRepository(); NewsMessage n = new NewsMessage { }; var test = nm.Create(n); //Assert Assert.IsNotNull(test); Assert.AreNotEqual(n, test); }
/// <summary> /// 获取指定类型的仓储 /// </summary> /// <param name="type"></param> /// <returns></returns> private IRepository FindRepository(Type type) { if (_repositoriesCache.ContainsKey(type.FullName)) { return(_repositoriesCache[type.FullName]); } var repository = RepositoryFacade.Find(type); _repositoriesCache[type.FullName] = repository; return(repository); }
public void RBAC_DataPermission_CurrentGroupDataPermisssion() { var repo = RepositoryFacade.ResolveInstance <TestDataPermissionRepository>(); using (RepositoryFacade.TransactionScope(repo)) { var tuple = RBAC_InitRBAC(); using (DataPermissionFacade.EnableDataPermission(tuple.Item4)) { AccountContext.CurrentUser = tuple.Item1; Assert.IsTrue(repo.GetAll().Count == 1); } } }
public void RBAC_Role_GetOperationByRole() { var repo = RepositoryFacade.ResolveInstance <RoleRepository>(); using (RepositoryFacade.TransactionScope(repo)) { var tuple = RBAC_InitRBAC(); Assert.IsTrue( RepositoryFacade.ResolveInstance <ResourceOperationRepository>() .GetOperationByRoleList(new List <long> { tuple.Item2.Id }) .Count == 1); } }
/// <summary> /// 获取用户的组织列表或者及其下级组织列表 /// </summary> /// <param name="userId">用户Id</param> /// <param name="isIncludeChildGroup">是否包含下级</param> /// <returns></returns> protected virtual List <long> GetGroupListByUserId(long userId, bool isIncludeChildGroup) { List <long> groupIdList = new List <long>(); var groupRepository = RepositoryFacade.ResolveInstance <GroupRepository>(); var groupList = groupRepository.GetGroupByUserId(userId); if (isIncludeChildGroup) { groupIdList.AddRange(groupRepository.GetGroupAndLowerByGroupList(groupList)); } else { groupIdList.AddRange(groupList.Select(p => p.Id).Cast <long>()); } return(groupIdList); }
/// <summary> /// 获取用户的资源列表 /// </summary> /// <param name="userId">用户Id</param> /// <returns></returns> public virtual ResourceList GetResourceListByUserId(long userId) { RoleRepository roleRepository = RepositoryFacade.ResolveInstance <RoleRepository>(); var roleList = roleRepository.GetRoleByUserId(userId); var roleIdList = roleList.Select(r => r.Id).Cast <long>().ToList(); List <object> resourceIdList = new List <object>(); var resourceOperationRepository = RepositoryFacade.ResolveInstance <ResourceOperationRepository>(); var resourceOperationList = resourceOperationRepository.GetOperationByRoleList(roleIdList); foreach (var item in resourceOperationList) { if (!resourceIdList.Contains(item.ResourceId)) { resourceIdList.Add(item.ResourceId); } } return(RepositoryFacade.ResolveInstance <ResourceRepository>().GetByIdList(resourceIdList.ToArray())); }
public void RBAC_Role_SetRoleOperation() { var controller = DomainControllerFactory.Create <RoleController>(); var repo = RepositoryFacade.ResolveInstance <RoleOperationRepository>(); using (RepositoryFacade.TransactionScope(repo)) { var tuple = RBAC_InitRBAC(); var originId = repo.GetAll()[0].OperationId; var role = tuple.Item2; var resource = tuple.Item4; var delopId = Convert.ToInt64(resource.ResourceOperationList[1].Id); controller.SetRoleOperation(role.Id, new List <long> { delopId }); var savedId = repo.GetAll()[0].OperationId; Assert.AreNotEqual(originId, savedId); } }
/// <summary> /// 重载构造函数,初始化权限使用对象 /// </summary> /// <param name="permissionEntry">权限使用对象</param> protected PermissionBuilder(PermissionEntry permissionEntry) { if (permissionEntry == null) { _permissionEntry = new DefaultPermissionEntry(); } else { _permissionEntry = permissionEntry; } if (_groupRepository == null) { _groupRepository = RepositoryFacade.ResolveInstance <GroupRepository>(); } if (_userRepository == null) { _userRepository = RepositoryFacade.ResolveInstance <UserRepository>(); } }
public void RBAC_DataPermissionCu_rrentGroupAndLowerDataPermisssion() { var repo = RepositoryFacade.ResolveInstance <TestDataPermissionRepository>(); using (RepositoryFacade.TransactionScope(repo)) { var tuple = RBAC_InitRBAC(); var role = new Role { Name = "包含下级管理员", Code = "admin" }; RepositoryFacade.Save(role); var userRole = new UserRole { User = tuple.Item1, Role = role }; RepositoryFacade.Save(userRole); var dataPermission1 = new DataPermission { Resource = tuple.Item4, Role = role }; dataPermission1.SetBuilder(new CurrentGroupPermissionConstraintBuilder { IsIncludeChildGroup = true, GroupIdProperty = "GroupId" }); RepositoryFacade.Save(dataPermission1); var testDataPermission = new TestDataPermission(); testDataPermission.Group = tuple.Item3.TreeChildren[0] as Group; testDataPermission.Name = "test"; RepositoryFacade.Save(testDataPermission); using (DataPermissionFacade.EnableDataPermission(tuple.Item4)) { AccountContext.CurrentUser = tuple.Item1; Assert.IsTrue(repo.GetAll().Count == 2); } Assert.IsTrue(repo.GetAll().Count == 2); } }
/// <summary> /// 获取指定用户、资源的操作列表 /// </summary> /// <param name="userId">用户Id</param> /// <param name="resourceId">资源Id</param> /// <returns></returns> public virtual ResourceOperationList GetResourceOperation(long userId, long resourceId) { RoleRepository roleRepository = RepositoryFacade.ResolveInstance <RoleRepository>(); var roleList = roleRepository.GetRoleByUserId(userId); var roleIdList = roleList.Select(r => r.Id).Cast <long>().ToList(); var operationIdList = RepositoryFacade.ResolveInstance <ResourceOperationRepository>().GetOperationByRoleList(roleIdList).Select(o => (long)o.Id); var resourceOperationRepository = RepositoryFacade.ResolveInstance <ResourceOperationRepository>(); var resourceOperationList = resourceOperationRepository.GetByParentId(resourceId); var newOperationList = resourceOperationRepository.NewList(); var idList = operationIdList as long[] ?? operationIdList.ToArray(); foreach (var item in resourceOperationList) { if (idList.Any(id => id == item.Id)) { newOperationList.Add(item); } } return(newOperationList); }
/// <summary> /// 保存角色分配功能操作 /// 功能操作列表必须是当前角色所有的功能操作集合 /// </summary> /// <param name="roleId">角色Id</param> /// <param name="operationIdList">操作Id集合</param> public virtual void SetRoleOperation(long roleId, List <long> operationIdList) { RoleOperationRepository roleOperationRepository = RepositoryFacade.ResolveInstance <RoleOperationRepository>(); var roleOperationList = roleOperationRepository.GetByRoleIdList(new List <long> { roleId }).Concrete().ToList(); var changeRoleOpertaionList = roleOperationRepository.NewList(); //处理删除的操作 foreach (var item in roleOperationList) { if (operationIdList.All(id => id != item.OperationId)) { changeRoleOpertaionList.Add(item); item.PersistenceStatus = PersistenceStatus.Deleted; } } var addRole = new Role { Id = roleId }; //处理新增操作 foreach (var item in operationIdList) { if (roleOperationList.All(o => o.OperationId != item)) { RoleOperation roleOpertaion = new RoleOperation(); roleOpertaion.Role = addRole; roleOpertaion.Operation = new ResourceOperation() { Id = item }; roleOpertaion.PersistenceStatus = PersistenceStatus.New; changeRoleOpertaionList.Add(roleOpertaion); } } if (changeRoleOpertaionList.Count > 0) { roleOperationRepository.Save(changeRoleOpertaionList); } }
/// <summary> /// 获取当前组的所有菜单资源所对应的操作权限 /// </summary> /// <param name="groupID">用户组的主键</param> /// <returns>返回获取到的当前组每个资源所对应的操作权限的字典集合</returns> protected override IDictionary <long, IList <ResourceOperation> > GenerateOperationPermission(int groupID) { IDictionary <long, IList <ResourceOperation> > operations = new Dictionary <long, IList <ResourceOperation> >(); var resourceOperationList = RepositoryFacade.ResolveInstance <ResourceOperationRepository>().Extension <ResourceOperationRepositoryExtension>().GetResourceOperationByGroupID(groupID); foreach (ResourceOperation item in resourceOperationList) { IList <ResourceOperation> list = null; if (operations.TryGetValue(item.ResourceId, out list)) { list.Add(item); } else { list = new List <ResourceOperation>(); list.Add(item); operations.Add(item.ResourceId, list); } } return(operations); }
public void RBAC_UserRole_HasRoleTest() { this._controller = DomainControllerFactory.Create <UserRoleController>(); var userRoleRepository = RepositoryFacade.ResolveInstance <UserRoleRepository>(); var userRepository = RepositoryFacade.ResolveInstance <UserRepository>(); var roleRepository = RepositoryFacade.ResolveInstance <RoleRepository>(); using (RepositoryFacade.TransactionScope(userRepository)) { var user = new User { Id = 1, UserName = "******", RealName = "Test_001", Email = "*****@*****.**", PhoneNumber = "18666666666" }; var role = new Role { Id = 1, Code = Guid.NewGuid().ToString("N"), Description = "", Name = "管理员" }; userRepository.Save(user); roleRepository.Save(role); userRoleRepository.Save(new UserRole { User = user, Role = role }); var result1 = this._controller.HasRole(new User { Id = user.Id }, new Role { Id = role.Id }); var result2 = this._controller.HasRole(new User { Id = user.Id }, new Role { Id = role.Id + 1L }); Assert.IsTrue(result1); Assert.IsFalse(result2); } }
/// <summary> /// 查询用户的所有角色 /// </summary> /// <param name="user"></param> /// <returns></returns> public RoleList FindByUser(User user) { RoleRepository roleRepository = RepositoryFacade.ResolveInstance <RoleRepository>(); return(roleRepository.GetRoleByUserId(user.Id)); }
public UsersController(RepositoryFacade repositoryFacade) : base(repositoryFacade) { // }
/// <summary> /// 执行数据归档。 /// </summary> /// <param name="context">表示数据归档的上下文。</param> public void Archive(AggregationArchiveContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } _orignalDataDbSettingName = context.OrignalDataDbSettingName; _backUpDbSettingName = context.BackUpDbSettingName; var updatedTimeCondition = new PropertyMatch(EntityStampExtension.UpdatedTimeProperty, PropertyOperator.LessEqual, context.DateOfArchiving); bool needProgress = this.ProgressChanged != null; if (needProgress) { this.OnProgressChanged("-------------- 开始数据归档 --------------"); } using (StampContext.DisableAutoSetStamps()) { foreach (var item in context.ItemsToArchive) { var aggtRootType = item.AggregationRoot; var archiveType = item.ArchiveType; if (archiveType == ArchiveType.Copy) { throw new NotSupportedException("Copy 操作暂不支持。"); } var repository = RepositoryFacade.Find(aggtRootType); #region 查询本次需要归档的总数据行数。 long totalCount = 0; if (needProgress) { totalCount = repository.CountBy(new CommonQueryCriteria { updatedTimeCondition }); this.OnProgressChanged($"目前,共有 {totalCount} 个聚合根 {aggtRootType.FullName} 需要归档。"); } #endregion #region 构造一个查完整聚合的条件对象 CommonQueryCriteria //设置 EagerLoadOptions,加载整个聚合。 var criteria = new CommonQueryCriteria() { updatedTimeCondition }; criteria.PagingInfo = new PagingInfo(1, context.BatchSize); var eagerLoadOptions = new EagerLoadOptions(); EagerLoadAggregationRecur(eagerLoadOptions, repository.EntityMeta); if (repository.SupportTree) { eagerLoadOptions.LoadWithTreeChildren(); } criteria.EagerLoad = eagerLoadOptions; #endregion //逐页迁移历史数据表。 var currentProcess = 0; while (true) { //获取最新的一页的数据。 var entitiesToMigrate = repository.GetBy(criteria); var count = entitiesToMigrate.Count; if (count == 0) { break; } using (var tranOriginal = RF.TransactionScope(_orignalDataDbSettingName)) using (var tranBackup = RF.TransactionScope(_backUpDbSettingName)) { //迁移到历史表。 this.BackupToHistory(repository, entitiesToMigrate); //实体删除 this.DeleteOriginalData(repository, entitiesToMigrate); //备份完成,才能同时提交两个库的事务。 tranOriginal.Complete(); tranBackup.Complete(); } currentProcess += count; if (needProgress) { this.OnProgressChanged($" 处理进度", decimal.Round(currentProcess / totalCount * 100, 2)); } } } } if (needProgress) { this.OnProgressChanged("-------------- 结束数据归档 --------------"); } }
public PostsController(RepositoryFacade repositoryFacade) : base(repositoryFacade) { // }
/// <summary> /// 获取某个资源角色的数据权限列表 /// </summary> /// <param name="resourceId"></param> /// <param name="roles"></param> /// <returns></returns> private static DataPermissionList CollectDataPermissions(long resourceId, RoleList roles) { return(RepositoryFacade.ResolveInstance <DataPermissionRepository>() .GetDataPermissionList(resourceId, roles.Select(p => p.Id).Cast <long>().ToList())); }
public AuthController(RepositoryFacade repositoryFacade) : base(repositoryFacade) { // }
private Tuple <User, Role, Group, Resource> RBAC_InitRBAC() { var user = new User { UserName = "******" }; RepositoryFacade.Save(user); var role = new Role { Name = "管理员", Code = "admin" }; RepositoryFacade.Save(role); var userRole = new UserRole { User = user, Role = role }; RepositoryFacade.Save(userRole); var group = new Group { Name = "研发部", Code = "abc", TreeChildren = { new Group { Name = "测试组", Code = "def" } } }; RepositoryFacade.Save(group); var groupUser = new GroupUser { Group = group, User = user }; RepositoryFacade.Save(groupUser); var groupRole = new GroupRole { Group = group, Role = role }; RepositoryFacade.Save(groupRole); var resource = new Resource { Name = "待开明细", Code = "Transcation", Description = "Transcation" }.SetIsSupportDataPermission(true).SetResourceEntityType(typeof(TestDataPermission).FullName); var operation = new ResourceOperation { Name = "新增", Code = "Add" }; resource.ResourceOperationList.Add(operation); resource.ResourceOperationList.Add( new ResourceOperation { Name = "删除", Code = "Delete" } ); RepositoryFacade.Save(resource); RepositoryFacade.Save(new RoleOperation { Role = role, Operation = operation }); var dataPermission = new DataPermission { Resource = resource, Role = role }; dataPermission.SetBuilder(new CurrentGroupPermissionConstraintBuilder { IsIncludeChildGroup = false, GroupIdProperty = "GroupId" }); RepositoryFacade.Save(dataPermission); var testDataPermission = new TestDataPermission(); testDataPermission.Group = group; testDataPermission.Name = "test"; RepositoryFacade.Save(testDataPermission); return(Tuple.Create(user, role, group, resource)); }