SharePoint文档库中文件夹的权限管理
2010-08-09 23:19
423 查看
需求:
有一个文档库, 然后下面有很多的文件夹, 每个文件夹都有不同的权限系统, 因此当需要维护这些权限的时候,非常麻烦. 所以需要一个webpart来管理这些权限的内容.
分析:
1. 用一个treeview列出文档库中的所有文件夹的内容.
2. 使用一个gridview列出每个文件夹的权限, 点击不同的文件夹时候显示相应的权限.
3. gridview有删除的功能.
4. 可以添加uers到一个group, 把users/groups添加到某些文件夹中.
实现:
1. 创建了一个类显示权限的部分信息.:
class Permission<T>
{
private T _strUsers;
private T _strPermissions;
public T Users
{
get { return _strUsers; }
set { _strUsers = value; }
}
public T Permissions
{
get { return _strPermissions; }
set { _strPermissions = value; }
}
public Permission()
{
}
public Permission(T strUsers, T strPermissions)
{
_strUsers = strUsers;
_strPermissions = strPermissions;
}
}
2. 列出相关文件夹的权限:
List<Permission<string>> GetItemsPermissions(string ItemName)
{
List<Permission<string>> subListP = new List<Permission<string>>();
SPListItemCollection oSPListItems = currentList.Folders;
foreach (SPListItem oSPItem in oSPListItems)
{
if (oSPItem.Name == ItemName)
{
SPRoleAssignmentCollection oSPRoles = oSPItem.RoleAssignments;
subListP = GetRoles(oSPRoles);
}
}
return subListP;
}
List<Permission<string>> GetRoles(SPRoleAssignmentCollection oSPRoles)
{
List<Permission<string>> resultList = new List<Permission<string>>();
foreach (SPRoleAssignment oSPRole in oSPRoles)
{
SPRoleDefinitionBindingCollection oSPRoleDefinitions = oSPRole.RoleDefinitionBindings;
string strPermissionLevelName = string.Empty;
foreach (SPRoleDefinition oSPRoleDefinition in oSPRoleDefinitions)
{
strPermissionLevelName += oSPRoleDefinition.Name + ",";
}
strPermissionLevelName = strPermissionLevelName.Substring(0, strPermissionLevelName.Length - 1);
Permission<string> subPermission = new Permission<string>(oSPRole.Member.Name, strPermissionLevelName);
resultList.Add(subPermission);
}
return resultList;
}
3. 删除权限:
void DeleteRole(SPRoleAssignmentCollection oSPRoles, string strGroupName)
{
foreach (SPRoleAssignment oSPRole in oSPRoles)
{
if (oSPRole.Member.Name == strGroupName)
{
SPPrincipal currentPrincipal = oSPRole.Member;
oSPRoles.Remove(currentPrincipal);
break;
}
}
}
// Delete permissions in selected folder.
SPListItemCollection oSPListItems = myList.Folders;
foreach (SPListItem oSPItem in oSPListItems)
{
if (oSPItem.Name == strNodeName)
{
if (!oSPItem.HasUniqueRoleAssignments) oSPItem.BreakRoleInheritance(true);
SPRoleAssignmentCollection oSPRoles = oSPItem.RoleAssignments;
foreach (string strGroup in ListGroups)
{
DeleteRole(oSPRoles, strGroup);
}
}
}
4. 添加user到group:
int AddUserToGroup(string strUserName, string strGroupName, SPWeb myWeb)
{
SPUser oSPUser = GetSPUser(strUserName, myWeb);
int GroupId = 0;
if (oSPUser != null)
{
SPGroupCollection oSPGroups = myWeb.Groups;
foreach (SPGroup oSPGroup in oSPGroups)
{
if (oSPGroup.Name == strGroupName)
{
oSPGroup.AddUser(oSPUser);
GroupId = oSPGroup.ID;
}
}
}
return GroupId;
}
5. 添加users/groups到指定的文件夹中:
// 获得选中的permissions
List<string> ListPermissions = new List<string>();
foreach (ListItem Item in CheckBoxListPermissions.Items)
{
if (Item.Selected)
{
ListPermissions.Add(Item.Text);
}
}
// 获得user/group
if (currentUser != null)
{
oSPRole = new SPRoleAssignment(currentUser);
}
else if (currentGroup != null)
{
oSPRole = new SPRoleAssignment(currentGroup);
}
foreach (string strRoleDefinition in ListPermissions)
{
oSPRole.RoleDefinitionBindings.Add(myWeb.RoleDefinitions[strRoleDefinition]);
}
// 添加到指定的文件夹中
SPListItemCollection oSPListItems = myList.Folders;
foreach (SPListItem oSPItem in oSPListItems)
{
if (!oSPItem.HasUniqueRoleAssignments) oSPItem.BreakRoleInheritance(true);
if (oSPItem.Name == strSelectNode)
{
oSPItem.RoleAssignments.Add(oSPRole);
}
}
效果:
1. 显示权限的页面:
2. 添加users/groups 的页面.
引用地址:http://blog.csdn.net/jiangxng/archive/2008/05/29/2494427.aspx
有一个文档库, 然后下面有很多的文件夹, 每个文件夹都有不同的权限系统, 因此当需要维护这些权限的时候,非常麻烦. 所以需要一个webpart来管理这些权限的内容.
分析:
1. 用一个treeview列出文档库中的所有文件夹的内容.
2. 使用一个gridview列出每个文件夹的权限, 点击不同的文件夹时候显示相应的权限.
3. gridview有删除的功能.
4. 可以添加uers到一个group, 把users/groups添加到某些文件夹中.
实现:
1. 创建了一个类显示权限的部分信息.:
class Permission<T>
{
private T _strUsers;
private T _strPermissions;
public T Users
{
get { return _strUsers; }
set { _strUsers = value; }
}
public T Permissions
{
get { return _strPermissions; }
set { _strPermissions = value; }
}
public Permission()
{
}
public Permission(T strUsers, T strPermissions)
{
_strUsers = strUsers;
_strPermissions = strPermissions;
}
}
2. 列出相关文件夹的权限:
List<Permission<string>> GetItemsPermissions(string ItemName)
{
List<Permission<string>> subListP = new List<Permission<string>>();
SPListItemCollection oSPListItems = currentList.Folders;
foreach (SPListItem oSPItem in oSPListItems)
{
if (oSPItem.Name == ItemName)
{
SPRoleAssignmentCollection oSPRoles = oSPItem.RoleAssignments;
subListP = GetRoles(oSPRoles);
}
}
return subListP;
}
List<Permission<string>> GetRoles(SPRoleAssignmentCollection oSPRoles)
{
List<Permission<string>> resultList = new List<Permission<string>>();
foreach (SPRoleAssignment oSPRole in oSPRoles)
{
SPRoleDefinitionBindingCollection oSPRoleDefinitions = oSPRole.RoleDefinitionBindings;
string strPermissionLevelName = string.Empty;
foreach (SPRoleDefinition oSPRoleDefinition in oSPRoleDefinitions)
{
strPermissionLevelName += oSPRoleDefinition.Name + ",";
}
strPermissionLevelName = strPermissionLevelName.Substring(0, strPermissionLevelName.Length - 1);
Permission<string> subPermission = new Permission<string>(oSPRole.Member.Name, strPermissionLevelName);
resultList.Add(subPermission);
}
return resultList;
}
3. 删除权限:
void DeleteRole(SPRoleAssignmentCollection oSPRoles, string strGroupName)
{
foreach (SPRoleAssignment oSPRole in oSPRoles)
{
if (oSPRole.Member.Name == strGroupName)
{
SPPrincipal currentPrincipal = oSPRole.Member;
oSPRoles.Remove(currentPrincipal);
break;
}
}
}
// Delete permissions in selected folder.
SPListItemCollection oSPListItems = myList.Folders;
foreach (SPListItem oSPItem in oSPListItems)
{
if (oSPItem.Name == strNodeName)
{
if (!oSPItem.HasUniqueRoleAssignments) oSPItem.BreakRoleInheritance(true);
SPRoleAssignmentCollection oSPRoles = oSPItem.RoleAssignments;
foreach (string strGroup in ListGroups)
{
DeleteRole(oSPRoles, strGroup);
}
}
}
4. 添加user到group:
int AddUserToGroup(string strUserName, string strGroupName, SPWeb myWeb)
{
SPUser oSPUser = GetSPUser(strUserName, myWeb);
int GroupId = 0;
if (oSPUser != null)
{
SPGroupCollection oSPGroups = myWeb.Groups;
foreach (SPGroup oSPGroup in oSPGroups)
{
if (oSPGroup.Name == strGroupName)
{
oSPGroup.AddUser(oSPUser);
GroupId = oSPGroup.ID;
}
}
}
return GroupId;
}
5. 添加users/groups到指定的文件夹中:
// 获得选中的permissions
List<string> ListPermissions = new List<string>();
foreach (ListItem Item in CheckBoxListPermissions.Items)
{
if (Item.Selected)
{
ListPermissions.Add(Item.Text);
}
}
// 获得user/group
if (currentUser != null)
{
oSPRole = new SPRoleAssignment(currentUser);
}
else if (currentGroup != null)
{
oSPRole = new SPRoleAssignment(currentGroup);
}
foreach (string strRoleDefinition in ListPermissions)
{
oSPRole.RoleDefinitionBindings.Add(myWeb.RoleDefinitions[strRoleDefinition]);
}
// 添加到指定的文件夹中
SPListItemCollection oSPListItems = myList.Folders;
foreach (SPListItem oSPItem in oSPListItems)
{
if (!oSPItem.HasUniqueRoleAssignments) oSPItem.BreakRoleInheritance(true);
if (oSPItem.Name == strSelectNode)
{
oSPItem.RoleAssignments.Add(oSPRole);
}
}
效果:
1. 显示权限的页面:
2. 添加users/groups 的页面.
引用地址:http://blog.csdn.net/jiangxng/archive/2008/05/29/2494427.aspx
相关文章推荐
- SharePoint文档库中文件夹的权限管理
- 文档库中文件夹的权限管理
- 文档库中文件夹的权限管理
- SharePoint 2010 文档管理系列
- SharePoint 2010 文档管理之点击次数
- SharePoint _layouts下自定义程序页面权限管理
- SharePoint下用C#代码上传文档至文档库的子文件夹中
- Powershell目录文件夹管理权限的继承和指定方法
- TIM学习文档20-- 权限管理
- sharepoint 2016 学习系列篇(20)-文档库应用篇-(2)在文档库中创建文件夹
- SharePoint 判断用户在文件夹上是否有权限的方法
- SharePoint _layouts下自定义程序页面权限管理
- SharePoint 2010 禁用列表或文档库新建文件夹命令的三种方法
- SharePoint 2010文档管理的自动分发功能
- sharepoint 根据添加的列表项给文档库创建文件夹
- 文档库文件夹权限
- Mobox企业网盘文档权限管理的技术实现
- sharePoint文档管理架构和需求
- 为AD安全组或账户设置Sharepoint库文件夹访问权限 推荐
- SharePoint 2013 开发文档管理字段小记