Article d’origine publié le jeudi 3 mai 2012

Un bon « ami du blog », Israel V., a eu la gentillesse de m’indiquer que la plupart des exemples de code que nous avons proposés pour les fournisseurs de revendications personnalisés présentent un petit défaut. Si vous suivez ces exemples, les messages électroniques qui sont normalement envoyés lorsque vous ajoutez une personne à un site ne sont pas envoyés. Évidemment, je me sens responsable comme tous les autres de ce problème et j’ai donc examiné la situation de plus près et j’ai également passé en revue le code qu’Israel a développé pour résoudre le problème.

Pour résumer, cet incident se produit si vous ajoutez un utilisateur à une collection de sites pour la première fois et qu’il n’y a pas d’adresse électronique associée à cette personne, parce qu’une synchronisation de profils n’a pas été effectuée ou pour une autre raison. Ainsi, comme vous pouvez l’imaginer, l’essentiel ici (et je retiens le scénario le plus simple) consiste à prendre une adresse électronique pour l’utilisateur au moment de l’ajout et de la placer dans la propriété appropriée dans votre classe PickerEntity. Maintenant, examinons quelques points particuliers.

L’ENDROIT d’où vous obtenez l’adresse électronique dépend entièrement du fournisseur de revendications. Si vous obtenez vos données d’Active Directory, vous pouvez interroger Active Directory pour les obtenir. Si vous utilisez SAML et que l’adresse électronique est la revendication d’identité, vous pouvez simplement la réutiliser. En fait, cette origine est variable selon la situation.

LE MOMENT souhaitable pour son utilisation correspond à celui où la méthode FillResolve est appelée. Comme vous le savez, cette méthode peut être appelée après qu’une personne ajoute une entrée au moyen du sélecteur de personnes ou lorsque cette personne tape une valeur dans le contrôle de saisie ou clique sur le bouton Résoudre. Comme je l’ai illustré dans plusieurs de mes exemples de code, pendant ce processus vous allez créer une instance de la classe PickerEntity afin que vous puissiez l’ajouter à la liste <PickerEntity> qui est passée dans la méthode.

LE MODE d’ajout consiste simplement à définir la propriété sur l’instance PickerEntity de cette manière :

//requis pour garantir le fonctionnement des messages électroniques de bienvenue :

pe.EntityData[PeopleEditorEntityDataKeys.Email] = "steve@stevepeschka.com";

Dans cet exemple, « pe » est simplement l’instance de la classe PickerEntity que j’ai créée, puis renvoyée à ma méthode FillResolve.

C’est aussi simple que cela. Le plus compliqué est probablement d’obtenir la valeur d’adresse électronique. Une fois que vous l’avez, il est assez simple de l’ajouter à la classe PickerEntity pour garantir le bon fonctionnement de vos messages électroniques de bienvenue. J’ai testé cette solution et vérifié que a) les messages électroniques de bienvenue étaient bien envoyés avec mon fournisseur de revendications personnalisé et b) qu’ils ONT COMMENCÉ à l’être après l’incorporation de cette modification. Merci encore à Israel V. pour l’information et l’exemple de code sur ce problème.

Ceci est un billet de blog localisé. L’article d’origine est disponible à l’adresse Getting Welcome Emails to Work with a Custom Claims Provider in SharePoint 2010