Ejemplo n.º 1
0
        /// <summary>
        /// 根据课程 Id 处理授权分配清单
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <IActionResult> AuthorizationItemsListSelector(Guid id, AuthorizationTypeEnum authorizationType)
        {
            var boVM = await _boVMService.GetCourseAuthorizationSelectorVMAsync(id, true, authorizationType);

            ViewData["CourseId"]     = boVM.CourseID;
            ViewData["ModuleName"]   = "课程管理";
            ViewData["FunctionName"] = "课程访问授权:" + boVM.CourseName;

            return(PartialView("_AuthorizationItemsListSelector", boVM));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 根据角色和授权类型获取课程集合
        /// </summary>
        /// <param name="roleId"></param>
        /// <returns></returns>
        public async Task <List <CoursesVM> > GetboVMCollectionByRoleAsyn(string roleName, AuthorizationTypeEnum authorizationType)
        {
            var courseWithRolesItems = await _courseWithRolesRepository.GetAllIncludingAsyn(x => x.Course, y => y.ApplicationRole);

            var boCollection = from item in courseWithRolesItems
                               where item.ApplicationRole.Name == roleName && item.AuthorizationTypeEnum == authorizationType
                               select item.Course;

            var boVMCollection = new List <CoursesVM>();
            var counter        = 0;

            foreach (var bo in boCollection.OrderBy(x => x.SortCode))
            {
                var boVM = GetVM(bo.Id);
                boVM.OrderNumber = (++counter).ToString();
                boVMCollection.Add(boVM);
            }
            return(boVMCollection);
        }
 public IAuthorizationBuilder AuthorizationDefault(AuthorizationTypeEnum authorizationDefault)
 {
     AuthorizationDefaultValue = authorizationDefault;
     return(this);
 }
 public IHttpFunctionBuilderMetadataBuilder HttpFunction <TCommand>(AuthorizationTypeEnum authorizationType) where TCommand : ICommand
 {
     return(_httpFunctionBuilder.HttpFunction <TCommand>(authorizationType));
 }
Ejemplo n.º 5
0
 public Task <string> GetStringAsync(string uri, string authorizationToken = null, AuthorizationTypeEnum authorizationType = AuthorizationTypeEnum.Bearer, IDictionary <string, string> headers = null, CancellationToken cancellationToken = default)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 6
0
 public Task <HttpResponseMessage> PutAsync <T>(string uri, T data, string authorizationToken = null, AuthorizationTypeEnum authorizationType = AuthorizationTypeEnum.Bearer, IDictionary <string, string> headers = null, CancellationToken cancellationToken = default)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 7
0
        /// <summary>
        /// 返回全部课程视图对象集合
        /// </summary>
        /// <returns></returns>
        public async Task <List <CoursesVM> > GetCoursesVMCollectionAsyn(string userName, AuthorizationTypeEnum authorizationType)
        {
            var boVMCollection = new List <CoursesVM>();
            var courseService  = new CourseVMService(_userManager, _roleManager, _employeeRepository, _studentRepository, _departmentRepository, _gradeAndClassRepository, _courseWithRolesRepository, _courseWithUsersRepository, _courseRepository);

            boVMCollection = await courseService.GetboVMCollectionWithUser(userName, authorizationType);

            return(boVMCollection);
        }
Ejemplo n.º 8
0
        public async Task <CourseAuthorizationSelectorVM> GetCourseAuthorizationSelectorVMAsync(Guid id, bool getTobeItems, AuthorizationTypeEnum authorizationType)
        {
            var course = await _boRepository.GetSingleAsyn(id);

            var authorizedCollection     = new List <CourseAuthorizationVM>();
            var authorizedRoleCollection = new List <ApplicationRole>();
            var authorizedUserCollection = new List <ApplicationUser>();

            // 授权角色组
            var courseWithRoleCollection = await _courseWithRolesRepository.GetAllIncludingAsyn(x => x.ApplicationRole, y => y.Course);

            foreach (var item in courseWithRoleCollection.Where(x => x.Course.Id == id && x.AuthorizationTypeEnum == authorizationType))
            {
                var courseAuthorizationViewModel = new CourseAuthorizationVM();
                courseAuthorizationViewModel.Id          = item.ApplicationRole.Id;
                courseAuthorizationViewModel.Name        = item.ApplicationRole.Name;
                courseAuthorizationViewModel.DisplayName = item.ApplicationRole.DisplayName;
                courseAuthorizationViewModel.SortCode    = item.ApplicationRole.SortCode;
                courseAuthorizationViewModel.IsUser      = false;
                authorizedRoleCollection.Add(item.ApplicationRole);
                authorizedCollection.Add(courseAuthorizationViewModel);
            }

            // 授权用户
            var courseWithUserCollection = await _courseWithUsersRepository.GetAllIncludingAsyn(x => x.ApplicationUser, y => y.Course);

            foreach (var item in courseWithUserCollection.Where(x => x.Course.Id == id && x.AuthorizationTypeEnum == authorizationType))
            {
                var courseAuthorizationViewModel = new CourseAuthorizationVM();
                courseAuthorizationViewModel.Id          = item.ApplicationUser.Id;
                courseAuthorizationViewModel.Name        = item.ApplicationUser.UserName;
                courseAuthorizationViewModel.DisplayName = item.ApplicationUser.ChineseFullName;
                courseAuthorizationViewModel.SortCode    = "";
                courseAuthorizationViewModel.IsUser      = true;
                courseAuthorizationViewModel.Description = await _GetCourseAuthorizationVMDescriptionByUser(item.ApplicationUser);

                authorizedUserCollection.Add(item.ApplicationUser);
                authorizedCollection.Add(courseAuthorizationViewModel);
            }

            var courseAuthorizationSelectorVM = new CourseAuthorizationSelectorVM();

            courseAuthorizationSelectorVM.CourseID   = course.Id;
            courseAuthorizationSelectorVM.CourseName = course.Name;

            // 合成
            int count = 0;

            foreach (var item in authorizedCollection.OrderBy(x => x.Name))
            {
                item.OrderNumber = (++count).ToString();
                courseAuthorizationSelectorVM.BeAuthorizationedItemCollection.Add(item);
            }

            if (getTobeItems)
            {
                var tobeAuthorizedCollection = GetToBeAuthorizeCollection(authorizedRoleCollection, authorizedUserCollection);
                foreach (var item in tobeAuthorizedCollection.OrderBy(x => x.Name))
                {
                    courseAuthorizationSelectorVM.ToBeAuthorizationedItemCollection.Add(item);
                }
            }

            // 附带权限清单
            courseAuthorizationSelectorVM.AuthorizationType = authorizationType;
            courseAuthorizationSelectorVM.AuthorizationTypeForCourseCollection = GetAuthorizationTypeForCourseCollection();
            foreach (var item in courseAuthorizationSelectorVM.AuthorizationTypeForCourseCollection)
            {
                if (item.AuthorizationType == authorizationType)
                {
                    item.IsActive = true;
                }
            }

            return(courseAuthorizationSelectorVM);
        }
Ejemplo n.º 9
0
 public AuthorizationProfile(AuthorizationTypeEnum authorizationType, AuthorizationLimitsEnum authorizationLimits)
 {
     this.AuthorizationLimits = authorizationLimits;
     this.AuthorizationType   = authorizationType;
 }
 public IHttpFunctionConfigurationBuilder <TCommand> HttpFunction <TCommand>(AuthorizationTypeEnum authorizationType,
                                                                             params HttpMethod[] method) where TCommand : ICommand
 {
     return(BuildHttpFunction <TCommand>(null, authorizationType, method));
 }
Ejemplo n.º 11
0
 public IHttpFunctionBuilderMetadataBuilder HttpFunction <TCommand>(string route,
                                                                    AuthorizationTypeEnum authorizationType, params HttpMethod[] method) where TCommand : ICommand
 {
     return(BuildHttpFunction <TCommand>(route, authorizationType, method));
 }
Ejemplo n.º 12
0
 public IHttpFunctionBuilderMetadataBuilder HttpFunction <TCommand>(AuthorizationTypeEnum authorizationType) where TCommand : ICommand
 {
     return(BuildHttpFunction <TCommand>(null, authorizationType, DefaultMethod));
 }
 public IHttpFunctionBuilderMetadataBuilder HttpFunction <TCommand>(AuthorizationTypeEnum authorizationType,
                                                                    params HttpMethod[] method) where TCommand : ICommand
 {
     return(_httpFunctionBuilder.HttpFunction <TCommand>(authorizationType, method));
 }
Ejemplo n.º 14
0
        public async Task <List <CoursesVM> > GetboVMCollectionByUserAsyn(string userName, AuthorizationTypeEnum authorizationType)
        {
            var boVMCollection = new List <CoursesVM>();

            var user = await _userManager.FindByNameAsync(userName);

            var userRoles = await _userManager.GetRolesAsync(user);

            foreach (var item in userRoles)
            {
                var tempBoCollection = await GetboVMCollectionByRoleAsyn(item, authorizationType);

                foreach (var courseItem in tempBoCollection)
                {
                    if (boVMCollection.FirstOrDefault(x => x.Id == courseItem.Id) == null)
                    {
                        courseItem.IsCreatedByMe = false;
                        boVMCollection.Add(courseItem);
                    }
                }
            }

            return(boVMCollection);
        }
Ejemplo n.º 15
0
 public IHttpFunctionConfigurationBuilder <TCommand> HttpFunction <TCommand>(AuthorizationTypeEnum authorizationType)
 {
     return(BuildHttpFunction <TCommand>(null, authorizationType, DefaultMethod));
 }
Ejemplo n.º 16
0
        public async Task <List <CoursesVM> > GetboVMCollectionWithUser(string userName, AuthorizationTypeEnum authorizationType)
        {
            var boVMCollection = await GetboVMCollectionByCreatorAsyn(userName);

            var tempCollection = await GetboVMCollectionByUserAsyn(userName, authorizationType);

            foreach (var item in tempCollection)
            {
                if (boVMCollection.FirstOrDefault(x => x.Id == item.Id) == null)
                {
                    boVMCollection.Add(item);
                }
            }

            return(boVMCollection);
        }
 public IHttpFunctionConfigurationBuilder <TCommand> HttpFunction <TCommand, TClaimsPrincipalAuthorization>(
     AuthorizationTypeEnum authorizationType, params HttpMethod[] method) where TCommand : ICommand where TClaimsPrincipalAuthorization : IClaimsPrincipalAuthorization
 {
     return(_httpFunctionBuilder.HttpFunction <TCommand, TClaimsPrincipalAuthorization>(authorizationType, method));
 }
Ejemplo n.º 18
0
        /// <summary>
        /// 根据前端权限配置的请求参数,重新配置分配清单
        /// </summary>
        /// <param name="id"></param>
        /// <param name="itemId"></param>
        /// <param name="isUser"></param>
        /// <param name="isAdd"></param>
        /// <returns></returns>
        public async Task SetAuthorizedAsync(Guid id, Guid itemId, bool isUser, bool isAdd, AuthorizationTypeEnum authorizationType)
        {
            var course = await _boRepository.GetSingleAsyn(id);

            if (isUser)
            {
                var user = await _userManager.FindByIdAsync(itemId.ToString());

                if (isAdd)
                {
                    var addUserItem = new CourseWithUsers()
                    {
                        ApplicationUser = user, Course = course, AuthorizationTypeEnum = authorizationType
                    };
                    await _courseWithUsersRepository.AddOrEditAndSaveAsyn(addUserItem);
                }
                else
                {
                    var removeUserItem = await _courseWithUsersRepository.GetSingleAsyn(x => x.Course.Id == id && x.ApplicationUser.Id == user.Id && x.AuthorizationTypeEnum == authorizationType);

                    if (removeUserItem != null)
                    {
                        await _courseWithUsersRepository.DeleteAndSaveAsyn(removeUserItem.Id);
                    }
                }
            }
            else
            {
                var role = await _roleManager.FindByIdAsync(itemId.ToString());

                if (isAdd)
                {
                    var addRoleItem = new CourseWithRoles()
                    {
                        ApplicationRole = role, Course = course, AuthorizationTypeEnum = authorizationType
                    };
                    await _courseWithRolesRepository.AddOrEditAndSaveAsyn(addRoleItem);
                }
                else
                {
                    var removeRoleItem = await _courseWithRolesRepository.GetSingleAsyn(x => x.Course.Id == id && x.ApplicationRole.Id == role.Id && x.AuthorizationTypeEnum == authorizationType);

                    if (removeRoleItem != null)
                    {
                        await _courseWithRolesRepository.DeleteAndSaveAsyn(removeRoleItem.Id);
                    }
                }
            }
        }
 public IHttpFunctionConfigurationBuilder <TCommand> HttpFunction <TCommand>(AuthorizationTypeEnum authorizationType,
                                                                             params HttpMethod[] method)
 {
     return(_httpFunctionBuilder.HttpFunction <TCommand>(authorizationType, method));
 }
Ejemplo n.º 20
0
 public Task <HttpResponseMessage> PostAsync <T>(string uri, T data, string authorizationToken = null, AuthorizationTypeEnum authorizationType = AuthorizationTypeEnum.Bearer, IDictionary <string, string> headers = null, CancellationToken cancellationToken = default)
 {
     return(DoPostPutAsync(HttpMethod.Post, uri, data, authorizationToken, authorizationType, headers, cancellationToken));
 }
 public IHttpFunctionConfigurationBuilder <TCommand> HttpFunction <TCommand>(AuthorizationTypeEnum authorizationType) where TCommand : ICommand
 {
     return(_httpFunctionBuilder.HttpFunction <TCommand>(authorizationType));
 }
Ejemplo n.º 22
0
        private async Task <HttpResponseMessage> DoPostPutAsync <T>(HttpMethod method, string uri, T item, string authorizationToken = null, AuthorizationTypeEnum authorizationType = AuthorizationTypeEnum.Bearer, IDictionary <string, string> dictionary = null, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (method != HttpMethod.Post && method != HttpMethod.Put)
            {
                throw new ArgumentException("Value must be either post or put.", nameof(method));
            }

            uri = await ResolveUri(uri);

            var origin = GetOriginFromUri(uri);

            return(await HttpInvokerAsync(origin, async (context, ctx) =>
            {
                using (var tracer = new Hummingbird.Extensions.Tracing.Tracer($"HTTP {method.Method.ToUpper()}"))
                {
                    tracer.SetComponent(_compomentName);
                    tracer.SetTag("http.url", uri);
                    tracer.SetTag("http.method", method.Method.ToUpper());

                    var requestMessage = new HttpRequestMessage(method, uri);
                    var requestContent = JsonConvert.SerializeObject(item);

                    #region LOG:记录请求
                    if (dictionary != null && dictionary.ContainsKey("x-masking") && (dictionary["x-masking"] == "all" || dictionary["x-masking"] == "request"))
                    {
                        //日志脱敏
                    }
                    else
                    {
                        _logger.LogInformation("Http Request Executing:{requestContent}", requestContent);
                    }
                    #endregion

                    SetAuthorizationHeader(requestMessage);

                    requestMessage.Content = new StringContent(requestContent, System.Text.Encoding.UTF8, "application/json");

                    if (authorizationToken != null)
                    {
                        requestMessage.Headers.Authorization = new AuthenticationHeaderValue(authorizationMethod, authorizationToken);
                    }

                    if (dictionary != null)
                    {
                        foreach (var key in dictionary.Keys)
                        {
                            requestMessage.Headers.Add(key, dictionary[key]);
                        }
                    }

                    var response = await _client.SendAsync(requestMessage, ctx);
                    var responseContent = await response.Content.ReadAsStringAsync();

                    #region LOG:记录返回
                    tracer.SetTag("http.status_code", (int)response.StatusCode);

                    if (dictionary != null && dictionary.ContainsKey("x-masking") && (dictionary["x-masking"] == "all" || dictionary["x-masking"] == "response"))
                    {
                        //日志脱敏不记录
                    }
                    else
                    {
                        _logger.LogInformation("Http Request Executed:{responseContent}", responseContent);
                    }
                    #endregion

                    if (response.StatusCode == HttpStatusCode.InternalServerError)
                    {
                        throw new HttpRequestException(response.ReasonPhrase);
                    }

                    return response;
                }
            }, cancellationToken));
        }
 public IHttpFunctionConfigurationBuilder <TCommand> HttpFunction <TCommand>(string route, AuthorizationTypeEnum authorizationType,
                                                                             params HttpMethod[] method) where TCommand : ICommand
 {
     return(_httpFunctionBuilder.HttpFunction <TCommand>(route, authorizationType, method));
 }
Ejemplo n.º 24
0
        /// <summary>
        /// 移除授权元素
        /// </summary>
        /// <param name="id"></param>
        /// <param name="itemId"></param>
        /// <param name="isUser"></param>
        /// <param name="isAdd"></param>
        /// <returns></returns>
        public async Task <IActionResult> RemoveItemFromAuthorization(Guid id, Guid itemId, bool isUser, bool isAdd, AuthorizationTypeEnum authorizationType)
        {
            await _boVMService.SetAuthorizedAsync(id, itemId, isUser, isAdd, authorizationType);

            var boVM = await _boVMService.GetCourseAuthorizationSelectorVMAsync(id, true, authorizationType);

            ViewData["CourseId"]     = boVM.CourseID;
            ViewData["ModuleName"]   = "课程管理";
            ViewData["FunctionName"] = "课程访问授权:" + boVM.CourseName;

            return(PartialView("_AuthorizationItemsList", boVM));
        }
Ejemplo n.º 25
0
 public IHttpFunctionConfigurationBuilder <TCommand> HttpFunction <TCommand, TClaimsPrincipalAuthorization>(
     AuthorizationTypeEnum authorizationType) where TCommand : ICommand where TClaimsPrincipalAuthorization : IClaimsPrincipalAuthorization
 {
     return(BuildHttpFunction <TCommand, TClaimsPrincipalAuthorization>(null, authorizationType, DefaultMethod));
 }