コード例 #1
0
        private async Task <List <ApplicationPermissionModel> > ConvertToModel(List <RolePermission> permissionList, List <ApplicationPermissionModel> apList, CancellationToken cancellationToken)
        {
            //TODO
            if (permissionList.Count() != 0)
            {
                //获取首个权限项的详情
                var permission = await _permissionItemManager.FindByIdAsync(permissionList[0].PermissionId, cancellationToken);

                if (permission != null)
                {
                    var model = new ApplicationPermissionModel();
                    model.ApplicationId = permission.ApplicationId;
                    //model.ApplicationName = (await _applicationManager.FindByIdAsync(permission.ApplicationId, cancellationToken)).DisplayName;
                    model.Permissions = new List <PermissionModel>();

                    //获取该权限项所在应用下的所有权限项
                    var array = await _permissionItemManager.FindByApplicationAsync(permission.ApplicationId, cancellationToken);

                    for (int i = permissionList.Count - 1; i >= 0; i--)
                    {
                        var r = array.Where(a => a.Id == permissionList[i].PermissionId).FirstOrDefault();
                        if (r != null)
                        {
                            var permissionOrganizations = await _permissionOrganizationManager.FindByIdAsync(permissionList[i].OrganizationScope, cancellationToken);

                            var pmodel = new PermissionModel()
                            {
                                PermissionId   = r.Id,
                                PermissionName = r.Name,
                                Organizations  = (from a in permissionOrganizations select new OrganizationScopeModel()
                                {
                                    OrganizationId = a.OrganizationId
                                }).ToList()
                            };
                            model.Permissions.Add(pmodel);
                            permissionList.Remove(permissionList[i]);
                        }
                    }
                    apList.Add(model);
                    await ConvertToModel(permissionList, apList, cancellationToken);
                }
                return(apList);
            }
            return(new List <ApplicationPermissionModel>());
        }
コード例 #2
0
        public async Task <ResponseMessage <List <PermissionItem> > > GetPermissionItemList(string userId, [FromRoute] string id)
        {
            ResponseMessage <List <PermissionItem> > response = new ResponseMessage <List <PermissionItem> >();
            //if (!await _permissionExpansionManager.HavePermission(userId, "PermissionItemRetrieve"))
            //{
            //    response.Code = ResponseCodeDefines.NotAllow;
            //    return response;
            //}
            var permissionItem = await _permissionItemManager.FindByApplicationAsync(id, HttpContext.RequestAborted);

            response.Extension = permissionItem;
            if (response.Extension == null)
            {
                response.Code = ResponseCodeDefines.NotFound;
                return(response);
            }
            return(response);
        }
コード例 #3
0
        public async Task <ResponseMessage> Delete(string userId, [FromRoute] string id)
        {
            ResponseMessage response = new ResponseMessage();

            if (!await _permissionExpansionManager.HavePermission(userId, "ApplicationDelete"))
            {
                response.Code = ResponseCodeDefines.NotAllow;
                return(response);
            }
            var applicationIds = await _roleApplicationManager.FindApplicationIdsByUserIdAsync(userId, HttpContext.RequestAborted);

            if (!applicationIds.Contains(id))
            {
                response.Code = ResponseCodeDefines.NotAllow;
                return(response);
            }
            var application = await _applicationManager.FindByIdAsync(id, HttpContext.RequestAborted);

            if (application == null)
            {
                response.Code    = ResponseCodeDefines.NotFound;
                response.Message = "对象不存在";
                return(response);
            }
            await _applicationManager.DeleteAsync(application, HttpContext.RequestAborted);

            var permissionItems = await _permissionItemManager.FindByApplicationAsync(id, CancellationToken.None);

            var permissionItemIds = permissionItems.Select(a => a.Id).ToList();
            await _permissionExpansionManager.RemovePermissionsAsync(permissionItemIds);

            await _permissionOrganizationManager.DeleteByPermissionIdsAsync(permissionItemIds, CancellationToken.None);

            await _rolePermissionManager.DeleteByPermissionItemIdsAsync(permissionItemIds, CancellationToken.None);

            await _permissionItemManager.DeleteListAsync(permissionItems, CancellationToken.None);

            return(response);
        }