如何以编程方式向特定列表的组/用户授予“读取”权限?。
我已在手动分享点中创建了一个群组。 也创建了一个列表。
现在,我想为特定群组/用户的特定列表添加“读取”权限。
webpart工作正常。
但不更新权限。 请帮助。
我正在粘贴下面的代码......
protected void Button1_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(TextBox1.Text) || string.IsNullOrEmpty(TextBox2.Text))
{
Label4.Text = "Please Enter Some Values";
//Label4.ForeColor = System.Drawing.Color.Red;
}
else
{
SPWeb web = SPContext.Current.Web;
SPGroup group = web.SiteGroups[TextBox2.Text];
SPWebApplication webApp = web.Site.WebApplication;
webApp.FormDigestSettings.Enabled = false;
web.AllowUnsafeUpdates = true;
SPRoleDefinition rDefination = web.RoleDefinitions.GetByType(SPRoleType.Reader);
SPRoleAssignment rAssignment = new SPRoleAssignment(group);
rAssignment.RoleDefinitionBindings.Add(rDefination);
SPList list = web.Lists[TextBox1.Text];
list.BreakRoleInheritance(true);
//SPItem item = list.
//item.RoleAssignments.Add(rAssignment);
list.Update();
Label4.Text = "Permission is successfully on item";
//Label4.ForeColor = System.Drawing.Color.Green;
TextBox1.Text = string.Empty;
TextBox2.Text = string.Empty;
web.RoleAssignments.Add(rAssignment);
web.Update();
web.AllowUnsafeUpdates = false;
webApp.FormDigestSettings.Enabled = true;
}
}
答案 0 :(得分:0)
尝试使用下面的代码。 runwithelevatedprivileges将允许简单用户更新列表。
SPSecurity.RunWithElevatedPrivileges(delegate()
{
if (string.IsNullOrEmpty(TextBox1.Text) || string.IsNullOrEmpty(TextBox2.Text))
{
Label4.Text = "Please Enter Some Values";
//Label4.ForeColor = System.Drawing.Color.Red;
}
else
{
SPWeb web = SPContext.Current.Web;
SPGroup group = web.SiteGroups[TextBox2.Text];
SPWebApplication webApp = web.Site.WebApplication;
webApp.FormDigestSettings.Enabled = false;
web.AllowUnsafeUpdates = true;
SPRoleDefinition rDefination = web.RoleDefinitions.GetByType(SPRoleType.Reader);
SPRoleAssignment rAssignment = new SPRoleAssignment(group);
rAssignment.RoleDefinitionBindings.Add(rDefination);
SPList list = web.Lists[TextBox1.Text];
list.BreakRoleInheritance(true);
//SPItem item = list.
//item.RoleAssignments.Add(rAssignment);
list.Update();
Label4.Text = "Permission is successfully on item";
//Label4.ForeColor = System.Drawing.Color.Green;
TextBox1.Text = string.Empty;
TextBox2.Text = string.Empty;
web.RoleAssignments.Add(rAssignment);
web.Update();
web.AllowUnsafeUpdates = false;
webApp.FormDigestSettings.Enabled = true;
}
});
答案 1 :(得分:0)
SPListItem listitem = listPositional.Items.Add();
listitem["Title"] = "data1";
//listitem["Enc"] = "Encrypted data";
listitem.Update();
listitem.BreakRoleInheritance(false);
SPGroup group = myWeb.SiteGroups["Restricted Readers"];
GrantPermission(listitem, myWeb, SPRoleType.Reader, group);
private static void GrantPermission(SPListItem CurrentListItem, SPWeb oSPWeb, SPRoleType SPRoleType, SPPrincipal SPPrincipal)
{
try
{
//Create one Role Definition i.e Full Controls, Contribute rights or Read rights etc.
SPRoleDefinition oSPRoleDefinition = oSPWeb.RoleDefinitions.GetByType(SPRoleType);
//Create one Role Assignment for the specified SP user or group.
SPRoleAssignment oSPRoleAssignment = new SPRoleAssignment(SPPrincipal);
//Bind the role definition to the role assignment object created for the user or group.
oSPRoleAssignment.RoleDefinitionBindings.Add(oSPRoleDefinition);
//Add it to the specified list item.
CurrentListItem.RoleAssignments.Add(oSPRoleAssignment);
//update the list item so that specified user assignment will have the access.
CurrentListItem.Update();
}
catch (Exception ex)
{
throw ex;
}
}