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!
Vous avez raison :) J'ai eu le même problème et j'ai également rencontré ce post. – axk