SetPermissionForPage() public static method

Sets a permission for a page.
public static SetPermissionForPage ( AuthStatus status, PageInfo page, string action, UserGroup group ) : bool
status AuthStatus The authorization status.
page PageInfo The page.
action string The action of which to modify the authorization status.
group UserGroup The group subject of the authorization change.
return bool
コード例 #1
0
        /// <summary>
        /// Adds some ACL entries for a subject.
        /// </summary>
        /// <param name="subject">The subject.</param>
        /// <param name="page">The page.</param>
        /// <param name="grants">The granted actions.</param>
        /// <param name="denials">The denied actions.</param>
        /// <returns><c>true</c> if the operation succeeded, <c>false</c> otherwise.</returns>
        private bool AddAclEntriesForPage(string subject, string page, string[] grants, string[] denials)
        {
            bool isGroup = subject.StartsWith("G.");

            subject = subject.Substring(2);

            UserGroup group = null;
            UserInfo  user  = null;

            if (isGroup)
            {
                group = Users.FindUserGroup(currentWiki, subject);
            }
            else
            {
                user = Users.FindUser(currentWiki, subject);
            }

            AuthWriter authWriter = new AuthWriter(Collectors.CollectorsBox.GetSettingsProvider(currentWiki));

            foreach (string action in grants)
            {
                bool done = false;
                if (isGroup)
                {
                    done = authWriter.SetPermissionForPage(AuthStatus.Grant,
                                                           page, action, group);
                }
                else
                {
                    done = authWriter.SetPermissionForPage(AuthStatus.Grant,
                                                           page, action, user);
                }
                if (!done)
                {
                    return(false);
                }
            }

            foreach (string action in denials)
            {
                bool done = false;
                if (isGroup)
                {
                    done = authWriter.SetPermissionForPage(AuthStatus.Deny,
                                                           page, action, group);
                }
                else
                {
                    done = authWriter.SetPermissionForPage(AuthStatus.Deny,
                                                           page, action, user);
                }
                if (!done)
                {
                    return(false);
                }
            }

            return(true);
        }
コード例 #2
0
        protected void btnPublic_Click(object sender, EventArgs e)
        {
            string page = txtCurrentPage.Value;

            AuthWriter authWriter = new AuthWriter(Collectors.CollectorsBox.GetSettingsProvider(currentWiki));

            // Set permissions
            authWriter.SetPermissionForPage(AuthStatus.Grant, page, Actions.ForPages.ModifyPage,
                                            Users.FindUserGroup(currentWiki, Settings.GetAnonymousGroup(currentWiki)));
            authWriter.SetPermissionForPage(AuthStatus.Grant, page, Actions.ForPages.PostDiscussion,
                                            Users.FindUserGroup(currentWiki, Settings.GetAnonymousGroup(currentWiki)));

            RefreshPermissionsManager();
        }
コード例 #3
0
        /// <summary>
        /// Adds some ACL entries for a subject.
        /// </summary>
        /// <param name="subject">The subject.</param>
        /// <param name="page">The page.</param>
        /// <param name="grants">The granted actions.</param>
        /// <param name="denials">The denied actions.</param>
        /// <returns><c>true</c> if the operation succeeded, <c>false</c> otherwise.</returns>
        private bool AddAclEntriesForPage(string subject, string page, string[] grants, string[] denials)
        {
            bool isGroup = subject.StartsWith("G.");

            subject = subject.Substring(2);

            PageInfo currentPage = Pages.FindPage(page);

            UserGroup group = null;
            UserInfo  user  = null;

            if (isGroup)
            {
                group = Users.FindUserGroup(subject);
            }
            else
            {
                user = Users.FindUser(subject);
            }

            foreach (string action in grants)
            {
                bool done = false;
                if (isGroup)
                {
                    done = AuthWriter.SetPermissionForPage(AuthStatus.Grant,
                                                           currentPage, action, group);
                }
                else
                {
                    done = AuthWriter.SetPermissionForPage(AuthStatus.Grant,
                                                           currentPage, action, user);
                }
                if (!done)
                {
                    return(false);
                }
            }

            foreach (string action in denials)
            {
                bool done = false;
                if (isGroup)
                {
                    done = AuthWriter.SetPermissionForPage(AuthStatus.Deny,
                                                           currentPage, action, group);
                }
                else
                {
                    done = AuthWriter.SetPermissionForPage(AuthStatus.Deny,
                                                           currentPage, action, user);
                }
                if (!done)
                {
                    return(false);
                }
            }

            return(true);
        }
コード例 #4
0
        protected void btnLocked_Click(object sender, EventArgs e)
        {
            PageInfo page = Pages.FindPage(txtCurrentPage.Value);

            RemoveAllPermissions(page);

            // Set permissions
            AuthWriter.SetPermissionForPage(AuthStatus.Deny, page, Actions.ForPages.ModifyPage,
                                            Users.FindUserGroup(Settings.UsersGroup));
            AuthWriter.SetPermissionForPage(AuthStatus.Deny, page, Actions.ForPages.ModifyPage,
                                            Users.FindUserGroup(Settings.AnonymousGroup));

            RefreshPermissionsManager();
        }
コード例 #5
0
        protected void btnAdd_Click(object sender, EventArgs e)
        {
            // Add the selected subject with full control deny, then select it in the main list

            string subject = lstFoundSubjects.SelectedValue.Substring(2);
            bool   isGroup = lstFoundSubjects.SelectedValue.StartsWith("G.");

            bool done = false;

            switch (CurrentResourceType)
            {
            case AclResources.Namespaces:
                if (isGroup)
                {
                    done = AuthWriter.SetPermissionForNamespace(AuthStatus.Deny,
                                                                Pages.FindNamespace(CurrentResourceName), Actions.FullControl,
                                                                Users.FindUserGroup(subject));
                }
                else
                {
                    done = AuthWriter.SetPermissionForNamespace(AuthStatus.Deny,
                                                                Pages.FindNamespace(CurrentResourceName), Actions.FullControl,
                                                                Users.FindUser(subject));
                }
                break;

            case AclResources.Pages:
                if (isGroup)
                {
                    done = AuthWriter.SetPermissionForPage(AuthStatus.Deny,
                                                           Pages.FindPage(CurrentResourceName), Actions.FullControl,
                                                           Users.FindUserGroup(subject));
                }
                else
                {
                    done = AuthWriter.SetPermissionForPage(AuthStatus.Deny,
                                                           Pages.FindPage(CurrentResourceName), Actions.FullControl,
                                                           Users.FindUser(subject));
                }
                break;

            case AclResources.Directories:
                IFilesStorageProviderV30 prov = Collectors.FilesProviderCollector.GetProvider(CurrentFilesProvider);
                if (isGroup)
                {
                    done = AuthWriter.SetPermissionForDirectory(AuthStatus.Deny,
                                                                prov, CurrentResourceName, Actions.FullControl,
                                                                Users.FindUserGroup(subject));
                }
                else
                {
                    done = AuthWriter.SetPermissionForDirectory(AuthStatus.Deny,
                                                                prov, CurrentResourceName, Actions.FullControl,
                                                                Users.FindUser(subject));
                }
                break;

            default:
                throw new NotSupportedException();
            }

            if (done)
            {
                PopulateSubjectsList();

                // Select in main list and display permissions in actions matrix
                foreach (ListItem item in lstSubjects.Items)
                {
                    if (item.Value == lstFoundSubjects.SelectedValue)
                    {
                        item.Selected = true;
                        break;
                    }
                }
                DisplaySubjectPermissions(subject, isGroup ? SubjectType.Group : SubjectType.User);

                txtNewSubject.Text = "";
                lstFoundSubjects.Items.Clear();
                btnAdd.Enabled = false;
            }
            else
            {
                lblAddResult.CssClass = "resulterror";
                lblAddResult.Text     = Properties.Messages.CouldNotStorePermissions;
            }
        }