CanManageConfiguration() public static method

Determines whether a user can manage the configuration.
public static CanManageConfiguration ( string username, string groups ) : bool
username string The username.
groups string The groups.
return bool
Esempio n. 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Page.Title = Properties.Messages.ErrorTitle + " - " + Settings.WikiTitle;

            Exception ex = Session["LastError"] as Exception;

            if (ex != null && SessionFacade.LoginKey != null &&
                AdminMaster.CanManageConfiguration(SessionFacade.GetCurrentUsername(), SessionFacade.GetCurrentGroupNames()))
            {
                lblException.Text = ex.ToString();
            }
            else
            {
                pnlException.Visible = false;
            }
            Session["LastError"] = null;

            // Workaround for ASP.NET vulnerability
            // http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx
            byte[] delay = new byte[1];
            RandomNumberGenerator prng = new RNGCryptoServiceProvider();

            prng.GetBytes(delay);
            Thread.Sleep((int)delay[0]);

            IDisposable disposable = prng as IDisposable;

            if (disposable != null)
            {
                disposable.Dispose();
            }
        }
Esempio n. 2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            AdminMaster.RedirectToLoginIfNeeded();

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

            PrintSystemStatus();

            if (!Page.IsPostBack)
            {
                rptPages.DataBind();
                rptIndex.DataBind();

                DisplayOrphansCount();

                string anon = Settings.AnonymousGroup;
                foreach (UserGroup group in Users.GetUserGroups())
                {
                    if (group.Name != anon)
                    {
                        ListItem item = new ListItem(group.Name, group.Name);
                        item.Selected = true;
                        lstGroups.Items.Add(item);
                    }
                }
            }
        }
Esempio n. 3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            AdminMaster.RedirectToLoginIfNeeded();

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

            StringBuilder sb = new StringBuilder(200);

            sb.Append("<script type=\"text/javascript\">\r\n<!--\r\n");
            sb.AppendFormat("\tvar __DateTimeFormatTextBox = '{0}';\r\n", txtDateTimeFormat.ClientID);
            sb.Append("// -->\r\n</script>");
            lblStrings.Text = sb.ToString();

            if (!Page.IsPostBack)
            {
                // Setup validation regular expressions
                revMainUrl.ValidationExpression      = Settings.MainUrlRegex;
                revWikiTitle.ValidationExpression    = Settings.WikiTitleRegex;
                revContactEmail.ValidationExpression = Settings.EmailRegex;
                revSenderEmail.ValidationExpression  = Settings.EmailRegex;
                revSmtpServer.ValidationExpression   = Settings.SmtpServerRegex;

                // Load current values
                LoadGeneralConfig();
                LoadContentConfig();
                LoadSecurityConfig();
                LoadAdvancedConfig();
            }
        }
Esempio n. 4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            AdminMaster.RedirectToLoginIfNeeded();

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

            if (!Page.IsPostBack)
            {
                // Load log entries
                rptLog.DataBind();
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            var context = this.Context;

            context.Response.ContentType = "text/plain";

            AdminMaster.RedirectToLoginIfNeeded();

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

            var qs = context.Request.QueryString;

            var ns     = qs["NS"];
            var nspace = Pages.GetNamespaces().FirstOrDefault(x => x.Name == ns);

            if (nspace == null)
            {
                context.Response.Write(string.Format("Namespace \"{0}\" not found", ns));
                return;
            }

            // Liste des pages orphelines
            var candidates = Pages.GetOrphanedPages(nspace)
                             // récupération contenu
                             .Select(p => new { PageInfo = p, PageContent = p.Provider.GetContent(p) })
                             // qui n'ont pas été modifées depuis plus d'un mois
                             .Where(p => p.PageContent != null && p.PageContent.LastModified < DateTime.Today.AddMonths(-1))
                             .OrderBy(p => p.PageInfo.FullName);

            foreach (var candidate in candidates)
            {
                context.Response.Write(string.Format("[url=/Wiki/{0}.ashx]{0}[/url] \"{1}\"\r\n",
                                                     candidate.PageInfo.FullName,
                                                     candidate.PageContent.Title));
            }
        }
Esempio n. 6
0
        protected void Page_Load(object sender, EventArgs e)
        {
            AdminMaster.RedirectToLoginIfNeeded();

            if (!AdminMaster.CanManageConfiguration(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));
                }
            }
        }
Esempio n. 7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var context = this.Context;

            context.Response.ContentType = "text/plain";

            AdminMaster.RedirectToLoginIfNeeded();

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

            var qs = context.Request.QueryString;

            // Espace de nom de filtrage
            var ns     = qs["NS"];
            var nspace = Pages.GetNamespaces().FirstOrDefault(x => x.Name == ns);

            if (nspace == null)
            {
                context.Response.Write(string.Format("Namespace \"{0}\" not found", ns));
                return;
            }

            // On ne supprime que les révisions datant de plus de xx jours par rapport à la dernière modification
            var ageDays = 30;

            // On ne supprime que les révisions au délà de cette limite
            var revisions = 10;

            if (!string.IsNullOrEmpty(qs["age"]))
            {
                int.TryParse(qs["age"], out ageDays);
            }

            if (!string.IsNullOrEmpty(qs["revisions"]))
            {
                int.TryParse(qs["revisions"], out revisions);
            }

            foreach (var page in Pages.GetPages(nspace))
            {
                // Liste des revisions de la page, du plus grand (plus récent) au plus petit (plus vieux)
                var backups = Pages.GetBackups(page);

                if (backups == null)
                {
                    context.Response.Write(string.Format("ERROR : Page {0} has no backups\r\n", page.FullName));
                    continue;
                }

                backups = backups.OrderByDescending(x => x).ToList();

                if (page.Provider == null)
                {
                    context.Response.Write(string.Format("ERROR : Page {0} has no provider\r\n", page.FullName));
                    continue;
                }

                var pageContent = page.Provider.GetContent(page);

                if (pageContent == null)
                {
                    context.Response.Write(string.Format("ERROR : Page {0} has no content\r\n", page.FullName));
                    continue;
                }

                var pageLastModified = pageContent.LastModified;

                var count = backups.Count;

                int?mostRecentRevisionToDelete = null;

                for (int i = 0; i < count; i++)
                {
                    var revision = backups[i];

                    if (i >= revisions)
                    {
                        // On a dépassé le nombre de révisions max, on va supprimer à partir de cette révision
                        var backupContent = Pages.GetBackupContent(page, revision);

                        // Nombre de jours écoulés depuis la dernière modification
                        var age = (pageLastModified - backupContent.LastModified).TotalDays;

                        if (age > ageDays)
                        {
                            mostRecentRevisionToDelete = revision;
                            break;
                        }
                    }
                }

                if (mostRecentRevisionToDelete.HasValue)
                {
                    if (mostRecentRevisionToDelete.Value == backups[0])
                    {
                        context.Response.Write(string.Format("Suppression de toutes les révisions pour la page {1}\r\n", mostRecentRevisionToDelete.Value, page.FullName));
                        Pages.DeleteBackups(page);
                    }
                    else
                    {
                        context.Response.Write(string.Format("Suppression des révisions <= {0} pour la page {1}\r\n", mostRecentRevisionToDelete.Value, page.FullName));
                        Pages.DeleteBackups(page, mostRecentRevisionToDelete.Value);
                    }
                }
            }
        }