/// <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(); }
/// <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); }
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(); }
/// <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); } }
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; } }
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; } }
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; }
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; }
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; }
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; }
/// <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); }
/// <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); } }
/// <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); }
/// <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); }
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(); } }
/// <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); }
/// <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; }
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(); } }
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; } }
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(); } }
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(); } }
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; }
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; }
/// <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; }
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)); } } }