private void AddPermissions(MenuItem menuItem, IDictionary <string, object> settings) { var user = UserController.Instance.GetCurrentUserInfo(); var portalSettings = PortalSettings.Current; if (!settings.ContainsKey("isAdmin") && portalSettings != null) { settings.Add("isAdmin", user.IsInRole(portalSettings.AdministratorRoleName)); } if (!settings.ContainsKey("isHost")) { settings.Add("isHost", user.IsSuperUser); } if (!settings.ContainsKey("permissions") && portalSettings != null) { var menuPermissions = MenuPermissionController.GetPermissions(menuItem.MenuId) .Where(p => p.MenuId == menuItem.MenuId); var portalId = portalSettings.PortalId; var permissions = new Dictionary <string, bool>(); foreach (var permission in menuPermissions) { var key = permission.PermissionKey; var hasPermission = MenuPermissionController.HasMenuPermission(portalId, menuItem, key); permissions.Add(key, hasPermission); } settings.Add("permissions", permissions); } }
private string GetMenuSettings(MenuItem menuItem) { var menuController = GetMenuItemController(menuItem); var settings = menuController?.GetSettings(menuItem) ?? new Dictionary <string, object>(); AddPermissions(menuItem, settings); return(JsonConvert.SerializeObject(settings)); }
private void UpdateParamters(MenuItem menuItem) { var menuController = GetMenuItemController(menuItem); try { menuController?.UpdateParameters(menuItem); } catch (Exception ex) { Logger.Error(ex); } }
public bool IsVisible(PortalSettings portalSettings, UserInfo user, MenuItem menuItem) { var visible = menuItem.Enabled && !(user.IsSuperUser && !menuItem.AllowHost) && MenuPermissionController.CanView(portalSettings.PortalId, menuItem); if (visible) { var menuController = GetMenuItemController(menuItem); visible = menuController == null || menuController.Visible(menuItem); } return(visible); }
private bool GetPersonaBarMenuWithPermissionCheck(PortalSettings portalSettings, UserInfo user, IList <MenuItem> filterItems, IList <MenuItem> menuItems) { var menuFiltered = false; foreach (var menuItem in menuItems) { try { if (!IsVisible(portalSettings, user, menuItem)) { menuFiltered = true; continue; } var cloneItem = new MenuItem() { MenuId = menuItem.MenuId, Identifier = menuItem.Identifier, ModuleName = menuItem.ModuleName, FolderName = menuItem.FolderName, Controller = menuItem.Controller, ResourceKey = menuItem.ResourceKey, Path = menuItem.Path, Link = menuItem.Link, CssClass = menuItem.CssClass, IconFile = menuItem.IconFile, AllowHost = menuItem.AllowHost, Order = menuItem.Order, ParentId = menuItem.ParentId }; UpdateParamters(cloneItem); cloneItem.Settings = GetMenuSettings(menuItem); var filtered = GetPersonaBarMenuWithPermissionCheck(portalSettings, user, cloneItem.Children, menuItem.Children); if (!filtered || cloneItem.Children.Count > 0) { filterItems.Add(cloneItem); } } catch (Exception e) //Ignore the failure and still load personaBar { DotNetNuke.Services.Exceptions.Exceptions.LogException(e); } } return(menuFiltered); }
private string GetMenuSettings(MenuItem menuItem) { IDictionary <string, object> settings; try { var menuController = GetMenuItemController(menuItem); settings = menuController?.GetSettings(menuItem) ?? new Dictionary <string, object>(); AddPermissions(menuItem, settings); } catch (Exception ex) { Logger.Error(ex); settings = new Dictionary <string, object>(); } return(JsonConvert.SerializeObject(settings)); }
private void AddPermissions(MenuItem menuItem, IDictionary <string, object> settings) { var portalSettings = PortalSettings.Current; if (!settings.ContainsKey("permissions") && portalSettings != null) { var menuPermissions = MenuPermissionController.GetPermissions(menuItem.MenuId) .Where(p => p.PermissionKey != "VIEW"); var portalId = portalSettings.PortalId; var permissions = new Dictionary <string, bool>(); foreach (var permission in menuPermissions) { var key = permission.PermissionKey; var hasPermission = MenuPermissionController.HasMenuPermission(portalId, menuItem, key); permissions.Add(key, hasPermission); } settings.Add("permissions", permissions); } }
private IMenuItemController GetMenuItemController(MenuItem menuItem) { var identifier = menuItem.Identifier; var controller = menuItem.Controller; if (string.IsNullOrEmpty(controller)) { return(null); } try { var cacheKey = $"PersonaBarMenuController_{identifier}"; return(Reflection.CreateObject(controller, cacheKey) as IMenuItemController); } catch (Exception ex) { Logger.Error(ex); return(null); } }
public bool IsVisible(PortalSettings portalSettings, UserInfo user, MenuItem menuItem) { var visible = menuItem.Enabled && !(user.IsSuperUser && !menuItem.AllowHost) && MenuPermissionController.CanView(portalSettings.PortalId, menuItem); if (visible) { try { var menuController = this.GetMenuItemController(menuItem); visible = menuController == null || menuController.Visible(menuItem); } catch (Exception ex) { Logger.Error(ex); visible = false; } } return(visible); }
private void UpdateParamters(MenuItem menuItem) { var menuController = GetMenuItemController(menuItem); menuController?.UpdateParameters(menuItem); }