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