我的SharePoint頁面中有一個文檔庫,其中有10個文檔。如果UserA登錄,我希望他只能看到那些文件庫中的5個文件。我如何創建一些自定義文檔庫以使其工作?在SharePoint中創建自定義文檔庫
我也安裝了MOSS。
在此先感謝!
我的SharePoint頁面中有一個文檔庫,其中有10個文檔。如果UserA登錄,我希望他只能看到那些文件庫中的5個文件。我如何創建一些自定義文檔庫以使其工作?在SharePoint中創建自定義文檔庫
我也安裝了MOSS。
在此先感謝!
您可以在文檔庫中的每個文檔上配置不同的權限。只需選擇每個項目上的「管理權限」選項並從文檔庫級別中斷權限繼承。請注意,具有項目級權限的文檔太多可能會爲您創建維護噩夢。另一個選項可能是創建兩個具有不同權限的文檔庫。
編寫一個ItemEventReceiver,它基於庫中的字段(即包含不同角色的列)來分配權限。
我們通過創建一個列表來保存所有與分享點組相關的角色。
即
管理員 - >網站的所有者(SPGroup),公司管理員(SPGroup)
經理 - >管理(SPGroup)
然後在我們的內容類型,我們有該列表中的查找列。
下面是該ItemEventReceiver代碼:
public override void ItemUpdated(SPItemEventProperties properties)
{
lock (_lock)
{
try
{
using (SPSite site = new SPSite(properties.SiteId,
properties.ListItem.ParentList.ParentWeb.Site.SystemAccount.UserToken))
using (SPWeb web = site.OpenWeb(properties.RelativeWebUrl))
{
web.AllowUnsafeUpdates = true;
var item = web.Lists[properties.ListId].GetItemById(properties.ListItemId);
var roles = item["Roles"] as SPFieldLookupValueCollection;
var rolesList = web.Site.RootWeb.Lists["Company Roles"];
var groupsToAdd = new List<SPFieldUserValue>();
if (item.HasUniqueRoleAssignments)
{
item.ResetRoleInheritance();
item = item.ParentList.GetItemById(item.ID);
}
if (roles != null && roles.Count > 0)
{
// Iterate over the roles and see if there is a group associated
foreach (var role in roles)
{
var roleItem = rolesList.GetItemById(rol.LookupId);
if (roleItem != null)
{
// This is the SPgroup field in the rolesList
var groups = roleItem["Groups"] as SPFieldUserValueCollection;
if (groups != null)
{
groupsToAdd.AddRange(from g in groups
where g.User == null
select g);
}
}
}
if (groupsToAdd.Count > 0)
{
item.BreakRoleInheritance(false);
foreach (var value in groupsToAdd)
{
var group = web.Groups[value.LookupValue];
var assignment = web.RoleAssignments.GetAssignmentByPrincipal(group);
item.RoleAssignments.Add(assignment);
}
}
}
DisableEventFiring();
item.SystemUpdate(false);
EnableEventFiring();
}
}
catch (Exception ex)
{
//LOG ERROR
}
}
}
如果編碼不爲你工作,並在每一個文件,你不想設定權限,那麼還有第三個選項。我們使用設置了權限的文件夾。
例如
創建一個名爲「經理」的文件夾,中斷權限,並將權限設置爲只有管理員。 創建另一個名爲「員工1」的文件夾,中斷權限,併爲員工和僱主的經理設置貢獻權限。
將文件放在適當的文件夾中,它將繼承該文件夾的權限。
通過這種方式,管理人員可以查看管理員文件以及員工的所有文件。用戶只能看到他們自己的文件。
可以爲總部,區域1,區域2等完成類似的邏輯......併爲每個區域創建不同的組,然後將組分配給文件夾的權限。
請注意,在維護所有權限和性能時始終關注如何使用此設計,但我們一直在爲750多個用戶人羣和數千個文檔執行類似的操作,至今爲止我們一直在爲我們正常工作。
謝謝拉爾斯,但我將有許多文件在我的圖書館和方式許多用戶! – Etienne 2009-06-29 17:10:09