예제 #1
0
        /// <summary>
        /// Returns the value indicating that the access to the specified action is denied.
        /// </summary>
        /// <param name="action">The action to check access to.</param>
        /// <returns>true, if the access to the action is denied; otherwise, false.</returns>
        public virtual bool AccessDenied(Action action)
        {
            bool accessDenied = false;

            if (action != null)
            {
                if (action.ActionId == ActionProvider.SettingsDiagnosticPageActionId)
                {
                    UserContext user = UserContext.Current;
                    accessDenied = (!(SettingProvider.GroupSettingsExist && (user.GroupIdList.Count > 0)));
                }
                else if ((action.ActionId == ActionProvider.SetupEntitiesPageActionId) ||
                         (action.ActionId == ActionProvider.EntitiesFieldsPageActionId) ||
                         (action.ActionId == ActionProvider.EntityFieldsPageActionId) ||
                         (action.ActionId == ActionProvider.EntityFieldListsValuesPageActionId))
                {
                    accessDenied = ((!FrameworkConfiguration.Current.Entities.Enabled) || (EntityFieldProvider.Entities.FindAllByEnableHierarchy(false).Count == 0));
                }
                else if (action.ActionId == ActionProvider.UserAssociateToOrganizationStructurePageActionId)
                {
                    accessDenied = ((!FrameworkConfiguration.Current.Entities.Enabled) || (EntityFieldProvider.Entities["4cda22f3-4f01-4768-8608-938dc6a06825"] == null));
                }
                else if ((action.ActionId == ActionProvider.RulesEnginePageActionId) ||
                         (action.ActionId == ActionProvider.RulesPageActionId) ||
                         (action.ActionId == ActionProvider.RuleParametersPageActionId))
                {
                    accessDenied = ((!FrameworkConfiguration.Current.RulesEngines.Enabled) || (!FrameworkConfiguration.Current.Entities.Enabled) || (RuleEngineProvider.RulesEngines.Count == 0));
                }
                else if ((action.ActionId == ActionProvider.TreesPageActionId) ||
                         (action.ActionId == ActionProvider.TreePageActionId) ||
                         (action.ActionId == ActionProvider.NodeTypePageActionId))
                {
                    accessDenied = ((!FrameworkConfiguration.Current.Entities.Enabled) || (EntityFieldProvider.Entities.FindAllByEnableHierarchy(true).Count == 0));
                }
                else if (action.ActionId == ActionProvider.InstancesPageActionId)
                {
                    accessDenied = (!FrameworkConfiguration.Current.WebApplication.EnableMultipleInstances);
                }
                else if (action.ActionId == ActionProvider.CustomUrlsPageActionId)
                {
                    accessDenied = (!FrameworkConfiguration.Current.WebApplication.CustomUrl.Enabled);
                }
                else if ((action.ActionId == ActionProvider.StartPageActionId) || (action.ActionId == ActionProvider.StartGlobalNavigationLinkActionId))
                {
                    accessDenied = (FrameworkConfiguration.Current.WebApplication.MasterPage.Theme != MasterPageTheme.Modern);
                }
                else if ((action.ActionId == ActionProvider.LdapIntegrationPageActionId) ||
                         (action.ActionId == ActionProvider.LdapGroupMappingsPageActionId) ||
                         (action.ActionId == ActionProvider.LdapServerSettingsPageActionId) ||
                         (action.ActionId == ActionProvider.LdapUserInfoPageActionId))
                {
                    accessDenied = (!(FrameworkConfiguration.Current.WebApplication.Integration.Ldap.Enabled && UserContext.Current.Organization.Beta));
                }
                else if (action.ActionId == ActionProvider.CustomStyleSheetPageActionId)
                {
                    accessDenied = (!FrameworkConfiguration.Current.WebApplication.MasterPage.EnableCustomStyleSheet);
                }
                else if (action.ActionId == ActionProvider.MyAccountGlobalNavigationLinkActionId)
                {
                    if (FrameworkConfiguration.Current.WebApplication.MasterPage.Theme == MasterPageTheme.Modern)
                    {
                        UserContext user = UserContext.Current;
                        accessDenied = ((user != null) && (user.OrganizationId == Guid.Empty));
                    }
                    else
                    {
                        accessDenied = true;
                    }
                }
                else if (action.ActionId == ActionProvider.GoogleIntegrationPageActionId)
                {
                    accessDenied = (!FrameworkConfiguration.Current.WebApplication.Integration.Google.Enabled);
                }
                else if (action.ActionId == ActionProvider.ActivityReportActionId)
                {
                    accessDenied = (!FrameworkConfiguration.Current.WebApplication.Integration.Chargify.Enabled);
                }
                else if (action.ActionId == ActionProvider.LoginGlobalNavigationLinkActionId)
                {
                    UserContext user = UserContext.Current;
                    accessDenied = ((user != null) && (user.OrganizationId != Guid.Empty));
                }
                else if (action.ActionId == ActionProvider.LoginAsUserGlobalNavigationLinkActionId)
                {
                    UserContext user = UserContext.Current;
                    accessDenied = (!((user != null) && user.CanLogOnAsUser && (user.OrganizationId == Guid.Empty)));
                }
                else if (ActionProvider.IsSetupPage(action))
                {
                    UserContext user = UserContext.Current;
                    accessDenied = (!((user != null) && user.IsFrameworkAdministrator && (user.OrganizationId == Guid.Empty)));
                }
                else if (action.ActionId == ActionProvider.PageHelpGlobalNavigationLinkActionId)
                {
                    accessDenied = (FrameworkConfiguration.Current.WebApplication.MasterPage.Theme != MasterPageTheme.Modern);
                }
            }

            return(accessDenied);
        }