ScrewTurn.Wiki.PermissionsManager.btnAdd_Click C# (CSharp) Method

btnAdd_Click() protected method

protected btnAdd_Click ( object sender, EventArgs e ) : void
sender object
e System.EventArgs
return void
        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;
            }
        }