예제 #1
0
        private bool ProcessSlaveModule()
        {
            var success     = true;
            var key         = UIUtilities.GetControlKey();
            var moduleId    = UIUtilities.GetModuleId(key);
            var slaveModule = UIUtilities.GetSlaveModule(moduleId, key, this.PortalSettings.ActiveTab.TabID);

            Pane pane;

            this.Panes.TryGetValue(Globals.glbDefaultPane.ToLowerInvariant(), out pane);
            slaveModule.PaneName     = Globals.glbDefaultPane;
            slaveModule.ContainerSrc = this.PortalSettings.ActiveTab.ContainerSrc;
            if (string.IsNullOrEmpty(slaveModule.ContainerSrc))
            {
                slaveModule.ContainerSrc = this.PortalSettings.DefaultPortalContainer;
            }

            slaveModule.ContainerSrc  = SkinController.FormatSkinSrc(slaveModule.ContainerSrc, this.PortalSettings);
            slaveModule.ContainerPath = SkinController.FormatSkinPath(slaveModule.ContainerSrc);

            var moduleControl = ModuleControlController.GetModuleControlByControlKey(key, slaveModule.ModuleDefID);

            if (moduleControl != null)
            {
                slaveModule.ModuleControlId = moduleControl.ModuleControlID;
                slaveModule.IconFile        = moduleControl.IconFile;

                string permissionKey;
                switch (slaveModule.ModuleControl.ControlSrc)
                {
                case "Admin/Modules/ModuleSettings.ascx":
                    permissionKey = "MANAGE";
                    break;

                case "Admin/Modules/Import.ascx":
                    permissionKey = "IMPORT";
                    break;

                case "Admin/Modules/Export.ascx":
                    permissionKey = "EXPORT";
                    break;

                default:
                    permissionKey = "CONTENT";
                    break;
                }

                if (ModulePermissionController.HasModuleAccess(slaveModule.ModuleControl.ControlType, permissionKey, slaveModule))
                {
                    success = this.InjectModule(pane, slaveModule);
                }
                else
                {
                    this.Response.Redirect(Globals.AccessDeniedURL(Localization.GetString("ModuleAccess.Error")), true);
                }
            }

            return(success);
        }
예제 #2
0
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            jQuery.RequestDnnPluginsRegistration();

            var objModules = new ModuleController();
            ModuleControlInfo objModuleControlInfo;

            //get ModuleId
            if ((Request.QueryString["ModuleId"] != null))
            {
                _moduleId = Int32.Parse(Request.QueryString["ModuleId"]);
            }
            if (Module.ContentItemId == Null.NullInteger && Module.ModuleID != Null.NullInteger)
            {
                //This tab does not have a valid ContentItem
                objModules.CreateContentItem(Module);

                objModules.UpdateModule(Module);
            }

            //Verify that the current user has access to edit this module
            if (!ModulePermissionController.HasModuleAccess(SecurityAccessLevel.Admin, "MANAGE", Module))
            {
                Response.Redirect(Globals.AccessDeniedURL(), true);
            }
            if (Module != null)
            {
                //get module
                TabModuleId = Module.TabModuleID;

                //get Settings Control
                objModuleControlInfo = ModuleControlController.GetModuleControlByControlKey("Settings", Module.ModuleDefID);

                if (objModuleControlInfo != null)
                {
                    _control = ControlUtilities.LoadControl <Control>(Page, objModuleControlInfo.ControlSrc);

                    var settingsControl = _control as ISettingsControl;
                    if (settingsControl != null)
                    {
                        //Set ID
                        _control.ID = Path.GetFileNameWithoutExtension(objModuleControlInfo.ControlSrc).Replace('.', '-');

                        //add module settings
                        settingsControl.ModuleContext.Configuration = Module;

                        hlSpecificSettings.Text = Localization.GetString("ControlTitle_settings", settingsControl.LocalResourceFile);
                        if (String.IsNullOrEmpty(hlSpecificSettings.Text))
                        {
                            hlSpecificSettings.Text = String.Format(Localization.GetString("ControlTitle_settings", LocalResourceFile), Module.DesktopModule.FriendlyName);
                        }
                        pnlSpecific.Controls.Add(_control);
                    }
                }
            }
        }
예제 #3
0
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            if (!this.UserInfo.IsSuperUser && !this.UserInfo.IsInRole(this.PortalSettings.AdministratorRoleName))
            {
                this.Response.Redirect(Globals.AccessDeniedURL(), true);
            }
        }
예제 #4
0
        private bool ProcessMasterModules()
        {
            bool success = true;

            if (TabPermissionController.CanViewPage())
            {
                // Versioning checks.
                if (!TabController.CurrentPage.HasAVisibleVersion)
                {
                    Response.Redirect(Globals.NavigateURL(PortalSettings.ErrorPage404, string.Empty, "status=404"));
                }

                int urlVersion;
                if (TabVersionUtils.TryGetUrlVersion(out urlVersion))
                {
                    if (!TabVersionUtils.CanSeeVersionedPages())
                    {
                        AddPageMessage(this, "", Localization.GetString("TabAccess.Error"),
                                       ModuleMessage.ModuleMessageType.YellowWarning);
                        return(true);
                    }

                    if (TabVersionController.Instance.GetTabVersions(TabController.CurrentPage.TabID).All(tabVersion => tabVersion.Version != urlVersion))
                    {
                        Response.Redirect(Globals.NavigateURL(PortalSettings.ErrorPage404, string.Empty, "status=404"));
                    }
                }

                //check portal expiry date
                if (!CheckExpired())
                {
                    if ((PortalSettings.ActiveTab.StartDate < DateAndTime.Now && PortalSettings.ActiveTab.EndDate > DateAndTime.Now) || TabPermissionController.CanAdminPage() || Globals.IsLayoutMode())
                    {
                        foreach (var objModule in PortalSettingsController.Instance().GetTabModules(PortalSettings))
                        {
                            success = ProcessModule(objModule);
                        }
                    }
                    else
                    {
                        AddPageMessage(this, "", Localization.GetString("TabAccess.Error"), ModuleMessage.ModuleMessageType.YellowWarning);
                    }
                }
                else
                {
                    AddPageMessage(this,
                                   "",
                                   string.Format(Localization.GetString("ContractExpired.Error"), PortalSettings.PortalName, Globals.GetMediumDate(PortalSettings.ExpiryDate.ToString()), PortalSettings.Email),
                                   ModuleMessage.ModuleMessageType.RedError);
                }
            }
            else
            {
                Response.Redirect(Globals.AccessDeniedURL(Localization.GetString("TabAccess.Error")), true);
            }
            return(success);
        }
예제 #5
0
        /// <summary>
        /// Handle access denied errors by displaying an error message
        /// or by performing a redirect to a predefined "access denied URL".
        /// </summary>
        /// <param name="redirect"></param>
        private void HandleAccesDenied(bool redirect = false)
        {
            var message = Localization.GetString("TabAccess.Error");

            if (redirect)
            {
                var redirectUrl = Globals.AccessDeniedURL(message);
                this.Response.Redirect(redirectUrl, true);
            }
            else
            {
                AddPageMessage(this, string.Empty, message, ModuleMessage.ModuleMessageType.YellowWarning);
            }
        }
예제 #6
0
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            // get ModuleId
            if (this.Request.QueryString["ModuleId"] != null)
            {
                this._moduleId = int.Parse(this.Request.QueryString["ModuleId"]);
            }

            // Verify that the current user has access to edit this module
            if (!ModulePermissionController.HasModuleAccess(SecurityAccessLevel.ViewPermissions, string.Empty, this.Module))
            {
                this.Response.Redirect(Globals.AccessDeniedURL(), true);
            }
        }
예제 #7
0
        private bool ProcessMasterModules()
        {
            bool success = true;

            if (TabPermissionController.CanViewPage())
            {
                //check portal expiry date
                if (!CheckExpired())
                {
                    if ((PortalSettings.ActiveTab.StartDate < DateAndTime.Now && PortalSettings.ActiveTab.EndDate > DateAndTime.Now) || TabPermissionController.CanAdminPage() || Globals.IsLayoutMode())
                    {
                        //dynamically populate the panes with modules
                        if (PortalSettings.ActiveTab.Modules.Count > 0)
                        {
                            foreach (ModuleInfo objModule in PortalSettings.ActiveTab.Modules)
                            {
                                success = ProcessModule(objModule);
                            }
                        }
                    }
                    else
                    {
                        AddPageMessage(this, "", Localization.GetString("TabAccess.Error"), ModuleMessage.ModuleMessageType.YellowWarning);
                    }
                }
                else
                {
                    AddPageMessage(this,
                                   "",
                                   string.Format(Localization.GetString("ContractExpired.Error"), PortalSettings.PortalName, Globals.GetMediumDate(PortalSettings.ExpiryDate.ToString()), PortalSettings.Email),
                                   ModuleMessage.ModuleMessageType.RedError);
                }
            }
            else
            {
                Response.Redirect(Globals.AccessDeniedURL(Localization.GetString("TabAccess.Error")), true);
            }
            return(success);
        }
예제 #8
0
        private bool ProcessSlaveModule()
        {
            var success     = true;
            var key         = UIUtilities.GetControlKey();
            var moduleId    = UIUtilities.GetModuleId(key);
            var slaveModule = UIUtilities.GetSlaveModule(moduleId, key, PortalSettings.ActiveTab.TabID);

            Pane pane;

            Panes.TryGetValue(Globals.glbDefaultPane.ToLowerInvariant(), out pane);
            slaveModule.PaneName     = Globals.glbDefaultPane;
            slaveModule.ContainerSrc = PortalSettings.ActiveTab.ContainerSrc;
            if (String.IsNullOrEmpty(slaveModule.ContainerSrc))
            {
                slaveModule.ContainerSrc = PortalSettings.DefaultPortalContainer;
            }
            slaveModule.ContainerSrc  = SkinController.FormatSkinSrc(slaveModule.ContainerSrc, PortalSettings);
            slaveModule.ContainerPath = SkinController.FormatSkinPath(slaveModule.ContainerSrc);

            var moduleControl = ModuleControlController.GetModuleControlByControlKey(key, slaveModule.ModuleDefID);

            if (moduleControl != null)
            {
                slaveModule.ModuleControlId = moduleControl.ModuleControlID;
                slaveModule.IconFile        = moduleControl.IconFile;
                if (ModulePermissionController.HasModuleAccess(slaveModule.ModuleControl.ControlType, Null.NullString, slaveModule))
                {
                    success = InjectModule(pane, slaveModule);
                }
                else
                {
                    Response.Redirect(Globals.AccessDeniedURL(Localization.GetString("ModuleAccess.Error")), true);
                }
            }

            return(success);
        }
예제 #9
0
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            try
            {
                chkAllTabs.CheckedChanged            += OnAllTabsCheckChanged;
                chkInheritPermissions.CheckedChanged += OnInheritPermissionsChanged;
                chkWebSlice.CheckedChanged           += OnWebSliceCheckChanged;
                cboCacheProvider.TextChanged         += OnCacheProviderIndexChanged;
                cmdDelete.Click += OnDeleteClick;
                cmdUpdate.Click += OnUpdateClick;

                JavaScript.RequestRegistration(CommonJs.DnnPlugins);

                //get ModuleId
                if ((Request.QueryString["ModuleId"] != null))
                {
                    _moduleId = Int32.Parse(Request.QueryString["ModuleId"]);
                }
                if (Module.ContentItemId == Null.NullInteger && Module.ModuleID != Null.NullInteger)
                {
                    //This tab does not have a valid ContentItem
                    ModuleController.Instance.CreateContentItem(Module);

                    ModuleController.Instance.UpdateModule(Module);
                }

                //Verify that the current user has access to edit this module
                if (!ModulePermissionController.HasModuleAccess(SecurityAccessLevel.Edit, "MANAGE", Module))
                {
                    if (!(IsSharedViewOnly() && TabPermissionController.CanAddContentToPage()))
                    {
                        Response.Redirect(Globals.AccessDeniedURL(), true);
                    }
                }
                if (Module != null)
                {
                    //get module
                    TabModuleId = Module.TabModuleID;

                    //get Settings Control
                    ModuleControlInfo moduleControlInfo = ModuleControlController.GetModuleControlByControlKey("Settings", Module.ModuleDefID);

                    if (moduleControlInfo != null)
                    {
                        _control = ModuleControlFactory.LoadSettingsControl(Page, Module, moduleControlInfo.ControlSrc);

                        var settingsControl = _control as ISettingsControl;
                        if (settingsControl != null)
                        {
                            hlSpecificSettings.Text = Localization.GetString("ControlTitle_settings",
                                                                             settingsControl.LocalResourceFile);
                            if (String.IsNullOrEmpty(hlSpecificSettings.Text))
                            {
                                hlSpecificSettings.Text =
                                    String.Format(Localization.GetString("ControlTitle_settings", LocalResourceFile),
                                                  Module.DesktopModule.FriendlyName);
                            }
                            pnlSpecific.Controls.Add(_control);
                        }
                    }
                }
            }
            catch (Exception err)
            {
                Exceptions.ProcessModuleLoadException(this, err);
            }
        }
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            chkAllTabs.CheckedChanged            += OnAllTabsCheckChanged;
            chkInheritPermissions.CheckedChanged += OnInheritPermissionsChanged;
            chkWebSlice.CheckedChanged           += OnWebSliceCheckChanged;
            cboCacheProvider.TextChanged         += OnCacheProviderIndexChanged;
            cmdDelete.Click         += OnDeleteClick;
            cmdUpdate.Click         += OnUpdateClick;
            dgOnTabs.NeedDataSource += OnPagesGridNeedDataSource;

            jQuery.RequestDnnPluginsRegistration();

            //get ModuleId
            if ((Request.QueryString["ModuleId"] != null))
            {
                _moduleId = Int32.Parse(Request.QueryString["ModuleId"]);
            }
            if (Module.ContentItemId == Null.NullInteger && Module.ModuleID != Null.NullInteger)
            {
                //This tab does not have a valid ContentItem
                ModuleController.Instance.CreateContentItem(Module);

                ModuleController.Instance.UpdateModule(Module);
            }

            //Verify that the current user has access to edit this module
            if (!ModulePermissionController.HasModuleAccess(SecurityAccessLevel.Edit, "MANAGE", Module))
            {
                if (!(IsSharedViewOnly() && TabPermissionController.CanAddContentToPage()))
                {
                    Response.Redirect(Globals.AccessDeniedURL(), true);
                }
            }
            if (Module != null)
            {
                //get module
                TabModuleId = Module.TabModuleID;

                //get Settings Control
                ModuleControlInfo moduleControlInfo = ModuleControlController.GetModuleControlByControlKey("Settings", Module.ModuleDefID);

                if (moduleControlInfo != null)
                {
                    _control = ControlUtilities.LoadControl <Control>(Page, moduleControlInfo.ControlSrc);

                    var settingsControl = _control as ISettingsControl;
                    if (settingsControl != null)
                    {
                        //Set ID
                        var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(moduleControlInfo.ControlSrc);
                        if (fileNameWithoutExtension != null)
                        {
                            _control.ID = fileNameWithoutExtension.Replace('.', '-');
                        }

                        //add module settings
                        settingsControl.ModuleContext.Configuration = Module;

                        hlSpecificSettings.Text = Localization.GetString("ControlTitle_settings", settingsControl.LocalResourceFile);
                        if (String.IsNullOrEmpty(hlSpecificSettings.Text))
                        {
                            hlSpecificSettings.Text = String.Format(Localization.GetString("ControlTitle_settings", LocalResourceFile), Module.DesktopModule.FriendlyName);
                        }
                        pnlSpecific.Controls.Add(_control);
                    }
                }
            }
        }
예제 #11
0
        private bool ProcessMasterModules()
        {
            bool success = true;

            if (TabPermissionController.CanViewPage())
            {
                // We need to ensure that Content Item exists since in old versions Content Items are not needed for tabs
                this.EnsureContentItemForTab(this.PortalSettings.ActiveTab);

                // Versioning checks.
                if (!TabController.CurrentPage.HasAVisibleVersion)
                {
                    this.HandleAccesDenied(true);
                }

                int urlVersion;
                if (TabVersionUtils.TryGetUrlVersion(out urlVersion))
                {
                    if (!TabVersionUtils.CanSeeVersionedPages())
                    {
                        this.HandleAccesDenied(false);
                        return(true);
                    }

                    if (TabVersionController.Instance.GetTabVersions(TabController.CurrentPage.TabID).All(tabVersion => tabVersion.Version != urlVersion))
                    {
                        this.Response.Redirect(this.NavigationManager.NavigateURL(this.PortalSettings.ErrorPage404, string.Empty, "status=404"));
                    }
                }

                // check portal expiry date
                if (!this.CheckExpired())
                {
                    if ((this.PortalSettings.ActiveTab.StartDate < DateAndTime.Now && this.PortalSettings.ActiveTab.EndDate > DateAndTime.Now) || TabPermissionController.CanAdminPage() || Globals.IsLayoutMode())
                    {
                        foreach (var objModule in PortalSettingsController.Instance().GetTabModules(this.PortalSettings))
                        {
                            success = this.ProcessModule(objModule);
                        }
                    }
                    else
                    {
                        this.HandleAccesDenied(false);
                    }
                }
                else
                {
                    AddPageMessage(
                        this,
                        string.Empty,
                        string.Format(Localization.GetString("ContractExpired.Error"), this.PortalSettings.PortalName, Globals.GetMediumDate(this.PortalSettings.ExpiryDate.ToString(CultureInfo.InvariantCulture)), this.PortalSettings.Email),
                        ModuleMessage.ModuleMessageType.RedError);
                }
            }
            else
            {
                // If request localized page which haven't complete translate yet, redirect to default language version.
                var redirectUrl = Globals.AccessDeniedURL(Localization.GetString("TabAccess.Error"));

                // Current locale will use default if did'nt find any
                Locale currentLocale = LocaleController.Instance.GetCurrentLocale(this.PortalSettings.PortalId);
                if (this.PortalSettings.ContentLocalizationEnabled &&
                    TabController.CurrentPage.CultureCode != currentLocale.Code)
                {
                    redirectUrl = new LanguageTokenReplace {
                        Language = currentLocale.Code
                    }.ReplaceEnvironmentTokens("[URL]");
                }

                this.Response.Redirect(redirectUrl, true);
            }

            return(success);
        }
예제 #12
0
        private bool ProcessMasterModules()
        {
            bool success = true;

            if (TabPermissionController.CanViewPage())
            {
                // Versioning checks.
                if (!TabController.CurrentPage.HasAVisibleVersion)
                {
                    Response.Redirect(Globals.NavigateURL(PortalSettings.ErrorPage404, string.Empty, "status=404"));
                }

                int urlVersion;
                if (TabVersionUtils.TryGetUrlVersion(out urlVersion))
                {
                    if (!TabVersionUtils.CanSeeVersionedPages())
                    {
                        AddPageMessage(this, "", Localization.GetString("TabAccess.Error"),
                                       ModuleMessage.ModuleMessageType.YellowWarning);
                        return(true);
                    }

                    if (TabVersionController.Instance.GetTabVersions(TabController.CurrentPage.TabID).All(tabVersion => tabVersion.Version != urlVersion))
                    {
                        Response.Redirect(Globals.NavigateURL(PortalSettings.ErrorPage404, string.Empty, "status=404"));
                    }
                }

                //check portal expiry date
                if (!CheckExpired())
                {
                    if ((PortalSettings.ActiveTab.StartDate < DateAndTime.Now && PortalSettings.ActiveTab.EndDate > DateAndTime.Now) || TabPermissionController.CanAdminPage() || Globals.IsLayoutMode())
                    {
                        // Check for MVC async call
                        if (Request.QueryString.AllKeys.Contains("moduleId") &&
                            Request.QueryString.AllKeys.Contains("controller") &
                            Request.QueryString.AllKeys.Contains("action") &&
                            Request.QueryString.AllKeys.Contains("async") &&
                            Request.QueryString["async"].ToLower() == "true")
                        {
                            // Get module ID
                            var moduleId = 0;
                            success = int.TryParse(Request.QueryString["moduleId"], out moduleId);

                            if (success)
                            {
                                // Get module info
                                foreach (var objModule in PortalSettingsController.Instance().GetTabModules(PortalSettings))
                                {
                                    if (objModule.ModuleID == moduleId)
                                    {
                                        // process only this module
                                        success = ProcessModule(objModule);
                                    }
                                }
                            }
                        }
                        else
                        {
                            foreach (var objModule in PortalSettingsController.Instance().GetTabModules(PortalSettings))
                            {
                                success = ProcessModule(objModule);
                            }
                        }
                    }
                    else
                    {
                        AddPageMessage(this, "", Localization.GetString("TabAccess.Error"), ModuleMessage.ModuleMessageType.YellowWarning);
                    }
                }
                else
                {
                    AddPageMessage(this,
                                   "",
                                   string.Format(Localization.GetString("ContractExpired.Error"), PortalSettings.PortalName, Globals.GetMediumDate(PortalSettings.ExpiryDate.ToString()), PortalSettings.Email),
                                   ModuleMessage.ModuleMessageType.RedError);
                }
            }
            else
            {
                //If request localized page which haven't complete translate yet, redirect to default language version.
                var    redirectUrl   = Globals.AccessDeniedURL(Localization.GetString("TabAccess.Error"));
                Locale defaultLocale = LocaleController.Instance.GetDefaultLocale(PortalSettings.PortalId);
                if (PortalSettings.ContentLocalizationEnabled &&
                    TabController.CurrentPage.CultureCode != defaultLocale.Code)
                {
                    redirectUrl = new LanguageTokenReplace {
                        Language = defaultLocale.Code
                    }.ReplaceEnvironmentTokens("[URL]");
                }

                Response.Redirect(redirectUrl, true);
            }
            return(success);
        }