public int Add(TabPermissionInfo value, bool checkForDuplicates) { if (!checkForDuplicates) { return Add(value); } else { bool isMatch = false; foreach (PermissionInfoBase permission in this.List) { if (permission.PermissionID == value.PermissionID && permission.UserID == value.UserID && permission.RoleID == value.RoleID) { isMatch = true; break; } } if (!isMatch) { return Add(value); } else return 0; } }
protected override void AddPermission(PermissionInfo permission, int roleId, string roleName, int userId, string displayName, bool allowAccess) { var objPermission = new TabPermissionInfo(permission); objPermission.TabID = TabID; objPermission.RoleID = roleId; objPermission.RoleName = roleName; objPermission.AllowAccess = allowAccess; objPermission.UserID = userId; objPermission.DisplayName = displayName; _TabPermissions.Add(objPermission, true); //Clear Permission List _PermissionsList = null; }
/// ----------------------------------------------------------------------------- /// <summary> /// Parse the Permission Keys used to persist the Permissions in the ViewState /// </summary> /// <param name="Settings">A string array of settings</param> /// ----------------------------------------------------------------------------- private TabPermissionInfo ParseKeys(string[] Settings) { var objTabPermission = new TabPermissionInfo(); //Call base class to load base properties base.ParsePermissionKeys(objTabPermission, Settings); if (String.IsNullOrEmpty(Settings[2])) { objTabPermission.TabPermissionID = -1; } else { objTabPermission.TabPermissionID = Convert.ToInt32(Settings[2]); } objTabPermission.TabID = TabID; return objTabPermission; }
public bool Contains(TabPermissionInfo value) { return List.Contains(value); }
public int Add(TabPermissionInfo value) { return List.Add(value); }
public void Insert(int index, TabPermissionInfo value) { List.Insert(index, value); }
public void Remove(TabPermissionInfo value) { List.Remove(value); }
private static void UpgradeToVersion_500() { PortalController objPortals = new PortalController(); ArrayList arrPortals = objPortals.GetPortals(); TabController controller = new TabController(); //Add Edit Permissions for Admin Tabs to legacy portals PermissionController permissionControler = new PermissionController(); TabPermissionController tabPermissionControler = new TabPermissionController(); ArrayList permissions = permissionControler.GetPermissionByCodeAndKey("SYSTEM_TAB", "EDIT"); int permissionID = Null.NullInteger; if (permissions.Count == 1) { PermissionInfo permission = permissions[0] as PermissionInfo; permissionID = permission.PermissionID; foreach (PortalInfo portal in arrPortals) { TabInfo adminTab = controller.GetTab(portal.AdminTabId, portal.PortalID, true); if (adminTab != null) { TabPermissionInfo tabPermission = new TabPermissionInfo(); tabPermission.TabID = adminTab.TabID; tabPermission.PermissionID = permissionID; tabPermission.AllowAccess = true; tabPermission.RoleID = portal.AdministratorRoleId; if (!TabPermissionExists(tabPermission, portal.PortalID)) { adminTab.TabPermissions.Add(tabPermission); } //Save Tab Permissions to Data Base TabPermissionController.SaveTabPermissions(adminTab); foreach (TabInfo childTab in TabController.GetTabsByParent(portal.AdminTabId, portal.PortalID)) { tabPermission = new TabPermissionInfo(); tabPermission.TabID = childTab.TabID; tabPermission.PermissionID = permissionID; tabPermission.AllowAccess = true; tabPermission.RoleID = portal.AdministratorRoleId; if (!TabPermissionExists(tabPermission, portal.PortalID)) { childTab.TabPermissions.Add(tabPermission); } //Save Tab Permissions to Data Base TabPermissionController.SaveTabPermissions(childTab); } } } } //Update Host/Admin modules Visibility setting bool superTabProcessed = Null.NullBoolean; ModuleController moduleController = new ModuleController(); foreach (PortalInfo portal in arrPortals) { if (!superTabProcessed) { //Process Host Tabs foreach (TabInfo childTab in TabController.GetTabsByParent(portal.SuperTabId, Null.NullInteger)) { foreach (ModuleInfo tabModule in moduleController.GetTabModules(childTab.TabID).Values) { tabModule.Visibility = VisibilityState.None; moduleController.UpdateModule(tabModule); } } } //Process Portal Tabs foreach (TabInfo childTab in TabController.GetTabsByParent(portal.AdminTabId, portal.PortalID)) { foreach (ModuleInfo tabModule in moduleController.GetTabModules(childTab.TabID).Values) { tabModule.Visibility = VisibilityState.None; moduleController.UpdateModule(tabModule); } } } //Upgrade PortalDesktopModules to support new "model" permissions = permissionControler.GetPermissionByCodeAndKey("SYSTEM_DESKTOPMODULE", "DEPLOY"); if (permissions.Count == 1) { PermissionInfo permission = permissions[0] as PermissionInfo; permissionID = permission.PermissionID; foreach (PortalInfo portal in arrPortals) { foreach (DesktopModuleInfo desktopModule in DesktopModuleController.GetDesktopModules(Null.NullInteger).Values) { if (!desktopModule.IsPremium) { //Parse the permissions DesktopModulePermissionCollection deployPermissions = new DesktopModulePermissionCollection(); DesktopModulePermissionInfo deployPermission = default(DesktopModulePermissionInfo); // if Not IsAdmin add Registered Users if (!desktopModule.IsAdmin) { deployPermission = new DesktopModulePermissionInfo(); deployPermission.PermissionID = permissionID; deployPermission.AllowAccess = true; deployPermission.RoleID = portal.RegisteredRoleId; deployPermissions.Add(deployPermission); } // if Not a Host Module add Administrators string hostModules = "Portals, SQL, HostSettings, Scheduler, SearchAdmin, Lists, SkinDesigner, Extensions"; if (!hostModules.Contains(desktopModule.ModuleName)) { deployPermission = new DesktopModulePermissionInfo(); deployPermission.PermissionID = permissionID; deployPermission.AllowAccess = true; deployPermission.RoleID = portal.AdministratorRoleId; deployPermissions.Add(deployPermission); } //Add Portal/Module to PortalDesktopModules DesktopModuleController.AddDesktopModuleToPortal(portal.PortalID, desktopModule, deployPermissions, false); } } DataCache.ClearPortalCache(portal.PortalID, true); } } LegacyUtil.ProcessLegacyModules(); LegacyUtil.ProcessLegacyLanguages(); LegacyUtil.ProcessLegacySkins(); LegacyUtil.ProcessLegacySkinControls(); }
public int IndexOf(TabPermissionInfo value) { return List.IndexOf(value); }
private static bool TabPermissionExists(TabPermissionInfo tabPermission, int PortalID) { bool blnExists = false; foreach (TabPermissionInfo permission in TabPermissionController.GetTabPermissions(tabPermission.TabID, PortalID)) { if (permission.TabID == tabPermission.TabID && permission.RoleID == tabPermission.RoleID && permission.PermissionID == tabPermission.PermissionID) { blnExists = true; break; // TODO: might not be correct. Was : Exit For } } return blnExists; }
/// <summary> /// Updates a Permission /// </summary> /// <param name="permission">The permission being updated</param> /// <param name="roleid">The id of the role</param> /// <param name="roleName">The name of the role</param> /// <param name="allowAccess">The value of the permission</param> protected override void UpdatePermission( PermissionInfo permission, int roleid, string roleName, bool allowAccess ) { bool isMatch = false; TabPermissionInfo objPermission; int permissionId = permission.PermissionID; //Search TabPermission Collection for the permission to Update foreach( TabPermissionInfo tempLoopVar_objPermission in TabPermissions ) { objPermission = tempLoopVar_objPermission; if( objPermission.PermissionID == permissionId && objPermission.RoleID == roleid ) { //TabPermission is in collection if( !allowAccess ) { //Remove from collection as we only keep AllowAccess permissions TabPermissions.Remove( objPermission ); } isMatch = true; break; } } //TabPermission not found so add new if( !isMatch && allowAccess ) { objPermission = new TabPermissionInfo(); objPermission.PermissionID = permissionId; objPermission.RoleName = roleName; objPermission.RoleID = roleid; objPermission.AllowAccess = allowAccess; objPermission.TabID = TabID; TabPermissions.Add( objPermission ); } }
/// <summary> /// Parse the Permission Keys used to persist the Permissions in the ViewState /// </summary> /// <param name="Settings">A string array of settings</param> /// <param name="arrPermisions">An Arraylist to add the Permission object to</param> private void ParsePermissionKeys( string[] Settings, ArrayList arrPermisions ) { TabPermissionInfo objTabPermission; objTabPermission = new TabPermissionInfo(); objTabPermission.PermissionID = Settings.Length <= 1 ? 0 : Convert.ToInt32( Settings[1] ); objTabPermission.RoleID = Settings.Length <= 4 ? 0 : Convert.ToInt32(Settings[4]); objTabPermission.RoleName = Settings.Length <= 3 ? "" : Settings[3]; objTabPermission.AllowAccess = true; if(Settings.Length <= 2 || String.IsNullOrEmpty(Settings[2])) { objTabPermission.TabPermissionID = -1; } else { objTabPermission.TabPermissionID = Convert.ToInt32( Settings[2] ); } objTabPermission.TabID = TabID; //Add TabPermission to array arrPermisions.Add( objTabPermission ); }
public static TabInfo InitTabInfoObject(TabInfo relativeToTab, TabRelativeLocation location) { if (((relativeToTab == null))) { if (((PortalSettings.Current != null) && (PortalSettings.Current.ActiveTab != null))) { relativeToTab = PortalSettings.Current.ActiveTab; } } var newTab = new TabInfo { TabID = Null.NullInteger, TabName = "", Title = "", IsVisible = false, DisableLink = false, IsDeleted = false, IsSecure = false, PermanentRedirect = false }; TabInfo parentTab = GetParentTab(relativeToTab, location); if (((parentTab != null))) { newTab.PortalID = parentTab.PortalID; newTab.ParentId = parentTab.TabID; newTab.Level = parentTab.Level + 1; if ((PortalSettings.Current.SSLEnabled)) { newTab.IsSecure = parentTab.IsSecure; //Inherit from parent } } else { newTab.PortalID = PortalSettings.Current.PortalId; newTab.ParentId = Null.NullInteger; newTab.Level = 0; } //Inherit permissions from parent newTab.TabPermissions.Clear(); if ((newTab.PortalID != Null.NullInteger && (parentTab != null))) { newTab.TabPermissions.AddRange(parentTab.TabPermissions); } else if ((newTab.PortalID != Null.NullInteger)) { //Give admin full permission ArrayList permissions = PermissionController.GetPermissionsByTab(); foreach (PermissionInfo permission in permissions) { TabPermissionInfo newTabPermission = new TabPermissionInfo(); newTabPermission.PermissionID = permission.PermissionID; newTabPermission.PermissionKey = permission.PermissionKey; newTabPermission.PermissionName = permission.PermissionName; newTabPermission.AllowAccess = true; newTabPermission.RoleID = PortalSettings.Current.AdministratorRoleId; newTab.TabPermissions.Add(newTabPermission); } } return(newTab); }
public static int SaveTabInfoObject(TabInfo tab, TabInfo relativeToTab, TabRelativeLocation location, string templateFileId) { //Validation: //Tab name is required //Tab name is invalid string invalidType; if (!TabController.IsValidTabName(tab.TabName, out invalidType)) { switch (invalidType) { case "EmptyTabName": throw new DotNetNukeException("Page name is required.", DotNetNukeErrorCode.PageNameRequired); case "InvalidTabName": throw new DotNetNukeException("Page name is invalid.", DotNetNukeErrorCode.PageNameInvalid); } } else if ((Validate_IsCircularReference(tab.PortalID, tab.TabID))) { throw new DotNetNukeException("Cannot move page to that location.", DotNetNukeErrorCode.PageCircularReference); } bool usingDefaultLanguage = (tab.CultureCode == PortalSettings.Current.DefaultLanguage) || tab.CultureCode == null; if (PortalSettings.Current.ContentLocalizationEnabled) { if ((!usingDefaultLanguage)) { TabInfo defaultLanguageSelectedTab = tab.DefaultLanguageTab; if ((defaultLanguageSelectedTab == null)) { //get the siblings from the selectedtab and iterate through until you find a sibbling with a corresponding defaultlanguagetab //if none are found get a list of all the tabs from the default language and then select the last one var selectedTabSibblings = TabController.Instance.GetTabsByPortal(tab.PortalID).WithCulture(tab.CultureCode, true).AsList(); foreach (TabInfo sibling in selectedTabSibblings) { TabInfo siblingDefaultTab = sibling.DefaultLanguageTab; if (((siblingDefaultTab != null))) { defaultLanguageSelectedTab = siblingDefaultTab; break; } } //still haven't found it if ((defaultLanguageSelectedTab == null)) { var defaultLanguageTabs = TabController.Instance.GetTabsByPortal(tab.PortalID).WithCulture(PortalSettings.Current.DefaultLanguage, true).AsList(); defaultLanguageSelectedTab = defaultLanguageTabs[defaultLanguageTabs.Count]; //get the last tab } } relativeToTab = defaultLanguageSelectedTab; } } if ((location != TabRelativeLocation.NOTSET)) { //Check Host tab - don't allow adding before or after if ((IsHostConsolePage(relativeToTab) && (location == TabRelativeLocation.AFTER || location == TabRelativeLocation.BEFORE))) { throw new DotNetNukeException("You cannot add or move pages before or after the Host tab.", DotNetNukeErrorCode.HostBeforeAfterError); } TabInfo parentTab = GetParentTab(relativeToTab, location); string permissionList = "ADD,COPY,EDIT,MANAGE"; //Check permissions for Page Editors when moving or inserting if ((!PortalSecurity.IsInRole("Administrators"))) { if (((parentTab == null) || !TabPermissionController.HasTabPermission(parentTab.TabPermissions, permissionList))) { throw new DotNetNukeException("You do not have permissions to add or move pages to this location. You can only add or move pages as children of pages you can edit.", DotNetNukeErrorCode.PageEditorPermissionError); } } if (((parentTab != null))) { tab.ParentId = parentTab.TabID; tab.Level = parentTab.Level + 1; } else { tab.ParentId = Null.NullInteger; tab.Level = 0; } } if ((tab.TabID > Null.NullInteger && tab.TabID == tab.ParentId)) { throw new DotNetNukeException("Parent page is invalid.", DotNetNukeErrorCode.ParentTabInvalid); } tab.TabPath = Globals.GenerateTabPath(tab.ParentId, tab.TabName); //check whether have conflict between tab path and portal alias. if (TabController.IsDuplicateWithPortalAlias(PortalSettings.Current.PortalId, tab.TabPath)) { throw new DotNetNukeException("The page path is duplicate with a site alias", DotNetNukeErrorCode.DuplicateWithAlias); } try { if ((tab.TabID < 0)) { if ((tab.TabPermissions.Count == 0 && tab.PortalID != Null.NullInteger)) { //Give admin full permission ArrayList permissions = PermissionController.GetPermissionsByTab(); foreach (PermissionInfo permission in permissions) { TabPermissionInfo newTabPermission = new TabPermissionInfo(); newTabPermission.PermissionID = permission.PermissionID; newTabPermission.PermissionKey = permission.PermissionKey; newTabPermission.PermissionName = permission.PermissionName; newTabPermission.AllowAccess = true; newTabPermission.RoleID = PortalSettings.Current.AdministratorRoleId; tab.TabPermissions.Add(newTabPermission); } } PortalSettings _PortalSettings = PortalController.Instance.GetCurrentPortalSettings(); if (_PortalSettings.ContentLocalizationEnabled) { Locale defaultLocale = LocaleController.Instance.GetDefaultLocale(tab.PortalID); tab.CultureCode = defaultLocale.Code; } else { tab.CultureCode = Null.NullString; } if ((location == TabRelativeLocation.AFTER && (relativeToTab != null))) { tab.TabID = TabController.Instance.AddTabAfter(tab, relativeToTab.TabID); } else if ((location == TabRelativeLocation.BEFORE && (relativeToTab != null))) { tab.TabID = TabController.Instance.AddTabBefore(tab, relativeToTab.TabID); } else { tab.TabID = TabController.Instance.AddTab(tab); } if (_PortalSettings.ContentLocalizationEnabled) { TabController.Instance.CreateLocalizedCopies(tab); } TabController.Instance.UpdateTabSetting(tab.TabID, "CacheProvider", ""); TabController.Instance.UpdateTabSetting(tab.TabID, "CacheDuration", ""); TabController.Instance.UpdateTabSetting(tab.TabID, "CacheIncludeExclude", "0"); TabController.Instance.UpdateTabSetting(tab.TabID, "IncludeVaryBy", ""); TabController.Instance.UpdateTabSetting(tab.TabID, "ExcludeVaryBy", ""); TabController.Instance.UpdateTabSetting(tab.TabID, "MaxVaryByCount", ""); } else { TabController.Instance.UpdateTab(tab); if ((location == TabRelativeLocation.AFTER && (relativeToTab != null))) { TabController.Instance.MoveTabAfter(tab, relativeToTab.TabID); } else if ((location == TabRelativeLocation.BEFORE && (relativeToTab != null))) { TabController.Instance.MoveTabBefore(tab, relativeToTab.TabID); } } } catch (Exception ex) { Logger.Error(ex); if (ex.Message.StartsWith("Page Exists")) { throw new DotNetNukeException(ex.Message, DotNetNukeErrorCode.PageExists); } } // create the page from a template if (!string.IsNullOrEmpty(templateFileId)) { XmlDocument xmlDoc = new XmlDocument { XmlResolver = null }; try { var templateFile = FileManager.Instance.GetFile(Convert.ToInt32(templateFileId)); xmlDoc.Load(FileManager.Instance.GetFileContent(templateFile)); TabController.DeserializePanes(xmlDoc.SelectSingleNode("//portal/tabs/tab/panes"), tab.PortalID, tab.TabID, PortalTemplateModuleAction.Ignore, new Hashtable()); //save tab permissions DeserializeTabPermissions(xmlDoc.SelectNodes("//portal/tabs/tab/tabpermissions/permission"), tab); } catch (Exception ex) { Exceptions.LogException(ex); throw new DotNetNukeException("Unable to process page template.", ex, DotNetNukeErrorCode.DeserializePanesFailed); } } return(tab.TabID); }