一、操作站点角色
核心类:
SPUser:表示一个站点用户(http://msdn.microsoft.com/library/en-us/spptsdk/html/tscSPUser.asp?frame=true)
SPUserCollection:表示包含多个用户的集合(http://msdn.microsoft.com/library/en-us/spptsdk/html/tscSPUserCollection.asp?frame=true)
SPRole:表示一个角色对象(http://msdn.microsoft.com/library/en-us/spptsdk/html/tscSPRole.asp?frame=true)
SPRoleCollection:表示包含多个角色的集合(http://msdn.microsoft.com/library/en-us/spptsdk/html/tscSPRoleCollection.asp?frame=true)
SPWeb(表示一个站点)包含一个Roles属性(SPRoleCollection类型),表示站点中所有的角色。SPRole包含一个Users属性(SPUserCollection类型),表示角色中所包含的所有用户。SPUser包含一个Roles属性(SPRoleCollection属性),表示用户所从属于的所有角色。
SPRole的Add()方法用于将某用户加入到自身这个角色中。RemoveUser()方法用于将某用户排除出自身这个角色。更改一个角色的信息后,调用Update()方法更新回数据源。
下面代码示例遍历当前站点下所有的角色,然后遍历每个角色中的所有用户。由于每个用户可从属于多个角色,所以输出的用户信息会有重复。
foreach(SPRole role in SPControl.GetContextWeb(HttpContext.Current).Roles)
{
Response.Write(“角色” + role.Name + “包含成员:”);
foreach(SPUser user in role.Users)
{
Response.Write(user.Name + “;”);
}
Response.Write(“<br>”);
}
二、操作文档库权限
核心类:
SPList:表示一个列表,文档库也是一个列表。(http://msdn.microsoft.com/library/en-us/spptsdk/html/tscSPList.asp?frame=true)
SPPermission:表示一项授权(http://msdn.microsoft.com/library/en-us/spptsdk/html/tscSPPermission.asp?frame=true)
SPPermissionCollection:表示包含多项授权的一个集合(http://msdn.microsoft.com/library/en-us/spptsdk/html/tscSPPermissionCollection.asp?frame=true)
SPRights:用来表示权限的枚举(http://msdn.microsoft.com/library/en-us/spptsdk/html/tsenSPRights.asp?frame=true)
SPList有一个Permissions属性(SPPermissionCollection类型),表示这个列表上所有的授权。每个SPPermission对应为一个被授权成员(可以是一个角色或一个用户)与某些权限。SPPermission的Member属性(SPMember类型,是SPUser和SPRole的父类)对应此项授权的被授权成员,PermissionMask属性(SPRights类型)对应此项授权的权限。
SPPermissionCollection的Add()方法用来增加一项授权,Remove()方法用来删除一项授权。
下面的代码示例遍历站点中的所有文档库,并查看用户“kaneboy”在每个文档库上有哪些权限,如果用户在某文档库上没有任何权限,则增加一项能查看文档库中文档的权限。
SPWeb web = SPControl.GetContextWeb(HttpContext.Current);
SPUser user = web.Users[“kaneboy”];
SPListCollection lists = web.GetListsOfType(SPBaseType.DocumentLibrary);
foreach(SPList list in lists)
{
Boolean bIncludeMember = false;
foreach(SPPermission perm in list.Permissions)
{
if (perm.Member.ID == user.ID)
{
bIncludeMember = true;
Response.Write(“在文档库” + list.Title + “上,用户” + user.Name + “的权限是:” + perm.PermissionMask.ToString() + “<br>”);
}
}
if (! bIncludeMember)
{
list.Permissions.Add(user, SPRights. ViewListItems);
}
}