SPSecurity.RunWithElevatedPrivileges(delegate()
{
SPSite site = new SPSite("http://john1/");
SPWeb web = site.OpenWeb();
Console.WriteLine("Currently logged in as: " + web.CurrentUser.ToString() + "(" + web.CurrentUser.Name + ")");
SPUserToken userToken = web.AllUsers[@"LANGKAI\administrator"].UserToken;
site = new SPSite("http://john1/", userToken);
web = site.OpenWeb();
// Be sure the current user has permission to check permissions.
if (!web.DoesUserHavePermissions(SPBasePermissions.EnumeratePermissions))
{
return;
}
SPUser currentUser = web.CurrentUser;
Console.WriteLine(currentUser.LoginName);
SPList list = web.Lists["DZG Expense"];
SPListItem item = list.Items[0];
for (int i = 0; i < item.AllRolesForCurrentUser.Count; i++)
{
Console.WriteLine(item.AllRolesForCurrentUser[i].BasePermissions.ToString());
}
if (!item.HasUniqueRoleAssignments)
{
item.BreakRoleInheritance(false);
}
//查看某用户在当前item上的权限级别
SPUser user = web.EnsureUser(@"LANGKAI\liuxin");
Console.WriteLine(user.LoginName);
SPRoleAssignment ass = item.RoleAssignments.GetAssignmentByPrincipal((SPPrincipal)user);
foreach (SPRoleDefinition t in ass.RoleDefinitionBindings)
{
t.BasePermissions |= SPBasePermissions.ViewListItems;
//t.BasePermissions &= ~SPBasePermissions.ViewListItems;
Console.WriteLine(t.Name);
Console.WriteLine(t.BasePermissions.ToString());
t.Update();
}
//SPRoleDefinition role = web.RoleDefinitions.GetByType(SPRoleType.Reader);
//ass.RoleDefinitionBindings.Add(role);
//ass.Update();
foreach (SPRoleDefinition t in ass.RoleDefinitionBindings)
{
Console.WriteLine(t.Name);
Console.WriteLine(t.BasePermissions.ToString());
}
Console.WriteLine(list.DoesUserHavePermissions(SPBasePermissions.AddListItems));
//SPBasePermissions p = item.GetUserEffectivePermissions(user.LoginName);
//Console.WriteLine(p.ToString());
//SPPermissionInfo info = item.GetUserEffectivePermissionInfo(user.LoginName);
//Console.WriteLine(info.Permissions.ToString());
//Console.WriteLine("SPRoleAssignment....");
//SPRoleAssignment ra = new SPRoleAssignment(user);
//SPRoleDefinition role = web.RoleDefinitions.GetByType(SPRoleType.Reader);
//ra.RoleDefinitionBindings.Add(role);
//item.RoleAssignments.Add(ra);
//item.Update();
//SPPermissionInfo info2 = item.GetUserEffectivePermissionInfo(user.LoginName);
//Console.WriteLine(info2.Permissions.ToString());
//for (int i = 0; i < item.AllRolesForCurrentUser.Count; i++)
//{
// Console.WriteLine(item.AllRolesForCurrentUser[i].BasePermissions.ToString());
//}
//SPListItem item = properties.ListItem;
//SPRoleDefinitionBindingCollection usersRoles = web.AllRolesForCurrentUser;
//for (int i = 0; i < usersRoles.Count; i++)
//{
// //sw.Write(usersRoles[i].BasePermissions.ToString());
// Console.WriteLine(usersRoles[i].BasePermissions.ToString());
//}
//sw.Close();
});