Exemplo n.º 1
0
        // 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);
        }
Exemplo n.º 2
0
        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)));
        }
Exemplo n.º 4
0
 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()));
 }
Exemplo n.º 7
0
        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;
            }
        }
Exemplo n.º 8
0
        /// <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));
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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");
            }
        }
Exemplo n.º 13
0
        /// <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));
                }
            }
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 16
0
 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("", ""));
 }
Exemplo n.º 17
0
        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);
        }
Exemplo n.º 18
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");
         }
     }
 }
Exemplo n.º 19
0
        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);
            }
        }
Exemplo n.º 21
0
 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);
        }
Exemplo n.º 23
0
        /// <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));
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 24
0
        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();
        }
Exemplo n.º 25
0
        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);
        }
Exemplo n.º 26
0
        /// -----------------------------------------------------------------------------
        /// <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);
        }
Exemplo n.º 27
0
        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));
            }
        }