2008-11-19 10 views
6

Je veux savoir s'il me manque quelque chose. Voici comment je le ferais: Pour SPFolder je voudrais changer les autorisations de l'élément associtaed (SPFolder.Item). Donc, je suppose que la gestion des permissions de SPFolder revient à gérer les permissions de SPListItem. Pour SPListItem je voudrais rompre l'héritage de rôle avec SPListItem.BreakRoleInheritance() et ensuite travailler avec RoleAssignments collections en ajoutant et en supprimant des rôles là.Sharepoint: Comment gérer par programme les autorisations SPFolder et SPListItem

Je me demande si RoleAssignments est le seul moyen de gérer les permissions de SPListItem (en plus de l'héritage) et existe un moyen de gérer les permissions individuelles sans rôles. Il existe également la propriété EffectiveBasePermissions mais je ne suis pas sûr.

La question est donc existe-t-il d'autres moyens (en plus de l'héritage) pour gérer les autorisations SPListItem en dehors de la collection RoleAssignments?

@Edit: Il y a aussi AllRolesForCurrentUser, mais je suppose que vous pouvez obtenir la même information de la propriété RoleAssignments, donc celle-ci est juste pour plus de commodité.

@EDIT: Comme Flo note dans sa réponse, il y a un problème avec la mise en

folder.ParentWeb.AllowUnsafeUpdates = true; 

Et en utilisant BreakRoleInheritance avec l'argument de « faux » (à savoir sans copier les autorisations de l'objet parent). simplement

folder.Item.BreakRoleInheritance(false); 

BreakRoleInheritance ne fonctionnera pas sur demande GET que vous attendez après avoir laissé des mises à jour non sécuritaires. La méthode réinitialise vraisemblablement AllowUnsafeUpdates à 'false'.

Une solution de contournement Je sais que pour cela est de supprimer manuellement les autorisations héritées après avoir BreakRoleInheritance (true), comme ceci:

folder.Item.BreakRoleInheritance(false); 
while(folder.Item.RoleAssignments.Count > 0) { 
    folder.Item.RoleAssignments.Remove(0); 
} 

Merci!

Répondre

3

Vous l'avez à peu près raison. Je crois que RoleAssignments sont en effet le seul mécanisme pour gérer les permissions directement. Voici un post qui montre un exemple rapide de la façon de le faire. J'ai également utilisé ces twoposts lorsque j'ai fait des choses plus compliquées.

3

Ce post sera également intéressant lorsque vous utiliserez la méthode BreakRoleInheritance(). Il s'agit d'un problème que vous pourriez rencontrer lors de l'utilisation de BreakRoleInheritance (false).

+0

Vous avez raison :) J'ai eu le même problème et j'ai également rencontré ce post. – axk

Questions connexes