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