GetCurrentGroupNames() public static method

Gets the current group names.
public static GetCurrentGroupNames ( ) : string[]
return string[]
示例#1
0
        /// <summary>
        /// Populates the namespaces list for migration.
        /// </summary>
        /// <param name="page">The selected page.</param>
        /// <returns><c>true</c> if there is at least one valid target namespace, <c>false</c> otherwise.</returns>
        private bool PopulateTargetNamespaces(PageInfo page)
        {
            string currentUser = SessionFacade.GetCurrentUsername();

            string[] currentGroups = SessionFacade.GetCurrentGroupNames();

            lstTargetNamespace.Items.Clear();

            NamespaceInfo pageNamespace = Pages.FindNamespace(NameTools.GetNamespace(page.FullName));

            if (pageNamespace != null)
            {
                // Try adding Root as target namespace
                bool canManagePages = AuthChecker.CheckActionForNamespace(null, Actions.ForNamespaces.ManagePages, currentUser, currentGroups);
                if (canManagePages)
                {
                    lstTargetNamespace.Items.Add(new ListItem("<root>", ""));
                }
            }

            // Try adding all other namespaces
            foreach (NamespaceInfo nspace in Pages.GetNamespaces().FindAll(n => n.Provider == page.Provider))
            {
                if (pageNamespace == null || (pageNamespace != null && nspace.Name != pageNamespace.Name))
                {
                    bool canManagePages = AuthChecker.CheckActionForNamespace(nspace, Actions.ForNamespaces.ManagePages, currentUser, currentGroups);
                    if (canManagePages)
                    {
                        lstTargetNamespace.Items.Add(new ListItem(nspace.Name, nspace.Name));
                    }
                }
            }

            return(lstTargetNamespace.Items.Count > 0);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            AdminMaster.RedirectToLoginIfNeeded();

            if (!AdminMaster.CanManagePages(SessionFacade.GetCurrentUsername(), SessionFacade.GetCurrentGroupNames()))
            {
                UrlTools.Redirect("AccessDenied.aspx");
            }

            if (!Page.IsPostBack)
            {
                // Load namespaces

                // Add root namespace
                lstNamespace.Items.Add(new ListItem("<root>", ""));

                List <NamespaceInfo> namespaces = Pages.GetNamespaces();

                foreach (NamespaceInfo ns in namespaces)
                {
                    lstNamespace.Items.Add(new ListItem(ns.Name, ns.Name));
                }

                // Load navigation paths
                rptNavPaths.DataBind();
            }

            btnNewNavPath.Enabled = CanManagePagesInCurrentNamespace();
        }
示例#3
0
        /// <summary>
        /// Activates the page editor.
        /// </summary>
        private void ActivatePageEditor()
        {
            lblCurrentPage.Text = txtCurrentPage.Value;
            txtNewName.Text     = NameTools.GetLocalName(txtCurrentPage.Value);

            // Enable/disable page sections
            PageContent   page        = Pages.FindPage(currentWiki, txtCurrentPage.Value);
            NamespaceInfo nspace      = Pages.FindNamespace(currentWiki, NameTools.GetNamespace(page.FullName));
            string        currentUser = SessionFacade.GetCurrentUsername();

            string[] currentGroups = SessionFacade.GetCurrentGroupNames(currentWiki);

            AuthChecker authChecker = new AuthChecker(Collectors.CollectorsBox.GetSettingsProvider(currentWiki));

            bool canApproveReject    = AdminMaster.CanApproveDraft(page.Provider.CurrentWiki, page.FullName, currentUser, currentGroups);
            bool canDeletePages      = authChecker.CheckActionForNamespace(nspace, Actions.ForNamespaces.DeletePages, currentUser, currentGroups);
            bool canManageAllPages   = authChecker.CheckActionForNamespace(nspace, Actions.ForNamespaces.ManagePages, currentUser, currentGroups);
            bool canManagePage       = authChecker.CheckActionForPage(page.FullName, Actions.ForPages.ManagePage, currentUser, currentGroups);
            bool canManageDiscussion = authChecker.CheckActionForPage(page.FullName, Actions.ForPages.ManageDiscussion, currentUser, currentGroups);
            bool namespaceAvailable  = PopulateTargetNamespaces(page);

            // Approve/reject
            // Rename
            // Migrate
            // Rollback
            // Delete Backups
            // Clear discussion
            // Delete

            pnlApproveRevision.Enabled = canApproveReject;
            pnlRename.Enabled          = canDeletePages;
            pnlMigrate.Enabled         = canManageAllPages && namespaceAvailable;
            pnlRollback.Enabled        = canManagePage;
            pnlDeleteBackups.Enabled   = canManagePage;
            pnlClearDiscussion.Enabled = canManageDiscussion;
            pnlDelete.Enabled          = canDeletePages;

            // Disable rename, migrate, delete for default page
            NamespaceInfo currentNamespace   = Pages.FindNamespace(currentWiki, lstNamespace.SelectedValue);
            string        currentDefaultPage = currentNamespace != null ? currentNamespace.DefaultPageFullName : Settings.GetDefaultPage(currentWiki);

            if (txtCurrentPage.Value == currentDefaultPage)
            {
                btnRename.Enabled     = false;
                btnMigrate.Enabled    = false;
                btnDeletePage.Enabled = false;
            }

            LoadDraft(txtCurrentPage.Value);

            LoadBackups(txtCurrentPage.Value);

            btnRollback.Enabled      = lstRevision.Items.Count > 0;
            btnDeleteBackups.Enabled = lstBackup.Items.Count > 0;

            pnlList.Visible     = false;
            pnlEditPage.Visible = true;

            ClearResultLabels();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            AdminMaster.RedirectToLoginIfNeeded();
            PageSize = Settings.ListSize;
            rangeEnd = PageSize - 1;

            if (!AdminMaster.CanManageUsers(SessionFacade.GetCurrentUsername(), SessionFacade.GetCurrentGroupNames()))
            {
                UrlTools.Redirect("AccessDenied.aspx");
            }
            aclActionsSelector.Visible = AdminMaster.CanManagePermissions(SessionFacade.GetCurrentUsername(), SessionFacade.GetCurrentGroupNames());

            revUsername.ValidationExpression    = Settings.UsernameRegex;
            revDisplayName.ValidationExpression = Settings.DisplayNameRegex;
            revPassword1.ValidationExpression   = Settings.PasswordRegex;
            revEmail.ValidationExpression       = Settings.EmailRegex;

            if (!Page.IsPostBack)
            {
                ResetUserList();

                RefreshList();

                providerSelector.Reload();
                btnNewUser.Enabled = providerSelector.HasProviders;
            }

            if (Page.IsPostBack)
            {
                // Preserve password value (a bit insecure but much more usable)
                txtPassword1.Attributes.Add("value", txtPassword1.Text);
                txtPassword2.Attributes.Add("value", txtPassword2.Text);
            }
        }
        /// <summary>
        /// Performs the Phase 3 of the formatting process.
        /// </summary>
        /// <param name="raw">The raw WikiMarkup to format.</param>
        /// <param name="context">The formatting context.</param>
        /// <param name="current">The current Page, if any.</param>
        /// <returns>The formatted content.</returns>
        public static string FormatWithPhase3(string raw, FormattingContext context, PageInfo current)
        {
            raw = Formatter.FormatPhase3(raw, context, current);

            ContextInformation info = null;
            var username            = SessionFacade.CurrentUsername;

            info = new ContextInformation(false, false, context, current, System.Threading.Thread.CurrentThread.CurrentCulture.Name, HttpContext.Current,
                                          username, SessionFacade.GetCurrentGroupNames());

            // Phase 3
            foreach (IFormatterProviderV30 provider in GetSortedFormatters())
            {
                if (provider.PerformPhase3)
                {
                    try
                    {
                        raw = provider.Format(raw, info, FormattingPhase.Phase3);
                    }
                    catch (Exception ex)
                    {
                        if (!(ex is ThreadAbortException))
                        { // Consider Response.End()
                            Log.LogEntry("Provider " + provider.Information.Name + " failed to perform Phase3 (silently resuming from next provider): " + ex.ToString(), EntryType.Error, Log.SystemUsername);
                        }
                    }
                }
            }

            return(raw);
        }
示例#6
0
        protected void Page_Load(object sender, EventArgs e)
        {
            currentWiki = DetectWiki();

            SetProvider();
            SetInputData();

            string currentUser = SessionFacade.GetCurrentUsername();

            string[] currentGroups = SessionFacade.GetCurrentGroupNames(currentWiki);
            string   dir           = Tools.GetDirectoryName(file);

            // Verify permissions
            AuthChecker authChecker = new AuthChecker(Collectors.CollectorsBox.GetSettingsProvider(currentWiki));
            bool        canUpload   = authChecker.CheckActionForDirectory(provider, dir,
                                                                          Actions.ForDirectories.UploadFiles, currentUser, currentGroups);
            bool canDeleteFiles = authChecker.CheckActionForDirectory(provider, dir,
                                                                      Actions.ForDirectories.DeleteFiles, currentUser, currentGroups);

            if (!canUpload || !canDeleteFiles)
            {
                UrlTools.Redirect("AccessDenied.aspx");
            }

            // Inject the proper stylesheet in page head
            Literal l = new Literal();

            l.Text = Tools.GetIncludes(currentWiki, DetectNamespace());
            Page.Header.Controls.Add(l);

            ResizeImage();
        }
示例#7
0
        /// <summary>
        /// Detects the permissions for the current user.
        /// </summary>
        /// <remarks><b>currentPage</b> should be set before calling this method.</remarks>
        private void DetectPermissions()
        {
            string currentUser = SessionFacade.GetCurrentUsername();

            string[] currentGroups = SessionFacade.GetCurrentGroupNames(currentWiki);

            AuthChecker authChecker = new AuthChecker(Collectors.CollectorsBox.GetSettingsProvider(currentWiki));

            if (currentPage != null)
            {
                Pages.CanEditPage(currentPage.Provider.CurrentWiki, currentPage.FullName, currentUser, currentGroups, out canEdit, out canEditWithApproval);
                canCreateNewPages      = false;            // Least privilege
                canCreateNewCategories = authChecker.CheckActionForNamespace(Pages.FindNamespace(currentWiki, NameTools.GetNamespace(currentPage.FullName)),
                                                                             Actions.ForNamespaces.ManageCategories, currentUser, currentGroups);
                canManagePageCategories = authChecker.CheckActionForPage(currentPage.FullName, Actions.ForPages.ManageCategories, currentUser, currentGroups);
                canDownloadAttachments  = authChecker.CheckActionForPage(currentPage.FullName, Actions.ForPages.DownloadAttachments, currentUser, currentGroups);
            }
            else
            {
                NamespaceInfo ns = DetectNamespaceInfo();
                canCreateNewPages       = authChecker.CheckActionForNamespace(ns, Actions.ForNamespaces.CreatePages, currentUser, currentGroups);
                canCreateNewCategories  = authChecker.CheckActionForNamespace(ns, Actions.ForNamespaces.ManageCategories, currentUser, currentGroups);
                canManagePageCategories = canCreateNewCategories;
                canDownloadAttachments  = authChecker.CheckActionForNamespace(ns, Actions.ForNamespaces.DownloadAttachments, currentUser, currentGroups);
            }
        }
示例#8
0
        protected void Page_Load(object sender, EventArgs e)
        {
            AdminMaster.RedirectToLoginIfNeeded();

            currentWiki = DetectWiki();

            string currentUser = SessionFacade.GetCurrentUsername();

            string[] currentGroups = SessionFacade.GetCurrentGroupNames(currentWiki);

            if (!AdminMaster.CanManageGroups(currentUser, currentGroups))
            {
                UrlTools.Redirect("AccessDenied.aspx");
            }
            aclActionsSelector.Visible = AdminMaster.CanManagePermissions(currentUser, currentGroups);

            revName.ValidationExpression = GlobalSettings.UsernameRegex;

            if (!Page.IsPostBack)
            {
                rptGroups.DataBind();
                providerSelector.Reload();
                btnNewGroup.Enabled = providerSelector.HasProviders;
            }
        }
示例#9
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Page.Title = Properties.Messages.ProfileTitle + " - " + Settings.WikiTitle;

            if (SessionFacade.LoginKey == null)
            {
                UrlTools.Redirect(UrlTools.BuildUrl("Login.aspx?Redirect=Profile.aspx"));
            }

            currentUser   = SessionFacade.GetCurrentUser();
            currentGroups = SessionFacade.GetCurrentGroupNames();

            if (currentUser.Username == "admin")
            {
                // Admin only has language preferences, stored in a cookie
                UrlTools.Redirect("Language.aspx");
                return;
            }

            if (!Page.IsPostBack)
            {
                bool usersDataSupported      = !currentUser.Provider.UsersDataReadOnly;
                bool accountDetailsSupported = !currentUser.Provider.UserAccountsReadOnly;

                pnlUserData.Visible  = usersDataSupported;
                pnlAccount.Visible   = accountDetailsSupported;
                pnlNoChanges.Visible = !usersDataSupported && !accountDetailsSupported;

                languageSelector.LoadLanguages();

                string name = string.IsNullOrEmpty(currentUser.DisplayName) ? currentUser.Username : currentUser.DisplayName;
                lblUsername.Text    = name;
                txtDisplayName.Text = currentUser.DisplayName;
                txtEmail1.Text      = currentUser.Email;
                var groups = SessionFacade.GetCurrentGroups().ToList();
                lblGroupsList.Text = string.Join(", ", groups.Select(g => g.Name));

                //if (groups.Count == 1 && groups[0].Name == "Anonymous")
                {
                    // bug groupes
                    var user       = SessionFacade.GetCurrentUser();
                    var userName   = SessionFacade.GetCurrentUsername();
                    var firstGroup = user?.Groups?.FirstOrDefault();
                    var findUser   = Users.FindUser(userName);

                    lblGroupsList.Text += " - DEBUG - " +
                                          $"Session ID : {Session.SessionID} - userName = {userName} - user.Username = {user.Username} - " +
                                          $"user.Groups.Count = {user.Groups?.Count()} - user.Groups[0] = {firstGroup} - " +
                                          $"findUser.Groups.Count = {findUser?.Groups?.Count()} - findUser.Groups[0] = {findUser?.Groups?.FirstOrDefault()} - ";
                }


                LoadNotificationsStatus();
                LoadLanguageAndTimezoneSettings();

                rxvDisplayName.ValidationExpression = Settings.DisplayNameRegex;
                rxvEmail1.ValidationExpression      = Settings.EmailRegex;
                rxvPassword1.ValidationExpression   = Settings.PasswordRegex;
            }
        }
示例#10
0
        protected void rptPages_DataBinding(object sender, EventArgs e)
        {
            NamespaceInfo nspace = Pages.FindNamespace(currentWiki, lstNamespace.SelectedValue);

            if (currentPages == null)
            {
                currentPages = GetPages(nspace);
            }

            List <PageRow> result = new List <PageRow>(PageSize);

            string currentUser = SessionFacade.GetCurrentUsername();

            string[] currentGroups = SessionFacade.GetCurrentGroupNames(currentWiki);

            AuthChecker authChecker       = new AuthChecker(Collectors.CollectorsBox.GetSettingsProvider(currentWiki));
            bool        canSetPermissions = AdminMaster.CanManagePermissions(currentUser, currentGroups);
            bool        canDeletePages    = authChecker.CheckActionForNamespace(nspace, Actions.ForNamespaces.DeletePages, currentUser, currentGroups);

            var orphanPages = new List <string>(Pages.GetOrphanedPages(currentWiki, nspace));

            for (int i = rangeBegin; i <= rangeEnd; i++)
            {
                PageContent page = currentPages[i];

                // The page can be selected if the user can either manage or delete the page or manage the discussion
                // Repeat checks for enabling/disabling sections when a page is selected
                bool canEdit             = authChecker.CheckActionForPage(page.FullName, Actions.ForPages.ModifyPage, currentUser, currentGroups);
                bool canManagePage       = false;
                bool canManageDiscussion = false;
                if (!canDeletePages)
                {
                    canManagePage = authChecker.CheckActionForPage(page.FullName, Actions.ForPages.ManagePage, currentUser, currentGroups);
                }
                if (!canDeletePages && !canManagePage)
                {
                    canManageDiscussion = authChecker.CheckActionForPage(page.FullName, Actions.ForPages.ManageDiscussion, currentUser, currentGroups);
                }
                bool canSelect = canManagePage | canDeletePages | canManageDiscussion;

                PageContent firstContent = null;
                List <int>  baks         = Pages.GetBackups(page);
                if (baks.Count == 0)
                {
                    firstContent = page;
                }
                else
                {
                    firstContent = Pages.GetBackupContent(page, baks[0]);
                }

                result.Add(new PageRow(page, firstContent,
                                       Pages.GetMessageCount(page), baks.Count, orphanPages.Contains(page.FullName),
                                       canEdit, canSelect, canSetPermissions, txtCurrentPage.Value == page.FullName));
            }

            rptPages.DataSource = result;
        }
示例#11
0
        protected void rptPages_DataBinding(object sender, EventArgs e)
        {
            if (currentPages == null)
            {
                currentPages = GetPages();
            }
            NamespaceInfo nspace = DetectNamespaceInfo();

            var result = new List <PageRow>(PageSize);

            var currentUser   = SessionFacade.GetCurrentUsername();
            var currentGroups = SessionFacade.GetCurrentGroupNames();

            var canSetPermissions = AdminMaster.CanManagePermissions(currentUser, currentGroups);
            var canDeletePages    = AuthChecker.CheckActionForNamespace(nspace, Actions.ForNamespaces.DeletePages, currentUser, currentGroups);

            var orphanPages = Pages.GetOrphanedPages(currentPages);

            for (var i = rangeBegin; i <= rangeEnd; i++)
            {
                PageInfo page = currentPages[i];

                PageContent currentContent = Content.GetPageContent(page, false);

                // The page can be selected if the user can either manage or delete the page or manage the discussion
                // Repeat checks for enabling/disabling sections when a page is selected
                var canEdit             = AuthChecker.CheckActionForPage(page, Actions.ForPages.ModifyPage, currentUser, currentGroups);
                var canManagePage       = false;
                var canManageDiscussion = false;
                if (!canDeletePages)
                {
                    canManagePage = AuthChecker.CheckActionForPage(page, Actions.ForPages.ManagePage, currentUser, currentGroups);
                }
                if (!canDeletePages && !canManagePage)
                {
                    canManageDiscussion = AuthChecker.CheckActionForPage(page, Actions.ForPages.ManageDiscussion, currentUser, currentGroups);
                }
                var canSelect = canManagePage | canDeletePages | canManageDiscussion;

                PageContent firstContent = null;
                List <int>  baks         = Pages.GetBackups(page);
                if (baks.Count == 0)
                {
                    firstContent = currentContent;
                }
                else
                {
                    firstContent = Pages.GetBackupContent(page, baks[0]);
                }

                result.Add(new PageRow(page, currentContent, firstContent,
                                       Pages.GetMessageCount(page), baks.Count, orphanPages.Contains(page.FullName),
                                       canEdit, canSelect, canSetPermissions, txtCurrentPage.Value == page.FullName));
            }

            rptPages.DataSource = result;
        }
示例#12
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Array.Find(SessionFacade.GetCurrentGroupNames(), delegate(string g) { return(g == Settings.AdministratorsGroup); }) == null)
            {
                UrlTools.Redirect("AccessDenied.aspx");
            }

            Page.Title = "Import - " + Settings.WikiTitle;
        }
示例#13
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!SessionFacade.GetCurrentGroupNames().Any(g => g == Settings.AdministratorsGroup))
            {
                UrlTools.Redirect("AccessDenied.aspx");
            }

            Page.Title = "Import - " + Settings.WikiTitle;
        }
示例#14
0
        /// <summary>
        /// Sets up the buttons visibility based on the current user's permissions.
        /// </summary>
        /// <param name="wiki">The wiki.</param>
        private void SetupButtonsVisibility(string currentWiki)
        {
            string currentUser = SessionFacade.GetCurrentUsername();

            string[] currentGroups = SessionFacade.GetCurrentGroupNames(currentWiki);

            // Categories (can manage categories in at least one NS)
            lnkSelectCategories.Visible = CanManageCategories(currentUser, currentGroups);

            // Configuration (can manage config)
            lnkSelectConfig.Visible = CanManageConfiguration(currentUser, currentGroups);

            // Content (can manage config)
            lnkSelectContent.Visible = CanManageMetaFiles(currentUser, currentGroups);

            // Groups (can manage groups)
            lnkSelectGroups.Visible = CanManageGroups(currentUser, currentGroups);

            // Home (can manage config)
            lnkSelectAdminHome.Visible = CanManageConfiguration(currentUser, currentGroups);

            // Namespaces (can manage namespaces)
            lnkSelectNamespaces.Visible = CanManageNamespaces(currentUser, currentGroups);

            // Nav. Paths (can manage pages in at least one NS)
            lnkSelectNavPaths.Visible = CanManagePages(currentUser, currentGroups);

            // Pages
            // Always displayed because checking every page can take too much time

            // Providers (can manage providers)
            lnkSelectPluginsConfiguration.Visible = CanManageProviders(currentUser, currentGroups);

            // Snippets (can manage snippets)
            lnkSelectSnippets.Visible = CanManageSnippetsAndTemplates(currentUser, currentGroups);

            // Accounts (can manage user accounts)
            lnkSelectAccounts.Visible = CanManageUsers(currentUser, currentGroups);

            // Log (can manage config)
            lnkSelectLog.Visible = CanManageGlobalConfiguration(currentUser, currentGroups);

            // Global Home (can manage global config)
            lnkSelectAdminGlobalHome.Visible = CanManageGlobalConfiguration(currentUser, currentGroups);

            // Global Configuration (can manage global config)
            lnkSelectGlobalConfig.Visible = CanManageGlobalConfiguration(currentUser, currentGroups);

            // Providers Management (can manage global config)
            lnkSelectPluginsManagement.Visible = CanManageGlobalConfiguration(currentUser, currentGroups);

            // Import export (can manage global config)
            lnkSelectImportExport.Visible = CanManageGlobalConfiguration(currentUser, currentGroups);
        }
示例#15
0
        /// <summary>
        /// Detects the permissions for the current user.
        /// </summary>
        /// <remarks><b>currentPage</b> should be set before calling this method.</remarks>
        private void DetectPermissions()
        {
            // Sueetie Modified - Bug fix for session expiring and user not known
            if (!Page.User.Identity.IsAuthenticated)
            {
                Response.Redirect("accessdenied.aspx");
                return;
            }

            MembershipUser _user       = Membership.GetUser();
            var            currentUser = _user.UserName;
            UserInfo       user        = Users.FindUser(_user.UserName);

            if (user == null)
            {
                Response.Redirect("/members/message.aspx?msgid=2");
                return;
            }

            var currentGroups = SessionFacade.GetCurrentGroupNames();

            currentGroups = UserGroups(user);
            if (HttpContext.Current.Session == null)
            {
                if (user == null)
                {
                    user = Users.FindUser(_user.UserName);
                }
                SessionFacade.LoginKey        = ConfigurationManager.AppSettings["SUEETIE.WikiLoginKey"].ToString();
                SessionFacade.CurrentUsername = user.Username;
                Session["Logout"]             = null;
                Log.LogEntry("User " + user.Username + " auto-logged in through edit bug fix session restart", EntryType.General, "SUEETIE");
            }
            // END - Bug fix for session expiring and user not known

            if (currentPage != null)
            {
                Pages.CanEditPage(currentPage, currentUser, currentGroups, out canEdit, out canEditWithApproval);
                canCreateNewPages      = false; // Least privilege
                canCreateNewCategories = AuthChecker.CheckActionForNamespace(Pages.FindNamespace(NameTools.GetNamespace(currentPage.FullName)),
                                                                             Actions.ForNamespaces.ManageCategories, currentUser, currentGroups);
                canManagePageCategories = AuthChecker.CheckActionForPage(currentPage, Actions.ForPages.ManageCategories, currentUser, currentGroups);
                canDownloadAttachments  = AuthChecker.CheckActionForPage(currentPage, Actions.ForPages.DownloadAttachments, currentUser, currentGroups);
            }
            else
            {
                NamespaceInfo ns = DetectNamespaceInfo();
                canCreateNewPages       = AuthChecker.CheckActionForNamespace(ns, Actions.ForNamespaces.CreatePages, currentUser, currentGroups);
                canCreateNewCategories  = AuthChecker.CheckActionForNamespace(ns, Actions.ForNamespaces.ManageCategories, currentUser, currentGroups);
                canManagePageCategories = canCreateNewCategories;
                canDownloadAttachments  = AuthChecker.CheckActionForNamespace(ns, Actions.ForNamespaces.DownloadAttachments, currentUser, currentGroups);
            }
        }
示例#16
0
        /// <summary>
        /// Performs the Phases 1 and 2 of the formatting process for Wysiwyg.
        /// </summary>
        /// <param name="wiki">The wiki.</param>
        /// <param name="raw">The raw WikiMarkup to format.</param>
        /// <param name="context">The formatting context.</param>
        /// <returns>The formatted content.</returns>
        public static string FormatForWysiwygWithPhase1And2(string wiki, string raw, FormattingContext context)
        {
            string[]           linkedPages;
            ContextInformation info     = null;
            string             username = SessionFacade.CurrentUsername;

            info = new ContextInformation(false, true, context, null, System.Threading.Thread.CurrentThread.CurrentCulture.Name, HttpContext.Current,
                                          username, SessionFacade.GetCurrentGroupNames(wiki));

            IList <IFormatterProviderV50> providers = GetSortedFormatters(wiki);

            // Phase 1
            foreach (IFormatterProviderV50 provider in providers)
            {
                if (provider.EnablePluginsEditor && provider.PerformPhase1)
                {
                    try
                    {
                        raw = provider.WysiwygFormat(raw, info, FormattingPhase.Phase1);
                    }
                    catch (Exception ex)
                    {
                        if (!(ex is ThreadAbortException))
                        { // Consider Response.End()
                            Log.LogEntry("Provider " + provider.Information.Name + " failed to perform Phase1 for Wysiwyg (silently resuming from next provider): " + ex.ToString(), EntryType.Error, Log.SystemUsername, provider.CurrentWiki);
                        }
                    }
                }
            }

            raw = Formatter.Format(wiki, raw, false, context, null, out linkedPages, true);

            // Phase 2
            foreach (IFormatterProviderV50 provider in providers)
            {
                if (provider.EnablePluginsEditor)
                {
                    try
                    {
                        raw = provider.WysiwygFormat(raw, info, FormattingPhase.Phase2);
                    }
                    catch (Exception ex)
                    {
                        if (!(ex is ThreadAbortException))
                        { // Consider Response.End()
                            Log.LogEntry("Provider " + provider.Information.Name + " failed to perform Phase2 for Wysiwyg (silently resuming from next provider): " + ex.ToString(), EntryType.Error, Log.SystemUsername, provider.CurrentWiki);
                        }
                    }
                }
            }

            return(raw);
        }
示例#17
0
        /// <summary>
        /// Performs the Phases 1 and 2 of the formatting process.
        /// </summary>
        /// <param name="raw">The raw WikiMarkup to format.</param>
        /// <param name="forIndexing">A value indicating whether the formatting is being done for content indexing.</param>
        /// <param name="context">The formatting context.</param>
        /// <param name="current">The current Page, if any.</param>
        /// <param name="linkedPages">The Pages linked by the current Page.</param>
        /// <returns>The formatted content.</returns>
        public static string FormatWithPhase1And2(string raw, bool forIndexing, FormattingContext context, PageInfo current, out string[] linkedPages)
        {
            ContextInformation info     = null;
            string             username = SessionFacade.CurrentUsername;

            info = new ContextInformation(forIndexing, false, context, current, System.Threading.Thread.CurrentThread.CurrentCulture.Name, HttpContext.Current,
                                          username, SessionFacade.GetCurrentGroupNames( ));

            IList <IFormatterProviderV30> providers = GetSortedFormatters( );

            // Phase 1
            foreach (IFormatterProviderV30 provider in providers)
            {
                if (provider.PerformPhase1)
                {
                    try
                    {
                        raw = provider.Format(raw, info, FormattingPhase.Phase1);
                    }
                    catch (Exception ex)
                    {
                        if (!(ex is ThreadAbortException))
                        {                         // Consider Response.End()
                            Log.LogEntry("Provider " + provider.Information.Name + " failed to perform Phase1 (silently resuming from next provider): " + ex, EntryType.Error, Log.SystemUsername);
                        }
                    }
                }
            }

            raw = Formatter.Format(raw, forIndexing, context, current, out linkedPages);

            // Phase 2
            foreach (IFormatterProviderV30 provider in providers)
            {
                if (provider.PerformPhase2)
                {
                    try
                    {
                        raw = provider.Format(raw, info, FormattingPhase.Phase2);
                    }
                    catch (Exception ex)
                    {
                        if (!(ex is ThreadAbortException))
                        {                         // Consider Response.End()
                            Log.LogEntry("Provider " + provider.Information.Name + " failed to perform Phase2 (silently resuming from next provider): " + ex, EntryType.Error, Log.SystemUsername);
                        }
                    }
                }
            }

            return(raw);
        }
示例#18
0
        protected void Page_Load(object sender, EventArgs e)
        {
            AdminMaster.RedirectToLoginIfNeeded();

            if (!AdminMaster.CanManageNamespaces(SessionFacade.GetCurrentUsername(), SessionFacade.GetCurrentGroupNames(DetectWiki())))
            {
                UrlTools.Redirect("AccessDenied.aspx");
            }

            if (!Page.IsPostBack)
            {
                rptNamespaces.DataBind();
            }
        }
示例#19
0
        /// <summary>
        /// Detects the permissions of the current user for the current directory.
        /// </summary>
        private void DetectPermissions()
        {
            var currentUser   = SessionFacade.GetCurrentUsername();
            var currentGroups = SessionFacade.GetCurrentGroupNames();

            canList        = AuthChecker.CheckActionForDirectory(provider, CurrentDirectory, Actions.ForDirectories.List, currentUser, currentGroups);
            canDownload    = AuthChecker.CheckActionForDirectory(provider, CurrentDirectory, Actions.ForDirectories.DownloadFiles, currentUser, currentGroups);
            canUpload      = AuthChecker.CheckActionForDirectory(provider, CurrentDirectory, Actions.ForDirectories.UploadFiles, currentUser, currentGroups);
            canCreateDirs  = AuthChecker.CheckActionForDirectory(provider, CurrentDirectory, Actions.ForDirectories.CreateDirectories, currentUser, currentGroups);
            canDeleteFiles = AuthChecker.CheckActionForDirectory(provider, CurrentDirectory, Actions.ForDirectories.DeleteFiles, currentUser, currentGroups);
            canDeleteDirs  = AuthChecker.CheckActionForDirectory(provider, CurrentDirectory, Actions.ForDirectories.DeleteDirectories, currentUser, currentGroups);
            canSetPerms    = AuthChecker.CheckActionForGlobals(Actions.ForGlobals.ManagePermissions, currentUser, currentGroups);
            isAdmin        = currentGroups.Contains(Settings.AdministratorsGroup);
        }
示例#20
0
        /// <summary>
        /// Detects the permissions of the current user for the current directory.
        /// </summary>
        private void DetectPermissions()
        {
            string currentUser = SessionFacade.GetCurrentUsername();

            string[] currentGroups = SessionFacade.GetCurrentGroupNames();

            canList        = AuthChecker.CheckActionForDirectory(provider, CurrentDirectory, Actions.ForDirectories.List, currentUser, currentGroups);
            canDownload    = AuthChecker.CheckActionForDirectory(provider, CurrentDirectory, Actions.ForDirectories.DownloadFiles, currentUser, currentGroups);
            canUpload      = AuthChecker.CheckActionForDirectory(provider, CurrentDirectory, Actions.ForDirectories.UploadFiles, currentUser, currentGroups);
            canCreateDirs  = AuthChecker.CheckActionForDirectory(provider, CurrentDirectory, Actions.ForDirectories.CreateDirectories, currentUser, currentGroups);
            canDeleteFiles = AuthChecker.CheckActionForDirectory(provider, CurrentDirectory, Actions.ForDirectories.DeleteFiles, currentUser, currentGroups);
            canDeleteDirs  = AuthChecker.CheckActionForDirectory(provider, CurrentDirectory, Actions.ForDirectories.DeleteDirectories, currentUser, currentGroups);
            canSetPerms    = AuthChecker.CheckActionForGlobals(Actions.ForGlobals.ManagePermissions, currentUser, currentGroups);
            isAdmin        = Array.Find(currentGroups, delegate(string g) { return(g == Settings.AdministratorsGroup); }) != null;
        }
示例#21
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string currentWiki = Tools.DetectCurrentWiki();

            Response.ClearContent();
            Response.ContentType     = "text/xml;charset=UTF-8";
            Response.ContentEncoding = System.Text.UTF8Encoding.UTF8;

            string mainUrl     = Settings.GetMainUrl(currentWiki);
            string rootDefault = Settings.GetDefaultPage(currentWiki).ToLowerInvariant();

            using (XmlWriter writer = XmlWriter.Create(Response.OutputStream)) {
                writer.WriteStartDocument();

                writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
                writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance");
                writer.WriteAttributeString("xsi", "schemaLocation", null, "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/09/sitemap.xsd");

                string   user   = SessionFacade.GetCurrentUsername();
                string[] groups = SessionFacade.GetCurrentGroupNames(currentWiki);


                AuthChecker authChecker = new AuthChecker(Collectors.CollectorsBox.GetSettingsProvider(currentWiki));

                foreach (PageContent page in Pages.GetPages(currentWiki, null))
                {
                    if (authChecker.CheckActionForPage(page.FullName, Actions.ForPages.ReadPage, user, groups))
                    {
                        WritePage(mainUrl, page.FullName, page.FullName.ToLowerInvariant() == rootDefault, writer);
                    }
                }
                foreach (NamespaceInfo nspace in Pages.GetNamespaces(currentWiki))
                {
                    string nspaceDefault = nspace.DefaultPageFullName.ToLowerInvariant();

                    foreach (PageContent page in Pages.GetPages(currentWiki, nspace))
                    {
                        if (authChecker.CheckActionForPage(page.FullName, Actions.ForPages.ReadPage, user, groups))
                        {
                            WritePage(mainUrl, page.FullName, page.FullName.ToLowerInvariant() == nspaceDefault, writer);
                        }
                    }
                }

                writer.WriteEndElement();
                writer.WriteEndDocument();
            }
        }
示例#22
0
        protected void Page_Load(object sender, EventArgs e)
        {
            currentWiki = DetectWiki();

            Page.Title = Properties.Messages.ProfileTitle + " - " + Settings.GetWikiTitle(currentWiki);

            if (SessionFacade.LoginKey == null)
            {
                UrlTools.Redirect(UrlTools.BuildUrl(currentWiki, "Login.aspx?Redirect=Profile.aspx"));
            }

            currentUser   = SessionFacade.GetCurrentUser(currentWiki);
            currentGroups = SessionFacade.GetCurrentGroupNames(currentWiki);

            if (currentUser.Username == "admin")
            {
                // Admin only has language preferences, stored in a cookie
                UrlTools.Redirect("Language.aspx");
                return;
            }

            if (!Page.IsPostBack)
            {
                bool usersDataSupported      = !currentUser.Provider.UsersDataReadOnly;
                bool accountDetailsSupported = !currentUser.Provider.UserAccountsReadOnly;

                pnlUserData.Visible  = usersDataSupported;
                pnlAccount.Visible   = accountDetailsSupported;
                pnlNoChanges.Visible = !usersDataSupported && !accountDetailsSupported;

                languageSelector.LoadLanguages();
                languageSelector.LoadTimezones();

                string name = string.IsNullOrEmpty(currentUser.DisplayName) ? currentUser.Username : currentUser.DisplayName;
                lblUsername.Text    = name;
                txtDisplayName.Text = currentUser.DisplayName;
                txtEmail1.Text      = currentUser.Email;
                lblGroupsList.Text  = string.Join(", ", Array.ConvertAll(SessionFacade.GetCurrentGroups(currentWiki), delegate(UserGroup g) { return(g.Name); }));

                LoadNotificationsStatus();
                LoadLanguageAndTimezoneSettings();

                rxvDisplayName.ValidationExpression = GlobalSettings.DisplayNameRegex;
                rxvEmail1.ValidationExpression      = GlobalSettings.EmailRegex;
                rxvPassword1.ValidationExpression   = GlobalSettings.PasswordRegex;
            }
        }
示例#23
0
        protected void Page_Load(object sender, EventArgs e)
        {
            AdminMaster.RedirectToLoginIfNeeded();

            currentWiki = DetectWiki();

            if (!AdminMaster.CanManageProviders(SessionFacade.GetCurrentUsername(), SessionFacade.GetCurrentGroupNames(currentWiki)))
            {
                UrlTools.Redirect("AccessDenied.aspx");
            }

            if (!Page.IsPostBack)
            {
                // Load themes and related data
                LoadThemes();
            }
        }
示例#24
0
        protected void Page_Load(object sender, EventArgs e)
        {
            AdminMaster.RedirectToLoginIfNeeded();

            if (!AdminMaster.CanManageProviders(SessionFacade.GetCurrentUsername(), SessionFacade.GetCurrentGroupNames()))
            {
                UrlTools.Redirect("AccessDenied.aspx");
            }

            if (!Page.IsPostBack)
            {
                lblResult.CssClass = "";
                lblResult.Text     = "";
                // Load providers and related data
                rptProviders.DataBind();
            }
        }
示例#25
0
        protected void lstNamespace_SelectedIndexChanged(object sender, EventArgs e)
        {
            currentPages           = GetPages();
            pageSelector.ItemCount = currentPages.Count;
            pageSelector.SelectPage(0);

            rptPages.DataBind();

            var currentUser   = SessionFacade.GetCurrentUsername();
            var currentGroups = SessionFacade.GetCurrentGroupNames();

            var canManageAllPages = AuthChecker.CheckActionForNamespace(
                Pages.FindNamespace(lstNamespace.SelectedValue),
                Actions.ForNamespaces.ManagePages, currentUser, currentGroups);

            btnBulkMigrate.Enabled = canManageAllPages;
        }
示例#26
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.ClearContent();
            Response.ContentType     = "text/xml;charset=UTF-8";
            Response.ContentEncoding = System.Text.UTF8Encoding.UTF8;

            var mainUrl     = Settings.MainUrl;
            var rootDefault = Settings.DefaultPage.ToLowerInvariant();

            using (var writer = XmlWriter.Create(Response.OutputStream))
            {
                writer.WriteStartDocument();

                writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
                writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance");
                writer.WriteAttributeString("xsi", "schemaLocation", null, "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/09/sitemap.xsd");

                var user   = SessionFacade.GetCurrentUsername();
                var groups = SessionFacade.GetCurrentGroupNames();

                foreach (PageInfo page in Pages.GetPages(null))
                {
                    if (AuthChecker.CheckActionForPage(page, Actions.ForPages.ReadPage, user, groups))
                    {
                        WritePage(mainUrl, page, page.FullName.ToLowerInvariant() == rootDefault, writer);
                    }
                }
                foreach (NamespaceInfo nspace in Pages.GetNamespaces())
                {
                    var nspaceDefault = nspace.DefaultPage.FullName.ToLowerInvariant();

                    foreach (PageInfo page in Pages.GetPages(nspace))
                    {
                        if (AuthChecker.CheckActionForPage(page, Actions.ForPages.ReadPage, user, groups))
                        {
                            WritePage(mainUrl, page, page.FullName.ToLowerInvariant() == nspaceDefault, writer);
                        }
                    }
                }

                writer.WriteEndElement();
                writer.WriteEndDocument();
            }
        }
 /// <summary>
 /// Detects the permissions of the current user.
 /// </summary>
 private void DetectPermissions()
 {
     if (CurrentPage != null)
     {
         var currentUser   = SessionFacade.GetCurrentUsername();
         var currentGroups = SessionFacade.GetCurrentGroupNames();
         canDownload = AuthChecker.CheckActionForPage(CurrentPage, Actions.ForPages.DownloadAttachments, currentUser, currentGroups);
         canUpload   = AuthChecker.CheckActionForPage(CurrentPage, Actions.ForPages.UploadAttachments, currentUser, currentGroups);
         canDelete   = AuthChecker.CheckActionForPage(CurrentPage, Actions.ForPages.DeleteAttachments, currentUser, currentGroups);
         isAdmin     = currentGroups.Contains(Settings.AdministratorsGroup);
     }
     else
     {
         canDownload = false;
         canUpload   = false;
         canDelete   = false;
         isAdmin     = false;
     }
     lstProviders.Visible = isAdmin;
 }
示例#28
0
 /// <summary>
 /// Detects the permissions of the current user.
 /// </summary>
 private void DetectPermissions()
 {
     if (CurrentPage != null)
     {
         string   currentUser   = SessionFacade.GetCurrentUsername();
         string[] currentGroups = SessionFacade.GetCurrentGroupNames();
         canDownload = AuthChecker.CheckActionForPage(CurrentPage, Actions.ForPages.DownloadAttachments, currentUser, currentGroups);
         canUpload   = AuthChecker.CheckActionForPage(CurrentPage, Actions.ForPages.UploadAttachments, currentUser, currentGroups);
         canDelete   = AuthChecker.CheckActionForPage(CurrentPage, Actions.ForPages.DeleteAttachments, currentUser, currentGroups);
         isAdmin     = Array.Find(currentGroups, delegate(string g) { return(g == Settings.AdministratorsGroup); }) != null;
     }
     else
     {
         canDownload = false;
         canUpload   = false;
         canDelete   = false;
         isAdmin     = false;
     }
     lstProviders.Visible = isAdmin;
 }
示例#29
0
        protected void lstNamespace_SelectedIndexChanged(object sender, EventArgs e)
        {
            NamespaceInfo nspace = Pages.FindNamespace(currentWiki, lstNamespace.SelectedValue);

            currentPages           = GetPages(nspace);
            pageSelector.ItemCount = currentPages.Count;
            pageSelector.SelectPage(0);

            rptPages.DataBind();

            string currentUser = SessionFacade.GetCurrentUsername();

            string[] currentGroups = SessionFacade.GetCurrentGroupNames(currentWiki);

            AuthChecker authChecker       = new AuthChecker(Collectors.CollectorsBox.GetSettingsProvider(currentWiki));
            bool        canManageAllPages = authChecker.CheckActionForNamespace(
                Pages.FindNamespace(currentWiki, lstNamespace.SelectedValue),
                Actions.ForNamespaces.ManagePages, currentUser, currentGroups);

            btnBulkMigrate.Enabled = canManageAllPages;
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            AdminMaster.RedirectToLoginIfNeeded();

            if (!AdminMaster.CanManageNamespaces(SessionFacade.GetCurrentUsername(), SessionFacade.GetCurrentGroupNames()))
            {
                UrlTools.Redirect("AccessDenied.aspx");
            }

            if (!Page.IsPostBack)
            {
                rptNamespaces.DataBind();

                // Populate themes
                string[] themes = Tools.AvailableThemes;
                foreach (string theme in themes)
                {
                    lstTheme.Items.Add(new ListItem(theme, theme));
                }
            }
        }