Meilleur auteur de réponses
C# - Accéder aux informations d'utilisateurs de l'AD dans une liste Sharepoint

Question
-
Bonsoir,
Je souhaite créer un programme en C# qui puisse populer une liste SharePoint. Je fais cela en requetant le serviceWeb SharePoint. Jusque là pas de problème. La question se pose quand je souhaite remplir un champ de type Personne.
Si je souhaite seter un champ personne, il est attendu un contenu sous la forme "#id;prenom nom" (si j'ai bonne mémoire, j'ai possiblement inversé le dièse). Cela donnerait par exemple : "#23;Jean Dupuy". Pour le nom/prénom, pas de soucis, j'ai les informations avec le couple domain/login (information dont je dispose).
Cependant, comment trouver l'id renseigné ?
Petite précision, mon utilisateur n'est pas obligatoirement membre du sharepoint, il peut être uniquement présent dans l'AD.
Merci d'avance pour vos réponses, n'hésitez pas à m'indiquer si je n'ai pas été clair ou précis sur certains points.
- Déplacé Hengzhe Li mardi 21 février 2012 05:43 merge forum (Origine :Développement Sharepoint 2010)
Réponses
-
A priori la réponse est là : http://msdn.microsoft.com/en-us/library/websvcpeople.people.resolveprincipals.aspx
il s'agit donc d'un autre webservice.
Le tips consiste à mettre "true" sur le dernier paramètre de l'appel : addToUserInfoList
Personallement je ne l'ai jamais testé, mais à priori ça sonne comme le EnsureUser.
Un exemple d'appel en powershell ici : http://stackoverflow.com/questions/2544769/webservice-to-add-users-to-sharepoint-like-spweb-ensureuser
- Proposé comme réponse lionel limozin jeudi 24 novembre 2011 08:06
- Marqué comme réponse ChristopherRuiz jeudi 24 novembre 2011 08:37
Toutes les réponses
-
Bonjour,
En travaillant à partir d'un SPUser.
La propriété ID vous donnera l'ID de cette personne.
La propriété Name vous donnera son nom après le ";#".
Je crois même qu'en faisant le usr.ToString(), il l'affche sous la forme "ID;#PREFERREDNAME".
Il y a des méthodes dans la classe SPUtility qui permettent d'obtenir un SPUser depuis divers éléments (nom mail ou login).
Cordialement.
Visit my blog : http://rmatayron.blogspot.com/- Proposé comme réponse lionel limozin mardi 22 novembre 2011 08:05
- Non proposé comme réponse lionel limozin jeudi 24 novembre 2011 08:06
-
Bonjour Christopher
Effectivement comme l'a dit Rémi il faut passer par la classe SPUser.
Cependant concernant le fait que l'utilisateur n'est pas obligatoirement membre du SharePoint il faut prendre en charge sont ajout éventuel. Le plus simple est d'utiliser la méthode EnsureUser du SPWeb qui prends en entrée un login et renvoi en sortie le SPUser. Si l'utilisateur n'existe pas dans le SharePoint il est préalablement crée.
un petit exemple :
using (SPSite site = new SPSite("http://monintranet/")) { using (SPWeb w = site.OpenWeb()) { SPUser u = w.EnsureUser("lionel.limozin"); return string.Format("{0};#{1}", u.ID, u.Name); } }
- Proposé comme réponse lionel limozin mardi 22 novembre 2011 08:05
- Non proposé comme réponse lionel limozin jeudi 24 novembre 2011 08:06
-
Bonjour,
Merci pour vos réponses.
Actuellement j'utilise le webservice sharepoint, via une référence web pour accéder à mes donnnées. Sauf erreur de ma part, il me semble que SPSite est accessible via Microsoft.Sharepoint qui est une DLL accessible sur mon serveur. Le problème est que je n'ai pas du tout accès au serveur.
Est-ce moi qui fait une erreur ? Sinon, y a-t-il une autre méthode ?
Merci d'avance.
-
Effectivement j'avais zappé l'aspect webservice ! :)
Pour récupérer la liste des utilisateur d'un site il faut utiliser le service web WebSvcUserGroup. Avec la méthode GetAllUserCollectionFromWeb : http://msdn.microsoft.com/en-us/library/websvcusergroup.usergroup.getallusercollectionfromweb.aspxVous y retrouverez les infos nécessaire : ID, Name. Par contre je ne crois pas qu'il y ai d'équivalent à la méthode EnsureUser en version service web. Il faudra peut être prevoir une "moulinette" tournant sur le serveur pour créer aux préalables les utilisateurs qui sont suceptibles d'etre ajoutés ds ce champ user...
- Proposé comme réponse lionel limozin mardi 22 novembre 2011 09:40
-
En effet, j'avais connaissance de cette solution et le problème se posait donc quand l'utilisateur n'était pas au préalable enregistré.
Ne pouvant rien faire sur le serveur (ni accès, ni requête, ni webpart etc...) autre que la requête via WebService, je dois donc considérer mon problème comme insolvable :(...
Si quelqu'un a un autre élément, ça m'interesse :).
-
A priori la réponse est là : http://msdn.microsoft.com/en-us/library/websvcpeople.people.resolveprincipals.aspx
il s'agit donc d'un autre webservice.
Le tips consiste à mettre "true" sur le dernier paramètre de l'appel : addToUserInfoList
Personallement je ne l'ai jamais testé, mais à priori ça sonne comme le EnsureUser.
Un exemple d'appel en powershell ici : http://stackoverflow.com/questions/2544769/webservice-to-add-users-to-sharepoint-like-spweb-ensureuser
- Proposé comme réponse lionel limozin jeudi 24 novembre 2011 08:06
- Marqué comme réponse ChristopherRuiz jeudi 24 novembre 2011 08:37
-