// Returns the URL to the first instance of the module the user has access to view public override string GetDocUrl(SearchResult searchResult) { if (!string.IsNullOrEmpty(searchResult.Url)) { return(searchResult.Url); } var url = Localization.Localization.GetString("SEARCH_NoLink"); var tabController = new TabController(); //Get All related tabIds from moduleId var tabModules = GetModuleTabs(searchResult.ModuleId); foreach (ModuleInfo module in tabModules) { var tab = tabController.GetTab(module.TabID, searchResult.PortalId, false); if (TabPermissionController.CanViewPage(tab) && ModulePermissionController.CanViewModule(module)) { try { var portalSettings = new PortalSettings(searchResult.PortalId); portalSettings.PortalAlias = TestablePortalAliasController.Instance.GetPortalAlias(portalSettings.DefaultPortalAlias); url = Globals.NavigateURL(module.TabID, portalSettings, string.Empty, searchResult.QueryString); } catch (Exception ex) { Logger.Error(ex); } break; } } return(url); }
public HttpResponseMessage ModuleDetails(string moduleList) { var siteDetails = new SiteDetail { SiteName = PortalSettings.PortalName, DnnVersion = _dnnVersion, IsHost = UserInfo.IsSuperUser, IsAdmin = UserInfo.IsInRole("Administrators") }; foreach (var moduleName in moduleList.Split(',')) { foreach ( var tabmodule in GetTabModules(moduleName) .Where(tabmodule => TabPermissionController.CanViewPage(tabmodule.TabInfo) && ModulePermissionController.CanViewModule(tabmodule.ModuleInfo))) { var moduleDetail = new ModuleDetail { ModuleName = moduleName }; moduleDetail.ModuleVersion = tabmodule.ModuleVersion; moduleDetail.ModuleInstances.Add(new ModuleInstance { TabId = tabmodule.TabInfo.TabID, ModuleId = tabmodule.ModuleInfo.ModuleID, PageName = tabmodule.TabInfo.TabName, PagePath = tabmodule.TabInfo.TabPath }); siteDetails.Modules.Add(moduleDetail); } } return(Request.CreateResponse(HttpStatusCode.OK, siteDetails)); }
private static IEnumerable <KeyValuePair <int, string> > GetMonikersForList(string moduleList) { var portalId = PortalSettings.Current.PortalId; var tabsController = TabController.Instance; var modulesController = ModuleController.Instance; var resultIds = new List <int>(); var monikers = TabModulesController.Instance.GetTabModuleSettingsByName("Moniker"); var modules = modulesController.GetAllTabsModules(portalId, false).OfType <ModuleInfo>() .Where(tabmodule => monikers.ContainsKey(tabmodule.TabModuleID)).ToArray(); if (modules.Any()) { foreach (var moduleName in (moduleList ?? "").Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { var dtmRecord = DesktopModuleController.GetDesktopModuleByModuleName(moduleName, portalId); if (dtmRecord != null) { var allowedTabs = modules.Where(m => m.DesktopModuleID == dtmRecord.DesktopModuleID) .Select(m => m.TabID).Distinct() .Where(tabId => TabPermissionController.CanViewPage(tabsController.GetTab(tabId, portalId))); var allowedTabModules = modules.Where(tabModule => allowedTabs.Contains(tabModule.TabID) && ModulePermissionController.CanViewModule(modulesController.GetModule(tabModule.ModuleID, tabModule.TabID, false))); resultIds.AddRange(allowedTabModules.Select(tabModule => tabModule.TabModuleID)); } } } return(monikers.Where(kpv => resultIds.Contains(kpv.Key))); }
public ContextSecurity(ModuleInfo objModule) { UserId = UserController.Instance.GetCurrentUserInfo().UserID; CanView = ModulePermissionController.CanViewModule(objModule); CanEdit = ModulePermissionController.HasModulePermission(objModule.ModulePermissions, "EDIT"); IsAdmin = PortalSecurity.IsInRole(PortalSettings.Current.AdministratorRoleName); }
private bool HasViewPermissions() { var mi = default(DotNetNuke.Entities.Modules.ModuleInfo); var mc = new DotNetNuke.Entities.Modules.ModuleController(); mi = mc.GetModule(ModuleId, TabId); return(ModulePermissionController.CanViewModule(mi)); }
public bool CanInjectModule(ModuleInfo module, PortalSettings portalSettings) { return(ModulePermissionController.CanViewModule(module) && module.IsDeleted == false && ((module.StartDate < DateTime.Now && module.EndDate > DateTime.Now) || Globals.IsLayoutMode() || Globals.IsEditMode())); }
private void LoadPaneModulesList() { var items = new Dictionary <string, string> { { string.Empty, string.Empty } }; foreach (ModuleInfo m in PortalSettings.Current.ActiveTab.Modules) { // if user is allowed to view module and module is not deleted if (ModulePermissionController.CanViewModule(m) && !m.IsDeleted) { // modules which are displayed on all tabs should not be displayed on the Admin or Super tabs if (!m.AllTabs || !PortalSettings.Current.ActiveTab.IsSuperTab) { if (m.PaneName == this.PaneLst.SelectedValue) { int moduleOrder = m.ModuleOrder; while (items.ContainsKey(moduleOrder.ToString()) || moduleOrder == 0) { moduleOrder++; } items.Add(moduleOrder.ToString(), m.ModuleTitle); } } } } this.PaneModulesLst.Enabled = true; this.PaneModulesLst.Items.Clear(); this.PaneModulesLst.DataValueField = "key"; this.PaneModulesLst.DataTextField = "value"; this.PaneModulesLst.DataSource = items; this.PaneModulesLst.DataBind(); if (this.PaneModulesLst.Items.Count <= 1) { var listItem = this.PositionLst.FindItemByValue("ABOVE"); if (listItem != null) { this.PositionLst.Items.Remove(listItem); } listItem = this.PositionLst.FindItemByValue("BELOW"); if (listItem != null) { this.PositionLst.Items.Remove(listItem); } this.PaneModulesLst.Enabled = false; } if (this.PositionLst.SelectedValue == "TOP" || this.PositionLst.SelectedValue == "BOTTOM") { this.PaneModulesLst.Enabled = false; } }
/// <summary> /// This method /// </summary> /// <param name="channelName"></param> /// <param name="userName"></param> /// <remarks></remarks> protected override void PopulateChannel(string channelName, string userName) { var objModules = new ModuleController(); ModuleInfo objModule; if (Request == null || Settings == null || Settings.ActiveTab == null || ModuleId == Null.NullInteger) { return; } Channel["title"] = Settings.PortalName; Channel["link"] = Globals.AddHTTP(Globals.GetDomainName(Request)); if (!String.IsNullOrEmpty(Settings.Description)) { Channel["description"] = Settings.Description; } else { Channel["description"] = Settings.PortalName; } Channel["language"] = Settings.DefaultLanguage; Channel["copyright"] = !string.IsNullOrEmpty(Settings.FooterText) ? Settings.FooterText.Replace("[year]", DateTime.Now.Year.ToString()) : string.Empty; Channel["webMaster"] = Settings.Email; SearchResultsInfoCollection searchResults = null; try { searchResults = SearchDataStoreProvider.Instance().GetSearchItems(Settings.PortalId, TabId, ModuleId); } catch (Exception ex) { Exceptions.Exceptions.LogException(ex); } if (searchResults != null) { foreach (SearchResultsInfo objResult in searchResults) { if (TabPermissionController.CanViewPage()) { if (Settings.ActiveTab.StartDate < DateTime.Now && Settings.ActiveTab.EndDate > DateTime.Now) { objModule = objModules.GetModule(objResult.ModuleId, objResult.TabId); if (objModule != null && objModule.DisplaySyndicate && objModule.IsDeleted == false) { if (ModulePermissionController.CanViewModule(objModule)) { if (Convert.ToDateTime(objModule.StartDate == Null.NullDate ? DateTime.MinValue : objModule.StartDate) < DateTime.Now && Convert.ToDateTime(objModule.EndDate == Null.NullDate ? DateTime.MaxValue : objModule.EndDate) > DateTime.Now) { Channel.Items.Add(GetRssItem(objResult)); } } } } } } } }
private bool ProcessMasterModules() { bool bSuccess = true; if (TabPermissionController.CanViewPage()) { if (!CheckExpired()) { if ((PortalSettings.ActiveTab.StartDate < DateTime.Now && PortalSettings.ActiveTab.EndDate > DateTime.Now) || Globals.IsLayoutMode()) { if (PortalSettings.ActiveTab.Modules.Count > 0) { foreach (ModuleInfo objModule in PortalSettings.ActiveTab.Modules) { if (ModulePermissionController.CanViewModule(objModule) && objModule.IsDeleted == false) { if ((objModule.StartDate < DateTime.Now && objModule.EndDate > DateTime.Now) || Common.Globals.IsLayoutMode() || Common.Globals.IsEditMode()) { Pane pane = null; bool bFound = Panes.TryGetValue(objModule.PaneName.ToLowerInvariant(), out pane); if (!bFound) { bFound = Panes.TryGetValue(Common.Globals.glbDefaultPane.ToLowerInvariant(), out pane); } if (bFound) { bSuccess = InjectModule(pane, objModule); } else { ModuleLoadException lex; lex = new ModuleLoadException(PANE_LOAD_ERROR); Controls.Add(new ErrorContainer(PortalSettings, MODULELOAD_ERROR, lex).Container); Exceptions.LogException(lex); } } } } } } else { AddPageMessage(this, "", TABACCESS_ERROR, UI.Skins.Controls.ModuleMessage.ModuleMessageType.YellowWarning); } } else { AddPageMessage(this, "", string.Format(CONTRACTEXPIRED_ERROR, PortalSettings.PortalName, Common.Globals.GetMediumDate(PortalSettings.ExpiryDate.ToString()), PortalSettings.Email), UI.Skins.Controls.ModuleMessage.ModuleMessageType.RedError); } } else { Response.Redirect(Common.Globals.AccessDeniedURL(TABACCESS_ERROR), true); } return(bSuccess); }
/// <summary> /// 验证用户有无模块权限 /// </summary> /// <param name="AccessLevel"></param> /// <param name="permissionKey"></param> /// <param name="__ModuleConfiguration"></param> /// <param name="objUser"></param> /// <returns></returns> public static bool HasModuleAccess(SecurityAccessLevel AccessLevel, string permissionKey, ModuleInfo __ModuleConfiguration, UserInfo objUser) { bool blnAuthorized = false; if (objUser != null && objUser.IsSuperUser) { blnAuthorized = true; } else { switch (AccessLevel) { case SecurityAccessLevel.Anonymous: blnAuthorized = true; break; case SecurityAccessLevel.View: if (TabPermissionController.CanViewPage() || ModulePermissionController.CanViewModule(__ModuleConfiguration)) { blnAuthorized = true; } break; case SecurityAccessLevel.Edit: if (TabPermissionController.CanAddContentToPage()) { blnAuthorized = true; } else { if (string.IsNullOrEmpty(permissionKey)) { permissionKey = "CONTENT,DELETE,EDIT,EXPORT,IMPORT,MANAGE"; } if (__ModuleConfiguration != null && ModulePermissionController.CanViewModule(__ModuleConfiguration) && (ModulePermissionController.HasModulePermission(__ModuleConfiguration.ModulePermissions, permissionKey) || ModulePermissionController.HasModulePermission(__ModuleConfiguration.ModulePermissions, "EDIT"))) { blnAuthorized = true; } } break; case SecurityAccessLevel.Admin: if (TabPermissionController.CanAddContentToPage()) { blnAuthorized = true; } break; case SecurityAccessLevel.Host: break; } } return(blnAuthorized); }
protected bool GetModulePermission(int PortalID, string FriendlyName) { bool AllowAccess = Null.NullBoolean; ModuleInfo objModule = ModuleController.Instance.GetModuleByDefinition(PortalID, FriendlyName); if (objModule != null) { AllowAccess = ModulePermissionController.CanViewModule(objModule); } return(AllowAccess); }
public void ProcessRequest(HttpContext context) { try { var portalSettings = PortalController.GetCurrentPortalSettings(); if (context.Request.QueryString["tabid"] == null || context.Request.QueryString["mid"] == null) { return; } // get TabId var tabId = -1; if ((context.Request.QueryString["tabid"] != null)) { tabId = Int32.Parse(context.Request.QueryString["tabid"]); } // get ModuleId var moduleId = -1; if ((context.Request.QueryString["mid"] != null)) { moduleId = Int32.Parse(context.Request.QueryString["mid"]); } UserController.GetCurrentUserInfo(); var moduleController = new ModuleController(); var settings = moduleController.GetModuleSettings(moduleId); var moduleInfo = moduleController.GetModule(moduleId, tabId); if (context.Request.QueryString["showsource"] == null) { if (ModulePermissionController.CanViewModule(moduleInfo)) { RenderToResponseStream(context.Response, new XmlBaseController(moduleInfo)); } } else { if (ModulePermissionController.CanManageModule(moduleInfo)) { ShowSource(context.Response, moduleId, portalSettings.PortalId, settings); } } } catch (Exception ex) { context.Response.Write("Not defined"); } }
/// <inheritdoc/> public override bool HasViewPermission(SearchResult searchResult) { var viewable = false; if (searchResult.ModuleId > 0) { // Get All related tabIds from moduleId (while minimizing DB access; using caching) var moduleId = searchResult.ModuleId; // The next call has over 30% performance enhancement over the above one var tabModules = TabController.Instance.GetTabsByPortal(searchResult.PortalId).Values .SelectMany(tabinfo => tabinfo.ChildModules.Where(kv => kv.Key == moduleId)).Select(m => m.Value); foreach (ModuleInfo module in tabModules) { var tab = TabController.Instance.GetTab(module.TabID, searchResult.PortalId, false); if (this.ModuleIsAvailable(tab, module) && !tab.IsDeleted && !tab.DisableLink && TabPermissionController.CanViewPage(tab)) { // Check If authorised to View Module if (ModulePermissionController.CanViewModule(module) && this.HasModuleSearchPermission(module, searchResult)) { // Verify against search document permissions if (string.IsNullOrEmpty(searchResult.Permissions) || PortalSecurity.IsInRoles(searchResult.Permissions)) { viewable = true; if (string.IsNullOrEmpty(searchResult.Url)) { searchResult.Url = this.GetModuleSearchUrl(module, searchResult); if (string.IsNullOrEmpty(searchResult.Url)) { searchResult.Url = TestableGlobals.Instance.NavigateURL(module.TabID, string.Empty, searchResult.QueryString); } } break; } } } } } else { viewable = true; } return(viewable); }
public override bool IsAuthorized(AuthFilterContext context) { using (APIAccessService apiAccessService = new APIAccessService()) { if (DomainUtility.IsTestEnvironment) { return(true); } else { ModuleController mc = new ModuleController(); ModuleInfo mi = mc.GetModuleByDefinition(PortalController.Instance.GetCurrentPortalSettings().PortalId, AuthModuleFriendlyName); return(ModulePermissionController.CanViewModule(mi)); } } }
private bool CanViewGroupMembers(int portalId, int groupId) { var group = RoleController.Instance.GetRole(portalId, r => r.RoleID == groupId); if (group == null) { return(false); } var canView = (group.SecurityMode == SecurityMode.SecurityRole) ? (PortalSettings.UserInfo.IsInRole(PortalSettings.AdministratorRoleName)) : (PortalSettings.UserInfo.IsInRole(group.RoleName)); //if current user can view the group page and group is public, then should be able to view members. if (!canView) { canView = ModulePermissionController.CanViewModule(ActiveModule) && group.IsPublic; } return(canView); }
private void LoadInstances() { cboInstances.Items.Clear(); foreach (ModuleInfo objModule in PortalSettings.ActiveTab.Modules) { //if user is allowed to view module and module is not deleted if (ModulePermissionController.CanViewModule(objModule) && objModule.IsDeleted == false) { //modules which are displayed on all tabs should not be displayed on the Admin or Super tabs if (objModule.AllTabs == false || PortalSettings.ActiveTab.IsSuperTab == false) { if (objModule.PaneName == cboPanes.SelectedItem.Value) { cboInstances.Items.Add(new ListItem(objModule.ModuleTitle, objModule.ModuleOrder.ToString())); } } } } cboInstances.Items.Insert(0, new ListItem("", "")); }
private int GetPaneModuleOrder(string pane, int sort) { var items = new List <int>(); foreach (ModuleInfo m in PortalSettings.Current.ActiveTab.Modules) { //if user is allowed to view module and module is not deleted if (ModulePermissionController.CanViewModule(m) && !m.IsDeleted) { //modules which are displayed on all tabs should not be displayed on the Admin or Super tabs if (!m.AllTabs || !PortalSettings.Current.ActiveTab.IsSuperTab) { if (string.Equals(m.PaneName, pane, StringComparison.OrdinalIgnoreCase)) { int moduleOrder = m.ModuleOrder; while (items.Contains(moduleOrder) || moduleOrder == 0) { moduleOrder++; } items.Add(moduleOrder); } } } } items.Sort(); if (items.Count > sort) { var itemOrder = items[sort]; return(itemOrder - 1); } else if (items.Count > 0) { return(items.Last() + 1); } return(0); }
public ContextSecurity(ModuleInfo objModule) { user = UserController.Instance.GetCurrentUserInfo(); if (user.IsSuperUser) { CanView = CanEdit = IsAdmin = true; } else { IsAdmin = PortalSecurity.IsInRole(PortalSettings.Current.AdministratorRoleName); if (IsAdmin) { CanView = CanEdit = true; } else { CanView = ModulePermissionController.CanViewModule(objModule); CanEdit = ModulePermissionController.HasModulePermission(objModule.ModulePermissions, "EDIT"); } } }
private bool ProcessModule(ModuleInfo module) { bool success = true; if (ModulePermissionController.CanViewModule(module) && module.IsDeleted == false && ((module.StartDate < DateTime.Now && module.EndDate > DateTime.Now) || Globals.IsLayoutMode() || Globals.IsEditMode())) { Pane pane = GetPane(module); if (pane != null) { success = InjectModule(pane, module); } else { var lex = new ModuleLoadException(Localization.GetString("PaneNotFound.Error")); Controls.Add(new ErrorContainer(PortalSettings, MODULELOAD_ERROR, lex).Container); Exceptions.LogException(lex); } } return(success); }
/// ----------------------------------------------------------------------------- /// <summary> /// This routine creates the Installer /// </summary> /// <history> /// [cnurse] 07/26/2007 Created /// </history> /// ----------------------------------------------------------------------------- private void CreateInstaller() { CheckSecurity(); _Installer = new Installer(TempInstallFolder, ManifestFile, Request.MapPath("."), false); //The Installer is created automatically with a SecurityAccessLevel of Host //Check if the User has lowere Security and update as neccessary if (!ModuleContext.PortalSettings.UserInfo.IsSuperUser) { if (ModuleContext.PortalSettings.UserInfo.IsInRole(ModuleContext.PortalSettings.AdministratorRoleName)) { //Admin User Installer.InstallerInfo.SecurityAccessLevel = SecurityAccessLevel.Admin; } else if (ModulePermissionController.CanAdminModule(ModuleContext.Configuration)) { //Has Edit rights Installer.InstallerInfo.SecurityAccessLevel = SecurityAccessLevel.Edit; } else if (ModulePermissionController.CanViewModule(ModuleContext.Configuration)) { //Has View rights Installer.InstallerInfo.SecurityAccessLevel = SecurityAccessLevel.View; } else { Installer.InstallerInfo.SecurityAccessLevel = SecurityAccessLevel.Anonymous; } } Installer.InstallerInfo.PortalID = InstallPortalId; //Read the manifest if (Installer.InstallerInfo.ManifestFile != null) { Installer.ReadManifest(true); } }
public ContextSecurity(ModuleInfo objModule) { user = UserController.Instance.GetCurrentUserInfo(); if (user.IsSuperUser) { CanView = CanEdit = CanSubmitSessions = CanAttend = CanManage = IsAdmin = true; } else { IsAdmin = PortalSecurity.IsInRole(PortalSettings.Current.AdministratorRoleName); if (IsAdmin) { CanView = CanEdit = CanSubmitSessions = CanAttend = CanManage = true; } else { CanView = ModulePermissionController.CanViewModule(objModule); CanEdit = ModulePermissionController.HasModulePermission(objModule.ModulePermissions, "EDIT"); CanSubmitSessions = ModulePermissionController.HasModulePermission(objModule.ModulePermissions, "SESSIONSUBMIT"); CanAttend = ModulePermissionController.HasModulePermission(objModule.ModulePermissions, "CANATTEND"); CanManage = ModulePermissionController.HasModulePermission(objModule.ModulePermissions, "MANAGE"); } } }
private SiteDetail GetSiteDetails(string moduleList) { var siteDetails = new SiteDetail { SiteName = PortalSettings.PortalName, DnnVersion = _dnnVersion, IsHost = UserInfo.IsSuperUser, IsAdmin = UserInfo.IsInRole("Administrators") }; foreach (var moduleName in (moduleList ?? "").Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { var modulesCollection = GetTabModules((moduleName ?? "").Trim()) .Where(tabmodule => TabPermissionController.CanViewPage(tabmodule.TabInfo) && ModulePermissionController.CanViewModule(tabmodule.ModuleInfo)); foreach (var tabmodule in modulesCollection) { var moduleDetail = new ModuleDetail { ModuleName = moduleName, ModuleVersion = tabmodule.ModuleVersion }; moduleDetail.ModuleInstances.Add(new ModuleInstance { TabId = tabmodule.TabInfo.TabID, ModuleId = tabmodule.ModuleInfo.ModuleID, PageName = tabmodule.TabInfo.TabName, PagePath = tabmodule.TabInfo.TabPath }); siteDetails.Modules.Add(moduleDetail); } } return(siteDetails); }
/// <summary> /// This method. /// </summary> /// <param name="channelName"></param> /// <param name="userName"></param> /// <remarks></remarks> protected override void PopulateChannel(string channelName, string userName) { ModuleInfo objModule; if (this.Request == null || this.Settings == null || this.Settings.ActiveTab == null || this.ModuleId == Null.NullInteger) { return; } this.Channel["title"] = this.Settings.PortalName; this.Channel["link"] = Globals.AddHTTP(Globals.GetDomainName(this.Request)); if (!string.IsNullOrEmpty(this.Settings.Description)) { this.Channel["description"] = this.Settings.Description; } else { this.Channel["description"] = this.Settings.PortalName; } this.Channel["language"] = this.Settings.DefaultLanguage; this.Channel["copyright"] = !string.IsNullOrEmpty(this.Settings.FooterText) ? this.Settings.FooterText.Replace("[year]", DateTime.Now.Year.ToString()) : string.Empty; this.Channel["webMaster"] = this.Settings.Email; IList <SearchResult> searchResults = null; var query = new SearchQuery(); query.PortalIds = new[] { this.Settings.PortalId }; query.TabId = this.TabId; query.ModuleId = this.ModuleId; query.SearchTypeIds = new[] { SearchHelper.Instance.GetSearchTypeByName("module").SearchTypeId }; try { searchResults = SearchController.Instance.ModuleSearch(query).Results; } catch (Exception ex) { Exceptions.Exceptions.LogException(ex); } if (searchResults != null) { foreach (var result in searchResults) { if (!result.UniqueKey.StartsWith(Constants.ModuleMetaDataPrefixTag) && TabPermissionController.CanViewPage()) { if (this.Settings.ActiveTab.StartDate < DateTime.Now && this.Settings.ActiveTab.EndDate > DateTime.Now) { objModule = ModuleController.Instance.GetModule(result.ModuleId, query.TabId, false); if (objModule != null && objModule.DisplaySyndicate && objModule.IsDeleted == false) { if (ModulePermissionController.CanViewModule(objModule)) { if (Convert.ToDateTime(objModule.StartDate == Null.NullDate ? DateTime.MinValue : objModule.StartDate) < DateTime.Now && Convert.ToDateTime(objModule.EndDate == Null.NullDate ? DateTime.MaxValue : objModule.EndDate) > DateTime.Now) { this.Channel.Items.Add(this.GetRssItem(result)); } } } } } } } }
public void BindAll(int tabID) { TabID = tabID; var currentTab = TabController.Instance.GetTab(tabID, PortalSettings.PortalId, false); //Unique id of default language page var uniqueId = currentTab.DefaultLanguageGuid != Null.NullGuid ? currentTab.DefaultLanguageGuid : currentTab.UniqueId; // get all non admin pages and not deleted var allPages = TabController.Instance.GetTabsByPortal(PortalSettings.PortalId).Values.Where(t => t.TabID != PortalSettings.AdminTabId && (Null.IsNull(t.ParentId) || t.ParentId != PortalSettings.AdminTabId)); allPages = allPages.Where(t => t.IsDeleted == false); // get all localized pages of current page var tabInfos = allPages as IList <TabInfo> ?? allPages.ToList(); var localizedPages = tabInfos.Where(t => t.DefaultLanguageGuid == uniqueId || t.UniqueId == uniqueId).OrderBy(t => t.DefaultLanguageGuid).ToList(); Dictionary <string, TabInfo> localizedTabs = null; // we are going to build up a list of locales // this is a bit more involved, since we want the default language to be first. // also, we do not want to add any locales the user has no access to var locales = new List <string>(); var localeController = new LocaleController(); var localeDict = localeController.GetLocales(PortalSettings.PortalId); if (localeDict.Count > 0) { if (localizedPages.Count() == 1 && localizedPages.First().CultureCode == "") { // locale neutral page locales.Add(""); } else if (localizedPages.Count() == 1 && localizedPages.First().CultureCode != PortalSettings.DefaultLanguage) { locales.Add(localizedPages.First().CultureCode); localizedTabs = new Dictionary <string, TabInfo>(); localizedTabs.Add(localizedPages.First().CultureCode, localizedPages.First()); } else { //force sort order, so first add default language locales.Add(PortalSettings.DefaultLanguage); // build up a list of localized tabs. // depending on whether or not the selected page is in the default langauge // we will add the localized tabs from the current page // or from the defaultlanguage page if (currentTab.CultureCode == PortalSettings.DefaultLanguage) { localizedTabs = currentTab.LocalizedTabs; } else { // selected page is not in default language // add localizedtabs from defaultlanguage page if (currentTab.DefaultLanguageTab != null) { localizedTabs = currentTab.DefaultLanguageTab.LocalizedTabs; } } if (localizedTabs != null) { // only add locales from tabs the user has at least view permissions to. // we will handle the edit permissions at a later stage locales.AddRange(from localizedTab in localizedTabs where TabPermissionController.CanViewPage(localizedTab.Value) select localizedTab.Value.CultureCode); } } } else { locales.Add(""); } Data = new DnnPages(locales); // filter the list of localized pages to only those that have a culture we want to see var viewableLocalizedPages = localizedPages.Where(localizedPage => locales.Find(locale => locale == localizedPage.CultureCode) != null).ToList(); if (viewableLocalizedPages.Count() > 4) { mainContainer.Attributes.Add("class", "container RadGrid RadGrid_Default overflow"); } foreach (var tabInfo in viewableLocalizedPages) { var localTabInfo = tabInfo; var dnnPage = Data.Page(localTabInfo.CultureCode); if (!TabPermissionController.CanViewPage(tabInfo)) { Data.RemoveLocale(localTabInfo.CultureCode); Data.Pages.Remove(dnnPage); break; } dnnPage.TabID = localTabInfo.TabID; dnnPage.TabName = localTabInfo.TabName; dnnPage.Title = localTabInfo.Title; dnnPage.Description = localTabInfo.Description; dnnPage.Path = localTabInfo.TabPath.Substring(0, localTabInfo.TabPath.LastIndexOf("//", StringComparison.Ordinal)).Replace("//", ""); dnnPage.HasChildren = (TabController.Instance.GetTabsByPortal(PortalSettings.PortalId).WithParentId(tabInfo.TabID).Count != 0); dnnPage.CanAdminPage = TabPermissionController.CanAdminPage(tabInfo); dnnPage.CanViewPage = TabPermissionController.CanViewPage(tabInfo); dnnPage.LocalResourceFile = LocalResourceFile; // calculate position in the form of 1.3.2... var SiblingTabs = tabInfos.Where(t => t.ParentId == localTabInfo.ParentId && t.CultureCode == localTabInfo.CultureCode || t.CultureCode == null).OrderBy(t => t.TabOrder).ToList(); dnnPage.Position = (SiblingTabs.IndexOf(localTabInfo) + 1).ToString(CultureInfo.InvariantCulture); int ParentTabId = localTabInfo.ParentId; while (ParentTabId > 0) { TabInfo ParentTab = tabInfos.Single(t => t.TabID == ParentTabId); int id = ParentTabId; SiblingTabs = tabInfos.Where(t => t.ParentId == id && t.CultureCode == localTabInfo.CultureCode || t.CultureCode == null).OrderBy(t => t.TabOrder).ToList(); dnnPage.Position = (SiblingTabs.IndexOf(localTabInfo) + 1).ToString(CultureInfo.InvariantCulture) + "." + dnnPage.Position; ParentTabId = ParentTab.ParentId; } dnnPage.DefaultLanguageGuid = localTabInfo.DefaultLanguageGuid; dnnPage.IsTranslated = localTabInfo.IsTranslated; dnnPage.IsPublished = TabController.Instance.IsTabPublished(localTabInfo); // generate modules information foreach (var moduleInfo in ModuleController.Instance.GetTabModules(localTabInfo.TabID).Values) { var guid = moduleInfo.DefaultLanguageGuid == Null.NullGuid ? moduleInfo.UniqueId : moduleInfo.DefaultLanguageGuid; var dnnModules = Data.Module(guid); // modules of each language var dnnModule = dnnModules.Module(localTabInfo.CultureCode); // detect error : 2 modules with same uniqueId on the same page dnnModule.LocalResourceFile = LocalResourceFile; if (dnnModule.TabModuleID > 0) { dnnModule.ErrorDuplicateModule = true; ErrorExists = true; continue; } dnnModule.ModuleTitle = moduleInfo.ModuleTitle; dnnModule.DefaultLanguageGuid = moduleInfo.DefaultLanguageGuid; dnnModule.TabId = localTabInfo.TabID; dnnModule.TabModuleID = moduleInfo.TabModuleID; dnnModule.ModuleID = moduleInfo.ModuleID; dnnModule.CanAdminModule = ModulePermissionController.CanAdminModule(moduleInfo); dnnModule.CanViewModule = ModulePermissionController.CanViewModule(moduleInfo); dnnModule.IsDeleted = moduleInfo.IsDeleted; if (moduleInfo.DefaultLanguageGuid != Null.NullGuid) { ModuleInfo defaultLanguageModule = ModuleController.Instance.GetModuleByUniqueID(moduleInfo.DefaultLanguageGuid); if (defaultLanguageModule != null) { dnnModule.DefaultModuleID = defaultLanguageModule.ModuleID; if (defaultLanguageModule.ParentTab.UniqueId != moduleInfo.ParentTab.DefaultLanguageGuid) { dnnModule.DefaultTabName = defaultLanguageModule.ParentTab.TabName; } } } dnnModule.IsTranslated = moduleInfo.IsTranslated; dnnModule.IsLocalized = moduleInfo.IsLocalized; dnnModule.IsShared = TabController.Instance.GetTabsByModuleID(moduleInfo.ModuleID).Values.Count(t => t.CultureCode == moduleInfo.CultureCode) > 1; // detect error : the default language module is on an other page dnnModule.ErrorDefaultOnOtherTab = moduleInfo.DefaultLanguageGuid != Null.NullGuid && moduleInfo.DefaultLanguageModule == null; // detect error : different culture on tab and module dnnModule.ErrorCultureOfModuleNotCultureOfTab = moduleInfo.CultureCode != localTabInfo.CultureCode; ErrorExists = ErrorExists || dnnModule.ErrorDefaultOnOtherTab || dnnModule.ErrorCultureOfModuleNotCultureOfTab; } } rDnnModules.DataSource = Data.Modules; rDnnModules.DataBind(); }
protected virtual bool HasToolPermissions(string toolName) { bool isHostTool = false; if (this.ToolInfo.ToolName == toolName) { isHostTool = this.ToolInfo.IsHostTool; } else if (this.AllTools.ContainsKey(toolName)) { isHostTool = this.AllTools[toolName].IsHostTool; } if (isHostTool && !UserController.Instance.GetCurrentUserInfo().IsSuperUser) { return(false); } bool returnValue = true; switch (toolName) { case "PageSettings": case "CopyDesignToChildren": case "CopyPermissionsToChildren": returnValue = TabPermissionController.CanManagePage(); if (returnValue && toolName == "CopyPermissionsToChildren") { if (!PortalSecurity.IsInRole("Administrators")) { returnValue = false; } } break; case "CopyPage": returnValue = TabPermissionController.CanCopyPage(); break; case "DeletePage": returnValue = TabPermissionController.CanDeletePage(); break; case "ImportPage": returnValue = TabPermissionController.CanImportPage(); break; case "ExportPage": returnValue = TabPermissionController.CanExportPage(); break; case "NewPage": returnValue = TabPermissionController.CanAddPage(); break; case "Help": returnValue = !string.IsNullOrEmpty(Host.HelpURL); break; default: // if it has a module definition, look it up and check permissions // if it doesn't exist, assume no permission string friendlyName = string.Empty; if (this.ToolInfo.ToolName == toolName) { friendlyName = this.ToolInfo.ModuleFriendlyName; } else if (this.AllTools.ContainsKey(toolName)) { friendlyName = this.AllTools[toolName].ModuleFriendlyName; } if (!string.IsNullOrEmpty(friendlyName)) { returnValue = false; ModuleInfo moduleInfo; if (isHostTool) { moduleInfo = GetInstalledModule(Null.NullInteger, friendlyName); } else { moduleInfo = GetInstalledModule(PortalSettings.PortalId, friendlyName); } if (moduleInfo != null) { returnValue = ModulePermissionController.CanViewModule(moduleInfo); } } break; } return(returnValue); }
/// ----------------------------------------------------------------------------- /// <summary> /// GetSearchResults gets the search results for a passed in criteria string /// </summary> /// <remarks> /// </remarks> /// <param name="portalId">A Id of the Portal</param> /// <param name="criteria">The criteria string</param> /// ----------------------------------------------------------------------------- public override SearchResultsInfoCollection GetSearchResults(int portalId, string criteria) { bool hasExcluded = Null.NullBoolean; bool hasMandatory = Null.NullBoolean; var portal = PortalController.Instance.GetPortal(portalId); //Get the Settings for this Portal var portalSettings = new PortalSettings(portal); //We will assume that the content is in the locale of the Portal Hashtable commonWords = GetCommonWords(portalSettings.DefaultLanguage); //clean criteria criteria = criteria.ToLower(); //split search criteria into words var searchWords = new SearchCriteriaCollection(criteria); var searchResults = new Dictionary <string, SearchResultsInfoCollection>(); //dicResults is a Dictionary(Of SearchItemID, Dictionary(Of TabID, SearchResultsInfo) var dicResults = new Dictionary <int, Dictionary <int, SearchResultsInfo> >(); //iterate through search criteria words foreach (SearchCriteria criterion in searchWords) { if (commonWords.ContainsKey(criterion.Criteria) == false || portalSettings.SearchIncludeCommon) { if (!searchResults.ContainsKey(criterion.Criteria)) { searchResults.Add(criterion.Criteria, SearchDataStoreController.GetSearchResults(portalId, criterion.Criteria)); } if (searchResults.ContainsKey(criterion.Criteria)) { foreach (SearchResultsInfo result in searchResults[criterion.Criteria]) { //Add results to dicResults if (!criterion.MustExclude) { if (dicResults.ContainsKey(result.SearchItemID)) { //The Dictionary exists for this SearchItemID already so look in the TabId keyed Sub-Dictionary Dictionary <int, SearchResultsInfo> dic = dicResults[result.SearchItemID]; if (dic.ContainsKey(result.TabId)) { //The sub-Dictionary contains the item already so update the relevance SearchResultsInfo searchResult = dic[result.TabId]; searchResult.Relevance += result.Relevance; } else { //Add Entry to Sub-Dictionary dic.Add(result.TabId, result); } } else { //Create new TabId keyed Dictionary var dic = new Dictionary <int, SearchResultsInfo>(); dic.Add(result.TabId, result); //Add new Dictionary to SearchResults dicResults.Add(result.SearchItemID, dic); } } } } } } foreach (SearchCriteria criterion in searchWords) { var mandatoryResults = new Dictionary <int, bool>(); var excludedResults = new Dictionary <int, bool>(); if (searchResults.ContainsKey(criterion.Criteria)) { foreach (SearchResultsInfo result in searchResults[criterion.Criteria]) { if (criterion.MustInclude) { //Add to mandatory results lookup mandatoryResults[result.SearchItemID] = true; hasMandatory = true; } else if (criterion.MustExclude) { //Add to exclude results lookup excludedResults[result.SearchItemID] = true; hasExcluded = true; } } } foreach (KeyValuePair <int, Dictionary <int, SearchResultsInfo> > kvpResults in dicResults) { //The key of this collection is the SearchItemID, Check if the value of this collection should be processed if (hasMandatory && (!mandatoryResults.ContainsKey(kvpResults.Key))) { //1. If mandatoryResults exist then only process if in mandatoryResults Collection foreach (SearchResultsInfo result in kvpResults.Value.Values) { result.Delete = true; } } else if (hasExcluded && (excludedResults.ContainsKey(kvpResults.Key))) { //2. Do not process results in the excludedResults Collection foreach (SearchResultsInfo result in kvpResults.Value.Values) { result.Delete = true; } } } } //Process results against permissions and mandatory and excluded results var results = new SearchResultsInfoCollection(); foreach (KeyValuePair <int, Dictionary <int, SearchResultsInfo> > kvpResults in dicResults) { foreach (SearchResultsInfo result in kvpResults.Value.Values) { if (!result.Delete) { //Check If authorised to View Tab TabInfo objTab = TabController.Instance.GetTab(result.TabId, portalId, false); if (TabPermissionController.CanViewPage(objTab)) { //Check If authorised to View Module ModuleInfo objModule = ModuleController.Instance.GetModule(result.ModuleId, result.TabId, false); if (ModulePermissionController.CanViewModule(objModule)) { results.Add(result); } } } } } //Return Search Results Collection return(results); }
public HttpResponseMessage Atom(string key, bool withImages = false) { var statusCode = HttpStatusCode.InternalServerError; var logType = EventLogController.EventLogType.HOST_ALERT; var tabId = -1; var moduleId = -1; try { DecryptParameters(key, out tabId, out moduleId); var module = ModuleController.Instance.GetModule(moduleId, tabId, false); var settings = GetModuleSettings(module); if (settings == null) { statusCode = HttpStatusCode.BadRequest; logType = EventLogController.EventLogType.ADMIN_ALERT; throw new Exception("Stream module not found."); } if (!settings.EnableFeed) { Request.CreateResponse(HttpStatusCode.Forbidden); } if (!ModulePermissionController.CanViewModule(module)) { Request.CreateResponse(HttpStatusCode.Unauthorized); } var newsEntries = GetNewsEntries(module, settings); if (newsEntries == null) { throw new Exception("Error reading news entries for module."); } var writer = new Utf8StringWriter(); var xmlWriter = XmlWriter.Create(writer, new XmlWriterSettings { Indent = true, IndentChars = " ", Encoding = Encoding.UTF8 }); var feed = new AtomFeed(); feed.Render(xmlWriter, newsEntries, module, PortalSettings, Request.RequestUri.ToString(), withImages); return(new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(writer.ToString(), Encoding.UTF8, "text/xml") }); } catch (Exception ex) { var log = new LogInfo(); log.AddProperty("Source", GetType().FullName); log.AddProperty("PortalId", PortalSettings.PortalId.ToString()); log.AddProperty("TabId", tabId.ToString()); log.AddProperty("ModuleId", moduleId.ToString()); log.AddProperty("RawUrl", Request.GetHttpContext().Request.RawUrl); log.AddProperty("Referrer", Request.GetHttpContext().Request.UrlReferrer?.ToString()); log.LogPortalID = PortalSettings.PortalId; log.LogUserID = UserInfo?.UserID ?? -1; log.LogUserName = UserInfo?.Username ?? "Unknown"; log.LogTypeKey = logType.ToString(); log.Exception = new ExceptionInfo(ex); EventLogController.Instance.AddLog(log); return(Request.CreateResponse(statusCode)); } }