Exemple #1
0
        public Task <bool> SetRole(string organizationUnitId, params string[] roleIds)
        {
            var all = _organizationUnitRoleRepository.GetAll().Where(u => u.OrganizationUnitId == organizationUnitId).ToList();

            if (all.Count > 0 && roleIds.Length >= 0)
            {
                var remove = all.Where(u => !roleIds.Contains(u.RoleId)).ToList();
                if (remove.Count > 0)
                {
                    foreach (var userRole in remove)
                    {
                        _organizationUnitRoleRepository.Delete(userRole);
                    }
                }
            }

            foreach (var roleId in roleIds)
            {
                if (all.Exists(u => u.RoleId == roleId))
                {
                    continue;
                }
                OrganizationUnitRole userRole = new OrganizationUnitRole()
                {
                    RoleId             = roleId,
                    OrganizationUnitId = organizationUnitId
                };
                _organizationUnitRoleRepository.Insert(userRole);
            }
            return(Task.FromResult(true));
        }
        /// <summary>
        /// 获取该用户下的所有权限
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public List <PermissionInfo> GetAllPermissions(string userId)
        {
            var roles             = _userRoleRepository.GetAll().Where(u => u.UserId == userId).Select(u => u.RoleId).ToList();
            var organizationUnits = _organizationUnitUserRepository.GetAll().Where(u => u.UserId == userId).Select(u => u.OrganizationUnitId).ToList();
            var oroles            = _organizationUnitRoleRepository.GetAll().Where(u => organizationUnits.Contains(u.OrganizationUnitId))
                                    .Select(r => r.RoleId).ToList();

            if (oroles.Count > 0)
            {
                roles.AddRange(oroles);
            }
            var all             = _permissionRoleUserOrganizationUnit.GetAll().Where(u => u.UserId == userId || roles.Contains(u.RoleId) || organizationUnits.Contains(u.OrganizationUnitId)).Select(r => r.PermissionId).ToList();
            var permissionInfos = _permissionInfoRepository.GetAll().Where(u => all.Contains(u.Id)).ToList();

            return(permissionInfos);
        }