操作SharePoint Object Model完成两项操作的文档

下面的文档原本是我写给客户作为开发参考的,觉得应该也有不少朋友会觉得需要,所以贴出来。文档中说明了如何完成两种编程操作:管理站点中的角色和用户、管理文档库的权限授权。

另:我的那本《SPS2003开发指南》已经基本定由电子工业出版社出版,我的交稿时间会争取在春节之前,也就是约三个月后。没办法,工作比较忙,我又比较懒,辜负大家的期望了。大家觉得定价多少比较合适呢?:)

一、操作站点角色

 

核心类:

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属性),表示用户所从属于的所有角色。

 

SPRoleAdd()方法用于将某用户加入到自身这个角色中。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对应为一个被授权成员(可以是一个角色或一个用户)与某些权限。SPPermissionMember属性(SPMember类型,是SPUserSPRole的父类)对应此项授权的被授权成员,PermissionMask属性(SPRights类型)对应此项授权的权限。

 

SPPermissionCollectionAdd()方法用来增加一项授权,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);

}

}

posted on 2004-11-17 15:31  kaneboy  阅读(164)  评论(0编辑  收藏  举报

导航