private int FillUserMenuItems(Guid? userId, IList<MenuItemDefinition> menuItemDefinitions, IList<UserMenuItem> userMenuItems) { var addedMenuItemCount = 0; foreach (var menuItemDefinition in menuItemDefinitions) { if (menuItemDefinition.RequiresAuthentication && !userId.HasValue) { continue; } if (!string.IsNullOrEmpty(menuItemDefinition.RequiredPermissionName) && (!userId.HasValue || !_permissionManager.IsGranted(userId.Value, menuItemDefinition.RequiredPermissionName))) { continue; } var userMenuItem = new UserMenuItem(menuItemDefinition); if (menuItemDefinition.IsLeaf || FillUserMenuItems(userId, menuItemDefinition.Items, userMenuItem.Items) > 0) { userMenuItems.Add(userMenuItem); ++addedMenuItemCount; } } return addedMenuItemCount; }
private async Task<int> FillUserMenuItems(long? userId, IList<MenuItemDefinition> menuItemDefinitions, IList<UserMenuItem> userMenuItems) { var addedMenuItemCount = 0; foreach (var menuItemDefinition in menuItemDefinitions) { if (menuItemDefinition.RequiresAuthentication && !userId.HasValue) { continue; } if (!string.IsNullOrEmpty(menuItemDefinition.RequiredPermissionName) && (!userId.HasValue || !(await PermissionChecker.IsGrantedAsync(userId.Value, menuItemDefinition.RequiredPermissionName)))) { continue; } if (menuItemDefinition.FeatureDependency != null && !(await menuItemDefinition.FeatureDependency.IsSatisfiedAsync(_featureDependencyContext))) { continue; } var userMenuItem = new UserMenuItem(menuItemDefinition); if (menuItemDefinition.IsLeaf || (await FillUserMenuItems(userId, menuItemDefinition.Items, userMenuItem.Items)) > 0) { userMenuItems.Add(userMenuItem); ++addedMenuItemCount; } } return addedMenuItemCount; }
public UserNavigationNode(UserMenuItem userMenuItem) { DisplayName = userMenuItem.DisplayName; CustomData = userMenuItem.CustomData; Name = userMenuItem.Name; Icon = userMenuItem.Icon; Order = userMenuItem.Order; Url = userMenuItem.Url; }
public UserNavigationNode Convert(UserMenuItem menu) { var node = new UserNavigationNode { DisplayName = menu.DisplayName, CustomData = menu.CustomData, Name = menu.Name, Icon = menu.Icon, Order = menu.Order, Url = menu.Url }; return node; }
public string CalculateMenuUrl(string applicationPath, UserMenuItem menuItem) { if (string.IsNullOrEmpty(menuItem.Url)) { return applicationPath; } if (UrlHelper.IsRooted(menuItem.Url)) { return menuItem.Url; } return applicationPath + menuItem.Url; }
/// <summary> /// 填充用户菜单项 /// </summary> /// <param name="user">用户表示</param> /// <param name="menuItemDefinitions">菜单项集合</param> /// <param name="userMenuItems">用户菜单项</param> /// <returns></returns> private async Task <int> FillUserMenuItems(UserIdentifier user, IList <MenuItemDefinition> menuItemDefinitions, IList <UserMenuItem> userMenuItems) { //TODO: Can be optimized by re-using FeatureDependencyContext. var addedMenuItemCount = 0; using (var featureDependencyContext = _iocResolver.ResolveAsDisposable <FeatureDependencyContext>()) { featureDependencyContext.Object.TenantId = user == null ? null : user.TenantId; foreach (var menuItemDefinition in menuItemDefinitions) { if (menuItemDefinition.RequiresAuthentication && user == null) { continue; } if (!string.IsNullOrEmpty(menuItemDefinition.RequiredPermissionName) && (user == null || !(await PermissionChecker.IsGrantedAsync(user, menuItemDefinition.RequiredPermissionName)))) { continue; } if (menuItemDefinition.FeatureDependency != null && (AbpSession.MultiTenancySide == MultiTenancySides.Tenant || (user != null && user.TenantId != null)) && !(await menuItemDefinition.FeatureDependency.IsSatisfiedAsync(featureDependencyContext.Object))) { continue; } var userMenuItem = new UserMenuItem(menuItemDefinition, _localizationContext); if (menuItemDefinition.IsLeaf || (await FillUserMenuItems(user, menuItemDefinition.Items, userMenuItem.Items)) > 0) { userMenuItems.Add(userMenuItem); ++addedMenuItemCount; } } } return(addedMenuItemCount); }
private async Task <int> FillUserMenuItems(int?tenantId, long?userId, IList <MenuItemDefinition> menuItemDefinitions, IList <UserMenuItem> userMenuItems) { var addedMenuItemCount = 0; using (var featureDependencyContext = _iocResolver.ResolveAsDisposable <FeatureDependencyContext>()) { featureDependencyContext.Object.TenantId = tenantId; foreach (var menuItemDefinition in menuItemDefinitions) { if (menuItemDefinition.RequiresAuthentication && !userId.HasValue) { continue; } if (!string.IsNullOrEmpty(menuItemDefinition.RequiredPermissionName) && (!userId.HasValue || !(await PermissionChecker.IsGrantedAsync(userId.Value, menuItemDefinition.RequiredPermissionName)))) { continue; } if (menuItemDefinition.FeatureDependency != null && (AbpSession.MultiTenancySide == MultiTenancySides.Tenant || tenantId.HasValue) && !(await menuItemDefinition.FeatureDependency.IsSatisfiedAsync(featureDependencyContext.Object))) { continue; } var userMenuItem = new UserMenuItem(menuItemDefinition, _localizationContext); if (menuItemDefinition.IsLeaf || (await FillUserMenuItems(tenantId, userId, menuItemDefinition.Items, userMenuItem.Items)) > 0) { userMenuItems.Add(userMenuItem); ++addedMenuItemCount; } } } return(addedMenuItemCount); }
private static void AppendMenuItem(int indentLength, StringBuilder sb, UserMenuItem menuItem) { sb.AppendLine("{"); sb.AppendLine(new string(' ', indentLength + 4) + "name: '" + menuItem.Name + "',"); if (!string.IsNullOrEmpty(menuItem.Icon)) { sb.AppendLine(new string(' ', indentLength + 4) + "icon: '" + menuItem.Icon.Replace("'", @"\'") + "',"); } if (!string.IsNullOrEmpty(menuItem.Url)) { sb.AppendLine(new string(' ', indentLength + 4) + "url: '" + menuItem.Url.Replace("'", @"\'") + "',"); } if (menuItem.DisplayName != null) { sb.AppendLine(new string(' ', indentLength + 4) + "displayName: '" + menuItem.DisplayName.Replace("'", @"\'") + "',"); } sb.Append(new string(' ', indentLength + 4) + "items: ["); for (int i = 0; i < menuItem.Items.Count; i++) { AppendMenuItem(24, sb, menuItem.Items[i]); if (menuItem.Items.Count - 1 > i) { sb.Append(" , "); } } sb.AppendLine("]"); sb.Append(new string(' ', indentLength) + "}"); }
/// <summary> /// 填充用户菜单项 /// </summary> /// <param name="tenantId">租户Id</param> /// <param name="userId">用户Id或null(表示匿名用户)</param> /// <param name="menuItemDefinitions">菜单项定义集合</param> /// <param name="userMenuItems">用户菜单项集合</param> /// <returns></returns> private async Task<int> FillUserMenuItems(int? tenantId, long? userId, IList<MenuItemDefinition> menuItemDefinitions, IList<UserMenuItem> userMenuItems) { var addedMenuItemCount = 0; using (var featureDependencyContext = _iocResolver.ResolveAsDisposable<FeatureDependencyContext>()) { featureDependencyContext.Object.TenantId = tenantId; foreach (var menuItemDefinition in menuItemDefinitions) { if (menuItemDefinition.RequiresAuthentication && !userId.HasValue) { continue; } if (!string.IsNullOrEmpty(menuItemDefinition.RequiredPermissionName) && (!userId.HasValue || !(await PermissionChecker.IsGrantedAsync(userId.Value, menuItemDefinition.RequiredPermissionName)))) { continue; } if (menuItemDefinition.FeatureDependency != null && AbpSession.MultiTenancySide == MultiTenancySides.Tenant && !(await menuItemDefinition.FeatureDependency.IsSatisfiedAsync(featureDependencyContext.Object))) { continue; } var userMenuItem = new UserMenuItem(menuItemDefinition, _localizationContext); //if (menuItemDefinition.IsLeaf || (await FillUserMenuItems(userId, menuItemDefinition.Items, userMenuItem.Items)) > 0) //{ // userMenuItems.Add(userMenuItem); // ++addedMenuItemCount; //} if (menuItemDefinition.IsLeaf || (await FillUserMenuItems(tenantId, userId, menuItemDefinition.Items, userMenuItem.Items)) > 0) { userMenuItems.Add(userMenuItem); ++addedMenuItemCount; } } } return addedMenuItemCount; }
private async Task<int> FillUserMenuItems(UserIdentifier user, IList<MenuItemDefinition> menuItemDefinitions, IList<UserMenuItem> userMenuItems) { //TODO: Can be optimized by re-using FeatureDependencyContext. var addedMenuItemCount = 0; using (var featureDependencyContext = _iocResolver.ResolveAsDisposable<FeatureDependencyContext>()) { featureDependencyContext.Object.TenantId = user == null ? null : user.TenantId; foreach (var menuItemDefinition in menuItemDefinitions) { if (menuItemDefinition.RequiresAuthentication && user == null) { continue; } if (!string.IsNullOrEmpty(menuItemDefinition.RequiredPermissionName) && (user == null || !(await PermissionChecker.IsGrantedAsync(user, menuItemDefinition.RequiredPermissionName)))) { continue; } if (menuItemDefinition.FeatureDependency != null && (AbpSession.MultiTenancySide == MultiTenancySides.Tenant || (user != null && user.TenantId != null)) && !(await menuItemDefinition.FeatureDependency.IsSatisfiedAsync(featureDependencyContext.Object))) { continue; } var userMenuItem = new UserMenuItem(menuItemDefinition, _localizationContext); if (menuItemDefinition.IsLeaf || (await FillUserMenuItems(user, menuItemDefinition.Items, userMenuItem.Items)) > 0) { userMenuItems.Add(userMenuItem); ++addedMenuItemCount; } } } return addedMenuItemCount; }