Comment parler à Sharepoint: Si je n'ai que le nom complet
-
03-07-2019 - |
Question
Il semble que tous les efforts déployés pour communiquer avec Sharepoint via ses services Web nécessitent un domaine \ nom d'utilisateur. Par exemple:
UserProfileService.GetUserProfileByName(string accountName)
Le nom du compte doit être domaine \ nom d'utilisateur.
Si je n'ai que le nom complet (Prénom Nom), est-il possible de communiquer avec SharePoint? Est-il possible de convertir le nom complet en domaine \ nom d'utilisateur? Est-ce que domaine \ nom d'utilisateur est le seul moyen de le faire?
Merci d'avance. :)
Merci pour les réponses. :)
Le code ressemble à ceci:
using System.DirectoryServices;
const string ADPATH = "LDAP://myLDAPserver,validUserforAD";
const string USERNAME = "myDomain\\myUserName";
const string PASSWORD = "myPassword";
const string DOMAIN = "myDomain\\";
public static DirectoryEntry GetDirectoryObject()
{
DirectoryEntry directoryObject = new DirectoryEntry(ADPATH, USERNAME, PASSWORD, AuthenticationTypes.Secure);
return directoryObject;
}
public string GetUserNameByCompleteName(string completeName)
{
DirectoryEntry adObject = GetDirectoryObject();
//filter based on complete name
DirectorySearcher searcher = new DirectorySearcher(adObject);
searcher.Filter = "displayname=" + completeName;
SearchResult result = searcher.FindOne();
DirectoryEntry userInfo = result.GetDirectoryEntry();
//getting user name
string userName = (string)userInfo.Properties["samaccountname"].Value ?? string.Empty;
userInfo.Close();
adObject.Close();
return DOMAIN + userName;
}
La solution
Je suppose que vous pouvez essayer d'interroger Active Directory sur le prénom et le nom de l'utilisateur afin de déterminer son nom de compte.
Autres conseils
Vous pouvez utiliser un contrôle PeopleEditor
, qui saisira l'utilisateur si vous entrez la combinaison nom, prénom ou prénom, ou vous pouvez parcourir le répertoire.
people = new PeopleEditor();
people.MultiSelect = false;
this.Controls.Add(people);
...
int userID = Int32.Parse((((PickerEntity)people.ResolvedEntities[0]).EntityData["SPUserID"]).ToString());
SPUser user = SPContext.Current.Site.RootWeb.SiteUsers.GetByID(userID);
C'est un peu lourd et ridicule, mais ça marche. Si vous avez besoin de l'obtenir par programme, vous pouvez faire ce que Jason a dit ci-dessus et obtenir le SPUserCollection
et effectuer une boucle pour rechercher le SPUser
avec le nom d'affichage approprié.