public static IList <PermissionNode> BuildPermissionNodes(IList <PermissionModel> permissonModels) { List <PermissionNode> permissionNodeList = new List <PermissionNode>(); foreach (PermissionModel permissionModel1 in permissonModels.Where <PermissionModel>((Func <PermissionModel, bool>)(m => !m.ParentId.HasValue))) { PermissionModel tm = permissionModel1; PermissionNode permissionNode = new PermissionNode(); permissionNode.Code = tm.PermissionCode; permissionNode.Text = tm.PermissionName; foreach (PermissionModel permissionModel2 in permissonModels.Where <PermissionModel>((Func <PermissionModel, bool>)(m => { int?parentId = m.ParentId; int permissionId = tm.PermissionId; if (parentId.GetValueOrDefault() != permissionId) { return(false); } return(parentId.HasValue); })).ToList <PermissionModel>()) { permissionNode.Children.Add(new PermissionNode() { Code = permissionModel2.PermissionCode, Text = permissionModel2.PermissionName }); } permissionNodeList.Add(permissionNode); } return((IList <PermissionNode>)permissionNodeList); }
private List <PermissionNode> BuildUserPermissionNodes(IList <PermissionNode> permissionNodes) { List <PermissionNode> permissionNodeList1 = new List <PermissionNode>(); foreach (PermissionNode permissionNode1 in (IEnumerable <PermissionNode>)permissionNodes) { List <PermissionNode> permissionNodeList2 = this.BuildUserPermissionNodes(permissionNode1.Children); if (permissionNodeList2.Count > 0 || string.IsNullOrEmpty(permissionNode1.Code) || this.PermissionCodes.Contains(permissionNode1.Code)) { PermissionNode permissionNode2 = new PermissionNode() { Text = permissionNode1.Text, Code = permissionNode1.Code, Children = (IList <PermissionNode>)permissionNodeList2 }; permissionNodeList1.Add(permissionNode2); } } return(permissionNodeList1); }
public List <PermissionNode> GetPermissionNodesAsync() { return(this.BuildUserPermissionNodes(PermissionNode.BuildPermissionNodes((LocalApi.Execute(new PermissionListRequest())).Permissions))); }