CanManagePermissions() public static method

Determines whether a user can manage permissions.
public static CanManagePermissions ( string username, string groups ) : bool
username string The username.
groups string The groups.
return bool
        protected void rptNamespaces_DataBinding(object sender, EventArgs e)
        {
            List <NamespaceInfo> namespaces = Pages.GetNamespaces();

            List <NamespaceRow> result = new List <NamespaceRow>(namespaces.Count);

            bool canSetPermissions = AdminMaster.CanManagePermissions(SessionFacade.GetCurrentUsername(), SessionFacade.GetCurrentGroupNames());

            PageInfo defaultPage = Pages.FindPage(Settings.DefaultPage);

            // Inject the root namespace as first entry, retrieving the default page in Settings
            result.Add(new NamespaceRow(new NamespaceInfo(RootName, defaultPage.Provider, defaultPage),
                                        Settings.GetTheme(null),
                                        Pages.GetPages(null).Count, Pages.GetCategories(null).Count,
                                        canSetPermissions, txtCurrentNamespace.Value == RootName));

            foreach (NamespaceInfo ns in namespaces)
            {
                result.Add(new NamespaceRow(ns, Settings.GetTheme(ns.Name),
                                            Pages.GetPages(ns).Count, Pages.GetCategories(ns).Count,
                                            canSetPermissions, txtCurrentNamespace.Value == ns.Name));
            }

            rptNamespaces.DataSource = result;
        }
        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);
            }
        }
Example #3
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;
            }
        }
Example #4
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;
        }
Example #5
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;
        }
Example #6
0
        protected void rptNamespaces_ItemCommand(object sender, RepeaterCommandEventArgs e)
        {
            txtCurrentNamespace.Value = e.CommandArgument as string;

            string currentWiki = DetectWiki();

            NamespaceInfo nspace = txtCurrentNamespace.Value != RootName?
                                   Pages.FindNamespace(currentWiki, txtCurrentNamespace.Value) : null;

            if (e.CommandName == "Select")
            {
                // rptNamespaces.DataBind(); Not needed because the list is hidden on select

                txtName.Enabled = false;
                txtName.Text    = nspace != null ? nspace.Name : RootNameUnescaped;
                txtNewName.Text = "";
                cvName.Enabled  = false;
                cvName2.Enabled = false;
                LoadDefaultPages();

                btnCreate.Visible = false;
                btnSave.Visible   = true;
                btnDelete.Visible = true;
                // Cannot delete root namespace
                btnDelete.Enabled = nspace != null;
                // Cannot rename root namespace
                btnRename.Enabled = nspace != null;

                pnlList.Visible          = false;
                pnlEditNamespace.Visible = true;

                lblResult.Text     = "";
                lblResult.CssClass = "";

                string[] theme = Settings.GetTheme(currentWiki, nspace != null ? nspace.Name : null).Split(new char[] { '|' });

                providerThSelector.SelectedProvider = theme[0];
                providerThSelector.SelectedThemes   = theme[1];
            }
            else if (e.CommandName == "Perms")
            {
                if (!AdminMaster.CanManagePermissions(SessionFacade.GetCurrentUsername(), SessionFacade.GetCurrentGroupNames(currentWiki)))
                {
                    return;
                }

                permissionsManager.CurrentResourceName = nspace != null ? nspace.Name : null;

                lblNamespaceName.Text = nspace != null ? nspace.Name : RootName;

                pnlList.Visible        = false;
                pnlPermissions.Visible = true;

                lblResult.Text     = "";
                lblResult.CssClass = "";
            }
        }
Example #7
0
        protected void rptPages_ItemCommand(object sender, RepeaterCommandEventArgs e)
        {
            txtCurrentPage.Value = e.CommandArgument as string;

            if (e.CommandName == "Select")
            {
                // Permissions are checked in ActivatePageEditor()

                ActivatePageEditor();
            }
            else if (e.CommandName == "Perms")
            {
                if (!AdminMaster.CanManagePermissions(SessionFacade.GetCurrentUsername(), SessionFacade.GetCurrentGroupNames()))
                {
                    return;
                }

                ActivatePagePermissionsManager();
            }
        }
        protected void rptNamespaces_ItemCommand(object sender, RepeaterCommandEventArgs e)
        {
            txtCurrentNamespace.Value = e.CommandArgument as string;

            NamespaceInfo nspace = txtCurrentNamespace.Value != RootName?
                                   Pages.FindNamespace(txtCurrentNamespace.Value) : null;

            if (e.CommandName == "Select")
            {
                // rptNamespaces.DataBind(); Not needed because the list is hidden on select

                string theme = Settings.GetTheme(nspace != null ? nspace.Name : null);

                txtName.Enabled = false;
                txtName.Text    = nspace != null ? nspace.Name : RootNameUnescaped;
                txtNewName.Text = "";
                cvName.Enabled  = false;
                cvName2.Enabled = false;
                LoadDefaultPages();
                lstTheme.SelectedIndex = -1;
                foreach (ListItem item in lstTheme.Items)
                {
                    if (item.Value == theme)
                    {
                        item.Selected = true;
                        break;
                    }
                }
                providerSelector.SelectedProvider = nspace != null?nspace.Provider.ToString() : Settings.DefaultPagesProvider;

                providerSelector.Enabled = false;

                btnCreate.Visible = false;
                btnSave.Visible   = true;
                btnDelete.Visible = true;
                // Cannot delete root namespace
                btnDelete.Enabled = nspace != null;
                // Cannot rename root namespace
                btnRename.Enabled = nspace != null;

                pnlList.Visible          = false;
                pnlEditNamespace.Visible = true;

                lblResult.Text     = "";
                lblResult.CssClass = "";
            }
            else if (e.CommandName == "Perms")
            {
                if (!AdminMaster.CanManagePermissions(SessionFacade.GetCurrentUsername(), SessionFacade.GetCurrentGroupNames()))
                {
                    return;
                }

                permissionsManager.CurrentResourceName = nspace != null ? nspace.Name : null;

                lblNamespaceName.Text = nspace != null ? nspace.Name : RootName;

                pnlList.Visible        = false;
                pnlPermissions.Visible = true;

                lblResult.Text     = "";
                lblResult.CssClass = "";
            }
        }