/// <param name="moduleId"></param> /// <param name="tabId"></param> /// <param name="permissionKey">You can use the constants, but for modules there are only /// those two</param> /// <returns></returns> public static bool canUserAccessModule(UserInfo user, int portalId, int tabId, ModuleInfo moduleInfo, string permissionKey) { var retVal = false; string permissionsString = null; if (moduleInfo.InheritViewPermissions) { var tabPermissionController = new TabPermissionController(); var tabPermissionCollection = tabPermissionController.GetTabPermissionsCollectionByTabID(tabId, portalId); permissionsString = tabPermissionController.GetTabPermissions(tabPermissionCollection, permissionKey); } else { var modulePermissionController = new ModulePermissionController(); var permissionCollection = modulePermissionController.GetModulePermissionsCollectionByModuleID(moduleInfo.ModuleID, tabId); permissionsString = modulePermissionController.GetModulePermissions(permissionCollection, permissionKey); } char[] splitter = { ';' }; var roles = permissionsString.Split(splitter); foreach (var role in roles) { if (role.Length > 0) { if (user != null && user.IsInRole(role)) retVal = true; else if (user == null && role.ToLower().Equals("all users")) retVal = true; } } return retVal; }
/// <remarks>Source/Template from SecurityContext.canUserAccessModule()</remarks> private static bool CanUserViewTab(UserInfo user, int portalId, int tabId, string permissionKey = "VIEW") { //var retVal = false; var tabPermissionController = new TabPermissionController(); var tabPermissionCollection = tabPermissionController.GetTabPermissionsCollectionByTabID(tabId, portalId); var permissionsString = tabPermissionController.GetTabPermissions(tabPermissionCollection, permissionKey); char[] splitter = { ';' }; var roles = permissionsString.Split(splitter); foreach (var role in roles.Where(role => role.Length > 0)) { if (user != null && user.IsInRole(role)) return true; if (role.ToLower().Equals("all users")) return true; } return false; }
public void CopyPermissionsToChildren( ArrayList tabs, TabPermissionCollection newPermissions ) { TabPermissionController objTabPermissionController = new TabPermissionController(); foreach( TabInfo objTab in tabs ) { TabPermissionCollection objCurrentTabPermissions = objTabPermissionController.GetTabPermissionsCollectionByTabID( objTab.TabID, objTab.PortalID ); if( !( objCurrentTabPermissions.CompareTo( newPermissions ) ) ) { objTabPermissionController.DeleteTabPermissionsByTabID( objTab.TabID ); foreach( TabPermissionInfo objTabPermission in newPermissions ) { if( objTabPermission.AllowAccess ) { objTabPermission.TabID = objTab.TabID; objTabPermissionController.AddTabPermission( objTabPermission ); } } } } if( tabs.Count > 0 ) { DataCache.ClearTabsCache( ( (TabInfo)( tabs[0] ) ).PortalID ); } }
public void UpdateTab( TabInfo objTab ) { bool updateChildren = false; TabInfo objTmpTab = GetTab( objTab.TabID, objTab.PortalID, false ); if( objTmpTab.TabName != objTab.TabName | objTmpTab.ParentId != objTab.ParentId ) { updateChildren = true; } UpdatePortalTabOrder( objTab.PortalID, objTab.TabID, objTab.ParentId, 0, 0, objTab.IsVisible ); DataProvider.Instance().UpdateTab( objTab.TabID, objTab.TabName, objTab.IsVisible, objTab.DisableLink, objTab.ParentId, objTab.IconFile, objTab.Title, objTab.Description, objTab.KeyWords, objTab.IsDeleted, objTab.Url, objTab.SkinSrc, objTab.ContainerSrc, objTab.TabPath, objTab.StartDate, objTab.EndDate, objTab.RefreshInterval, objTab.PageHeadText ); TabPermissionController objTabPermissionController = new TabPermissionController(); TabPermissionCollection objTabPermissions = objTab.TabPermissions; TabPermissionCollection objCurrentTabPermissions = objTabPermissionController.GetTabPermissionsCollectionByTabID( objTab.TabID, objTab.PortalID ); if( !( objCurrentTabPermissions.CompareTo( objTab.TabPermissions ) ) ) { objTabPermissionController.DeleteTabPermissionsByTabID( objTab.TabID ); foreach( TabPermissionInfo objTabPermission in objTabPermissions ) { if( objTabPermission.AllowAccess ) { objTabPermissionController.AddTabPermission( objTabPermission ); } } } if( updateChildren ) { UpdateChildTabPath( objTab.TabID, objTab.PortalID ); } ClearCache( objTab.PortalID ); }
private static TabInfo FillTabInfo( IDataReader dr, bool CheckForOpenDataReader ) { TabInfo objTabInfo = new TabInfo(); TabPermissionController objTabPermissionController = new TabPermissionController(); // read datareader bool canContinue = true; if( CheckForOpenDataReader ) { canContinue = false; if( dr.Read() ) { canContinue = true; } } if( canContinue ) { objTabInfo.TabID = Convert.ToInt32( Null.SetNull( dr["TabID"], objTabInfo.TabID ) ); objTabInfo.TabOrder = Convert.ToInt32( Null.SetNull( dr["TabOrder"], objTabInfo.TabOrder ) ); objTabInfo.PortalID = Convert.ToInt32( Null.SetNull( dr["PortalID"], objTabInfo.PortalID ) ); objTabInfo.TabName = Convert.ToString( Null.SetNull( dr["TabName"], objTabInfo.TabName ) ); objTabInfo.IsVisible = Convert.ToBoolean( Null.SetNull( dr["IsVisible"], objTabInfo.IsVisible ) ); objTabInfo.ParentId = Convert.ToInt32( Null.SetNull( dr["ParentId"], objTabInfo.ParentId ) ); objTabInfo.Level = Convert.ToInt32( Null.SetNull( dr["Level"], objTabInfo.Level ) ); objTabInfo.IconFile = Convert.ToString( Null.SetNull( dr["IconFile"], objTabInfo.IconFile ) ); objTabInfo.DisableLink = Convert.ToBoolean( Null.SetNull( dr["DisableLink"], objTabInfo.DisableLink ) ); objTabInfo.Title = Convert.ToString( Null.SetNull( dr["Title"], objTabInfo.Title ) ); objTabInfo.Description = Convert.ToString( Null.SetNull( dr["Description"], objTabInfo.Description ) ); objTabInfo.KeyWords = Convert.ToString( Null.SetNull( dr["KeyWords"], objTabInfo.KeyWords ) ); objTabInfo.IsDeleted = Convert.ToBoolean( Null.SetNull( dr["IsDeleted"], objTabInfo.IsDeleted ) ); objTabInfo.Url = Convert.ToString( Null.SetNull( dr["Url"], objTabInfo.Url ) ); objTabInfo.SkinSrc = Convert.ToString( Null.SetNull( dr["SkinSrc"], objTabInfo.SkinSrc ) ); objTabInfo.ContainerSrc = Convert.ToString( Null.SetNull( dr["ContainerSrc"], objTabInfo.ContainerSrc ) ); objTabInfo.TabPath = Convert.ToString( Null.SetNull( dr["TabPath"], objTabInfo.TabPath ) ); objTabInfo.StartDate = Convert.ToDateTime( Null.SetNull( dr["StartDate"], objTabInfo.StartDate ) ); objTabInfo.EndDate = Convert.ToDateTime( Null.SetNull( dr["EndDate"], objTabInfo.EndDate ) ); objTabInfo.HasChildren = Convert.ToBoolean( Null.SetNull( dr["HasChildren"], objTabInfo.HasChildren ) ); objTabInfo.RefreshInterval = Convert.ToInt32( Null.SetNull( dr["RefreshInterval"], objTabInfo.RefreshInterval ) ); objTabInfo.PageHeadText = Convert.ToString( Null.SetNull( dr["PageHeadText"], objTabInfo.PageHeadText ) ); if( objTabInfo != null ) { objTabInfo.TabPermissions = objTabPermissionController.GetTabPermissionsCollectionByTabID( objTabInfo.TabID, objTabInfo.PortalID ); objTabInfo.AdministratorRoles = objTabPermissionController.GetTabPermissions( objTabInfo.TabPermissions, "EDIT" ); if( objTabInfo.AdministratorRoles == ";" ) { // this code is here for legacy support - the AdministratorRoles were stored as a concatenated list of roleids prior to DNN 3.0 try { objTabInfo.AdministratorRoles = Convert.ToString( Null.SetNull( dr["AdministratorRoles"], objTabInfo.AdministratorRoles ) ); } catch { // the AdministratorRoles field was removed from the Tabs table in 3.0 } } objTabInfo.AuthorizedRoles = objTabPermissionController.GetTabPermissions( objTabInfo.TabPermissions, "VIEW" ); if( objTabInfo.AuthorizedRoles == ";" ) { // this code is here for legacy support - the AuthorizedRoles were stored as a concatenated list of roleids prior to DNN 3.0 try { objTabInfo.AuthorizedRoles = Convert.ToString( Null.SetNull( dr["AuthorizedRoles"], objTabInfo.AuthorizedRoles ) ); } catch { // the AuthorizedRoles field was removed from the Tabs table in 3.0 } } } objTabInfo.BreadCrumbs = null; objTabInfo.Panes = null; objTabInfo.Modules = null; } else { objTabInfo = null; } return objTabInfo; }
private ModuleInfo FillModuleInfo(IDataReader dr, bool CheckForOpenDataReader, bool IncludePermissions) { ModuleInfo objModuleInfo = new ModuleInfo(); ModulePermissionController objModulePermissionController = new ModulePermissionController(); // read datareader bool canContinue = true; if (CheckForOpenDataReader) { canContinue = false; if (dr.Read()) { canContinue = true; } } if (canContinue) { objModuleInfo.PortalID = Convert.ToInt32(Null.SetNull(dr["PortalID"], objModuleInfo.PortalID)); objModuleInfo.TabID = Convert.ToInt32(Null.SetNull(dr["TabID"], objModuleInfo.TabID)); objModuleInfo.TabModuleID = Convert.ToInt32(Null.SetNull(dr["TabModuleID"], objModuleInfo.TabModuleID)); objModuleInfo.ModuleID = Convert.ToInt32(Null.SetNull(dr["ModuleID"], objModuleInfo.ModuleID)); objModuleInfo.ModuleDefID = Convert.ToInt32(Null.SetNull(dr["ModuleDefID"], objModuleInfo.ModuleDefID)); objModuleInfo.ModuleOrder = Convert.ToInt32(Null.SetNull(dr["ModuleOrder"], objModuleInfo.ModuleOrder)); objModuleInfo.PaneName = Convert.ToString(Null.SetNull(dr["PaneName"], objModuleInfo.PaneName)); objModuleInfo.ModuleTitle = Convert.ToString(Null.SetNull(dr["ModuleTitle"], objModuleInfo.ModuleTitle)); objModuleInfo.CacheTime = Convert.ToInt32(Null.SetNull(dr["CacheTime"], objModuleInfo.CacheTime)); objModuleInfo.Alignment = Convert.ToString(Null.SetNull(dr["Alignment"], objModuleInfo.Alignment)); objModuleInfo.Color = Convert.ToString(Null.SetNull(dr["Color"], objModuleInfo.Color)); objModuleInfo.Border = Convert.ToString(Null.SetNull(dr["Border"], objModuleInfo.Border)); objModuleInfo.IconFile = Convert.ToString(Null.SetNull(dr["IconFile"], objModuleInfo.IconFile)); objModuleInfo.AllTabs = Convert.ToBoolean(Null.SetNull(dr["AllTabs"], objModuleInfo.AllTabs)); int intVisibility = 0; if (((Convert.ToInt32(Null.SetNull(dr["Visibility"], intVisibility))) == 0) || ((Convert.ToInt32(Null.SetNull(dr["Visibility"], intVisibility))) == Null.NullInteger)) { objModuleInfo.Visibility = VisibilityState.Maximized; } else if ((Convert.ToInt32(Null.SetNull(dr["Visibility"], intVisibility))) == 1) { objModuleInfo.Visibility = VisibilityState.Minimized; } else if ((Convert.ToInt32(Null.SetNull(dr["Visibility"], intVisibility))) == 2) { objModuleInfo.Visibility = VisibilityState.None; } objModuleInfo.IsDeleted = Convert.ToBoolean(Null.SetNull(dr["IsDeleted"], objModuleInfo.IsDeleted)); objModuleInfo.Header = Convert.ToString(Null.SetNull(dr["Header"], objModuleInfo.Header)); objModuleInfo.Footer = Convert.ToString(Null.SetNull(dr["Footer"], objModuleInfo.Footer)); objModuleInfo.StartDate = Convert.ToDateTime(Null.SetNull(dr["StartDate"], objModuleInfo.StartDate)); objModuleInfo.EndDate = Convert.ToDateTime(Null.SetNull(dr["EndDate"], objModuleInfo.EndDate)); objModuleInfo.ContainerSrc = Convert.ToString(Null.SetNull(dr["ContainerSrc"], objModuleInfo.ContainerSrc)); objModuleInfo.DisplayTitle = Convert.ToBoolean(Null.SetNull(dr["DisplayTitle"], objModuleInfo.DisplayTitle)); objModuleInfo.DisplayPrint = Convert.ToBoolean(Null.SetNull(dr["DisplayPrint"], objModuleInfo.DisplayPrint)); objModuleInfo.DisplaySyndicate = Convert.ToBoolean(Null.SetNull(dr["DisplaySyndicate"], objModuleInfo.DisplaySyndicate)); objModuleInfo.InheritViewPermissions = Convert.ToBoolean(Null.SetNull(dr["InheritViewPermissions"], objModuleInfo.InheritViewPermissions)); objModuleInfo.DesktopModuleID = Convert.ToInt32(Null.SetNull(dr["DesktopModuleID"], objModuleInfo.DesktopModuleID)); objModuleInfo.FriendlyName = Convert.ToString(Null.SetNull(dr["FriendlyName"], objModuleInfo.FriendlyName)); objModuleInfo.Description = Convert.ToString(Null.SetNull(dr["Description"], objModuleInfo.Description)); objModuleInfo.Version = Convert.ToString(Null.SetNull(dr["Version"], objModuleInfo.Version)); objModuleInfo.IsPremium = Convert.ToBoolean(Null.SetNull(dr["IsPremium"], objModuleInfo.IsPremium)); objModuleInfo.IsAdmin = Convert.ToBoolean(Null.SetNull(dr["IsAdmin"], objModuleInfo.IsAdmin)); objModuleInfo.BusinessControllerClass = Convert.ToString(Null.SetNull(dr["BusinessControllerClass"], objModuleInfo.BusinessControllerClass)); objModuleInfo.SupportedFeatures = Convert.ToInt32(Null.SetNull(dr["SupportedFeatures"], objModuleInfo.SupportedFeatures)); objModuleInfo.ModuleControlId = Convert.ToInt32(Null.SetNull(dr["ModuleControlId"], objModuleInfo.ModuleControlId)); objModuleInfo.ControlSrc = Convert.ToString(Null.SetNull(dr["ControlSrc"], objModuleInfo.ControlSrc)); int intControlType = 0; if ((Convert.ToInt32(Null.SetNull(dr["ControlType"], intControlType))) == -3) { objModuleInfo.ControlType = SecurityAccessLevel.ControlPanel; } else if ((Convert.ToInt32(Null.SetNull(dr["ControlType"], intControlType))) == -2) { objModuleInfo.ControlType = SecurityAccessLevel.SkinObject; } else if (((Convert.ToInt32(Null.SetNull(dr["ControlType"], intControlType))) == -1) || ((Convert.ToInt32(Null.SetNull(dr["ControlType"], intControlType))) == Null.NullInteger)) { objModuleInfo.ControlType = SecurityAccessLevel.Anonymous; } else if ((Convert.ToInt32(Null.SetNull(dr["ControlType"], intControlType))) == 0) { objModuleInfo.ControlType = SecurityAccessLevel.View; } else if ((Convert.ToInt32(Null.SetNull(dr["ControlType"], intControlType))) == 1) { objModuleInfo.ControlType = SecurityAccessLevel.Edit; } else if ((Convert.ToInt32(Null.SetNull(dr["ControlType"], intControlType))) == 2) { objModuleInfo.ControlType = SecurityAccessLevel.Admin; } else if ((Convert.ToInt32(Null.SetNull(dr["ControlType"], intControlType))) == 3) { objModuleInfo.ControlType = SecurityAccessLevel.Host; } objModuleInfo.ControlTitle = Convert.ToString(Null.SetNull(dr["ControlTitle"], objModuleInfo.ControlTitle)); objModuleInfo.HelpUrl = Convert.ToString(Null.SetNull(dr["HelpUrl"], objModuleInfo.HelpUrl)); if (IncludePermissions) { if (objModuleInfo != null) { //Get the Module permissions first (then we can parse the collection to determine the View/Edit Roles) objModuleInfo.ModulePermissions = objModulePermissionController.GetModulePermissionsCollectionByModuleID(objModuleInfo.ModuleID, objModuleInfo.TabID); objModuleInfo.AuthorizedEditRoles = objModulePermissionController.GetModulePermissions(objModuleInfo.ModulePermissions, "EDIT"); if (objModuleInfo.AuthorizedEditRoles == ";") { // this code is here for legacy support - the AuthorizedEditRoles were stored as a concatenated list of roleids prior to DNN 3.0 try { objModuleInfo.AuthorizedEditRoles = Convert.ToString(Null.SetNull(dr["AuthorizedEditRoles"], objModuleInfo.AuthorizedEditRoles)); } catch { // the AuthorizedEditRoles field was removed from the Tabs table in 3.0 } } try { if (objModuleInfo.InheritViewPermissions) { TabPermissionController objTabPermissionController = new TabPermissionController(); TabPermissionCollection objTabPermissionCollection = objTabPermissionController.GetTabPermissionsCollectionByTabID(objModuleInfo.TabID, objModuleInfo.PortalID); objModuleInfo.AuthorizedViewRoles = objTabPermissionController.GetTabPermissions(objTabPermissionCollection, "VIEW"); } else { objModuleInfo.AuthorizedViewRoles = objModulePermissionController.GetModulePermissions(objModuleInfo.ModulePermissions, "VIEW"); } if (objModuleInfo.AuthorizedViewRoles == ";") { // this code is here for legacy support - the AuthorizedViewRoles were stored as a concatenated list of roleids prior to DNN 3.0 try { objModuleInfo.AuthorizedViewRoles = Convert.ToString(Null.SetNull(dr["AuthorizedViewRoles"], objModuleInfo.AuthorizedViewRoles)); } catch { // the AuthorizedViewRoles field was removed from the Tabs table in 3.0 } } } catch { } } } } else { objModuleInfo = null; } return objModuleInfo; }