2011-01-27 2 views
0

Est-ce que quelqu'un sait comment rompre l'héritage des rôles sur un site Web (c'est-à-dire arrêter d'hériter des autorisations de son parent) à l'aide d'ECMAscript?SharePoint 2010: Rupture de l'héritage des rôles avec ECMAScript

Voici le code JavaScript que je suis en train d'utiliser, mais je reçois une erreur d'exécution indiquant que les propriétés ne sont pas correctement initialisées:

var clientContext = new SP.ClientContext.get_current(); 
var web = clientContext.get_web(); 
clientContext.load(web); 

if (!web.get_hasUniqueRoleAssignments()) { 
    web.breakRoleInheritance(true, false); 
} 

Fait intéressant, si j'INTEROGATE l'objet Web pendant le débogage, Je peux voir que la propriété hasUniqueRoleAssignments et la fonction breakRoleInheritance existent en fait. En outre, MSDN indique que ces deux membres sont disponibles sur la classe SP.SecurableObject - j'aurais supposé qu'un Web ou une liste hériterait de cette classe.

Des idées?

Répondre

1

Selon Retrieving a Client Object Does Not Retrieve All Properties, vous devrez appeler ExecuteQueryAsync et utiliser get_hasUniqueRoleAssignments dans une fonction de délégué:

Dans le modèle d'objet serveur, lorsque vous retournez un objet SPWeb, toutes ses propriétés deviennent disponibles pour une utilisation dans code. Mais pour améliorer les performances dans le modèle d'objet client, lorsque vous renvoyez un objet Web, certaines propriétés ne sont pas incluses et vous devez les extraire explicitement. Par exemple, la classe Web hérite de la propriété HasUniqueRoleAssignments de la classe SecurableObject, mais lorsque vous renvoyez un objet Web, cette propriété n'est pas récupérée par défaut.

+0

L'exemple de code fourni dans l'article que vous avez fourni correspond exactement à ce dont j'avais besoin, jusque dans la propriété que je recherchais. Merci beaucoup Rich. –

Questions connexes