2010-12-09 36 views
0

J'ai besoin de savoir si un utilisateur (pas seulement actuel) est membre d'un groupe.Sharepoint: Comment déterminer si l'utilisateur est membre du groupe via l'API

En outre, j'ai besoin de savoir si l'utilisateur placé à l'intérieur du groupe de domaine, qui a placé dans le groupe de sharepoint. Par exemple:

Le groupe 'GroupA' contient l'utilisateur 'XXX \ Utilisateurs du domaine'. J'ai l'utilisateur 'XXX \ someuser' du domaine XXX et j'ai besoin de savoir si c'est un membre de 'GroupA'. Dans cet exemple, c'est vrai.

Pour l'instant je trouve qu'un seul moyen:

Impersonate comme utilisateur spécifié et vérifiez web.SiteGroups [ 'GroupA'] ContainsCurrentUser

Mais il est ressemble hack..

Répondre

0

devrait être le même que dans .NET:

principal.IsInRole('GROUPNAME') 

Ou vous pouvez essayer de faire ce qui suit:

WindowsIdentity identity = WindowsIdentity.GetCurrent(); 
WindowsPrincipal principal = new WindowsPrincipal(identity); 
if(principal.IsInRole(@"MYCOMPANY\AllFTE")){ 
    // perform operation allowed for fulltime employees 
} 

Peut-être que ce poste vous aide: http://mnigbor.blogspot.com/2010/05/using-windowsidentityimpersonate-in.html

+0

SPUser ne le fait pas avoir cette méthode (ou tout autre). Quel est le type de principal? –

+0

Le type serait IPrincipal. Avez-vous vu les groupes de propriétés dans la classe SPUser? Peut-être que cela vous aide? – Christian

+0

Property user.Groups contient uniquement des groupes de points de partage et ne contient pas de groupes spéciaux du domaine Windows tels que 'XXX \ Utilisateurs du domaine'. :( –