none
Inserer adresse mail dans les users ... WSS V3.0 RRS feed

  • Question

  •  

    Bonjour ,

     

    Je suis actuellement sous WSS V3.0. Mon AD ne contient pas le mail des personnes hors mon sharepoin s'appuie sur l'AD. J'ai a ma disposition un fichier qui contient toutes les infos sur les utilisateurs.

    Quelles est la démarche à effectuer pour renseigner le mail de tous les utilisateurs qui vont s'authentifier sur le site ?

    SPUser ?

    Merci de votre aide ..

    lundi 16 juin 2008 07:15

Réponses

  • Bonjour

     

    Oui, il vous faut utiliser les SPUsers.

     

    Voici un petit exemple de code :

     

    using (SPSite site = new SPSite("http://localhost"))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        foreach (SPUser user in web.AllUsers)
                        {
                            if (!user.IsDomainGroup && user.Sid != "S-1-0-0" && string.IsNullOrEmpty(user.Email))
                            {
                                user.Email = GetEmail(user.LoginName);
                                user.Update();
                            }
                        }
                    }
                }

     

    Je teste ici si l'utilisateur n'est pas un groupe de domaine, que ce n'est pas le compte système et si le mail n'est pas rempli. La méthode GetEmail sera votre appel à votre fichier de référence (vous pouvez rajouter en plus le test pour savoir si le mail retourné est non vide pour éviter une assignation et un update inutiles).

     

    Bonne soirée

    lundi 16 juin 2008 16:40
  • Bonjour,

    Ne serait il pas envisageable de faire appel à la méthode Web.EnsureWebUser sur chaque ligne de votre fichier, ce qui aura pour effet de creer l'USER dans SharePoint puis de completer les informations comme la préciser Gat précédement ?

    Cordialement,
    lundi 23 juin 2008 12:56
    Modérateur
  • Pour avoir fait quelques tests en interne, il semble que ensureUser ne prend pas que le loginName contrairement à ce que dit la description de la fonction :

    J'ai testé avec l'utilisateur "Philippe Sentenac" (Display Name) et "philippe.sentenac@domain.local" (Email) qui est l'utilisateur DOMAIN\Philippe.Sentenac (Login)dans mon active directory.

    Ca marche dans tout les cas.

    et pour vous ?
    mardi 24 juin 2008 08:45
    Modérateur

Toutes les réponses

  • Bonjour

     

    Oui, il vous faut utiliser les SPUsers.

     

    Voici un petit exemple de code :

     

    using (SPSite site = new SPSite("http://localhost"))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        foreach (SPUser user in web.AllUsers)
                        {
                            if (!user.IsDomainGroup && user.Sid != "S-1-0-0" && string.IsNullOrEmpty(user.Email))
                            {
                                user.Email = GetEmail(user.LoginName);
                                user.Update();
                            }
                        }
                    }
                }

     

    Je teste ici si l'utilisateur n'est pas un groupe de domaine, que ce n'est pas le compte système et si le mail n'est pas rempli. La méthode GetEmail sera votre appel à votre fichier de référence (vous pouvez rajouter en plus le test pour savoir si le mail retourné est non vide pour éviter une assignation et un update inutiles).

     

    Bonne soirée

    lundi 16 juin 2008 16:40
  •  

    Les utilisateurs accedent en accès anonyme . Mais s'ils veulent faire une demande, ils doivent s'authentifier. Dans ce cas le mail de la personne est utilisé pour envoyé un mail de confirmation.

     

    web.AllUsers ne recuperent pas tout le monde, si ? Meme ceux qui ne sont pas explicitement renseignés sur les droits et même ceux qui ne sont jamais venu sur le site ?

    mardi 17 juin 2008 08:00
  • Bonjour

     

    Le Web.AllUsers contient les personnes à qui on a donné des droits d'accès explicitement (mais qui ne sont pas forcément encore venus) et ceux qui ont déjà visité le site (par exemple ceux contenus dans un groupe de domaine avec accès au site). Dans tous les cas, ce sont des utilisateurs clairement identifiés.

     

    En revanche, le principe de l'utilisateur anonyme, c'est justement qu'on ne connait rien de lui.

    Je ne comprends pas votre explication sur l'envoi du mail de confirmation : celui-ci ne sera envoyé qu'au moment de l'ajout de l'accès par l'administrateur du site.

     

    mardi 17 juin 2008 11:56
  •  

    Pour essayer d'etre plus clair. Les personnes qui accedent à mon portail y accedent de maniere anonyme. Ensuite, ils peuvent accéder à un formulaire en ligne uniquement si ils sont authentifiés grâce a un bouton qui les authentifie par l'AD.

     

    Ensuite ce formulaire recupere le mail de la personne pour lui envoyer un mail apres avoir valider le formulaire.

    Hors dans mon AD il n'y a pas de mail , il faut que je l'importe par un fichier . D'où ma question qui est:  comment faire pour que l'utilisateur ai bien son mail de renseigner et ainsi avoir un mail d'envoyé?

    mardi 17 juin 2008 12:15
  • Bonjour,

    Je vais essayer d'être plus clair en esperant une solution à mon problème...
    Je suis sur une plateforme WSS V3.0 . Mon site est mapper sur l'AD ou le mail des personnes n'est pas renseigné. Je dispose d'un fichier avec cette information (le mail des personnes).
    Sur mon site, il y a un acces en lecture pour tout ceux qui sont authentifiés. J'ai positionné les droits de lecture pour le groupe "domain users".

    Je dois récupérer le mail des personnes dans mon application.
    Comment je peux récupérer/connaître le mail de la personne ?

    Merci de votre aide !
    mercredi 18 juin 2008 19:26
  • Bonjour

     

    J'ai bien compris votre problème (du moins je l'espère). Il n'existe malheureusement pas de moyen de lever un événement lors de l'ajout d'une personne, et donc pas de moyen de remplir automatiquement l'adresse email.

     

    Je pense que le plus simple est dnc d'avoir un bout de code lorsque vous vous rendez sur votre formulaire qui récupère le login de la personne, retrouve son adresse email depuis votre fichier (si vous pouvez l'avoir au format XML c'est encore mieux) et mets à jour son email (code des SPUsers ci-dessus).

     

    Vos utilisateurs auront ainsi leur adresse email correctement saisie et utilisée pour les envois de mail.

    jeudi 19 juin 2008 21:20
  • Bonjour,

    Ne serait il pas envisageable de faire appel à la méthode Web.EnsureWebUser sur chaque ligne de votre fichier, ce qui aura pour effet de creer l'USER dans SharePoint puis de completer les informations comme la préciser Gat précédement ?

    Cordialement,
    lundi 23 juin 2008 12:56
    Modérateur
  • C'est exactement ca qu'il me faut !!! Dernier problème .. Dans mon fichier je n'ai que le login mais pas le domaine ..

    J'ai XERTPT au lieu de domain\XERTPT  et mes utilisateurs peuvent etre sur plusierus domaines en approbation...

    Hors EnsureUser  ne prend en parametre que le login name avec le domaine si je me trompe .... Comment je pourrai faire sacanhnt que j'ai une partie du login, j'ai son nom complet (name)

     

    Merci d'avance...

    mardi 24 juin 2008 08:03
  • Pour avoir fait quelques tests en interne, il semble que ensureUser ne prend pas que le loginName contrairement à ce que dit la description de la fonction :

    J'ai testé avec l'utilisateur "Philippe Sentenac" (Display Name) et "philippe.sentenac@domain.local" (Email) qui est l'utilisateur DOMAIN\Philippe.Sentenac (Login)dans mon active directory.

    Ca marche dans tout les cas.

    et pour vous ?
    mardi 24 juin 2008 08:45
    Modérateur
  • Ok je vais essayer et tester et je vous tiens au courant ..MErci..

     

    mardi 24 juin 2008 09:00
  • Bon ca marche !!! Apparemment on peut utiliser le display name (NOM + prénom) et ca fonctionne ... MAis j'ai encore un dernier souci .... Dans mon fichier j'ai toutes les personnes même ceux qui ne euvent s'uathentifier sur mon site .. en utilisant le Ensureuser je me trouve devant une erreure du type :

     

    Mon code :

    SPUSer user =  web.EnsureUser("xxxx");

    if(user != null)

    {

    user.mail etc....

    }

     

    Comment faire pour bypasser ce user si je tombe dans ce cas...??

     

    "The specified user 'xxxxxx' could not be found".

     

    mardi 24 juin 2008 13:18
  • Bonjour, si j'ai bien compris...

    Effectivement le EnsureUser ne renvoit pas null si il ne trouve pas l'user mais throw une exception. il ne vous reste plus qu'à faire :

    try
    {

    SPUSer user =  web.EnsureUser("xxxx");
    }
    catch (Exception ex)
    {
    //LOG de l'Erreur
    }

    mardi 24 juin 2008 13:40
    Modérateur
  •  

    Merci à vous !!!

    Tout fonctionne comme je le souhaite....

    mardi 24 juin 2008 13:57
  • Parfait, merci de valider les réponses maintenant Smile
    mardi 24 juin 2008 14:01
    Modérateur