Chcę wiedzieć, czy czegoś brakuje. Oto, jak bym to zrobił: Dla SPFoldera zmieniłbym uprawnienia przypisanego elementu (SPFolder.Item). Przypuszczam, że zarządzanie uprawnieniami SPFolder sprowadza się do zarządzania uprawnieniami SPListItem. Dla SPListItem Chciałbym najpierw złamać dziedziczenie roli z SPListItem.BreakRoleInheritance()
, a następnie pracować z kolekcjami RoleAssignments
dodając i usuwając tam role.SharePoint: Jak programowo zarządzać uprawnieniami SPFolder i SPListItem
Zastanawiam się, czy RoleAssignments jest jedynym sposobem na zarządzanie uprawnieniami SPListItem (oprócz dziedziczenia) i czy istnieje sposób na zarządzanie poszczególnymi uprawnieniami bez ról. Istnieje również właściwość EffectiveBasePermissions, ale nie jestem pewien.
Pytanie brzmi: Czy istnieją inne sposoby (oprócz dziedziczenia) do zarządzania uprawnieniami SPListItem oprócz kolekcji RoleAssignments?
@Edit: istnieje również AllRolesForCurrentUser, ale myślę, że można uzyskać te same informacje z nieruchomości RoleAssignments, więc to jest po prostu dla wygody.
@Edit: W Flo stwierdza w swojej odpowiedzi nie ma problemu z ustawieniem
folder.ParentWeb.AllowUnsafeUpdates = true;
i korzystania BreakRoleInheritance
z argumentem „false” (czyli bez kopiowania uprawnień obiektu nadrzędnego).
folder.Item.BreakRoleInheritance(false);
BreakRoleInheritance
po prostu nie będzie działać na żądanie GET jak można się spodziewać po uwzględnieniu niebezpiecznych aktualizacji. Prawdopodobnie metoda resetuje AllowUnsafeUpdates
z powrotem na "fałsz".
Jedno wiem na obejście tego jest ręczne usuwanie uprawnień dziedziczonych po ciebie BreakRoleInheritance (true), tak:
folder.Item.BreakRoleInheritance(false);
while(folder.Item.RoleAssignments.Count > 0) {
folder.Item.RoleAssignments.Remove(0);
}
Dzięki!
Masz rację :) Miałem ten sam problem i natknąłem się na ten post. – axk