Page 1 sur 1

@UserName & @UserRoles en JS

MessagePublié: 10 Juil 2008 à 12:38
par Michael DELIQUE
Il faut deux choses :

un agent nomé "agtUserNameRole" avec "exécuter en temps qu'utilisateur web" coché avec le code suivant
Code : Tout sélectionner
   Dim Session As NotesSession
   Dim vrValue As Variant
   Dim Retour As String
   
   On Error Goto ErreurHandle
   
   Set Session = New NotesSession
   Retour = "@UserRoles"
   vrValue = Evaluate (Retour)
   Retour = Session.EffectiveUserName
        Forall value In vrValue
           If Trim(Cstr(value))<>"" Then
               Retour = Retour+":"+Trim(Cstr(value))
            End If
        End Forall
        vrValue = Null 
   
   'Print "<Data>"+Retour+"</Data>"
        Print "Content-Type: text/javascript"
        Print "Cache-Control: private"
        Print Retour
   
   Exit Sub
ErreurHandle:
   Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   Exit Sub


et une petite fonction JS qui renvois un array avec en première valeur le nom canonique de l'utilisateur et ensuite les différent rôles du dis utilisateur

ATTENTION LA FONCTION FAIT UN APPEL SYNCHRONE ! => XHRequest.open("Get", urlRequeste , false);

Code : Tout sélectionner
function userNameRole(server,pathfile){

   if (server == "undefined" || server == null ||  server == "")  {server="";}
   if( pathfile == "undefined" || pathfile == null || pathfile == "" ){
      //si la valeur est vide récupere le chemin de la base en cours
                pathfile = (document.location.href).toLowerCase();
                pathfile = pathfile.substring(pathfile.indexOf('/', pathfile.indexOf('://')+3)+1, pathfile.lastIndexOf('nsf')+3);
   }
   if( (pathfile) == "" ){alert("pathFile is empty");return "";}
   
   var urlRequeste = server+"/"+pathfile+"/agtUserNameRole?OpenAgent"
   var XHRequest;

   if(window.XMLHttpRequest){
      // Firefox et autres
      XHRequest = new XMLHttpRequest();
      if (XHRequest.overrideMimeType){XHRequest.overrideMimeType('text/xml')}
   }else if(window.ActiveXObject){
      // Internet Explorer
         try { XHRequest = new ActiveXObject("Msxml2.XMLHTTP");
         }
         catch(e) {XHRequest = new ActiveXObject("Microsoft.XMLHTTP");
         }
   }else{
      //non supporté par le navigateur
      alert("Ajax Error :\n XMLHttpRequest non supporté par le navigateur");
      return "";
   }

   XHRequest.open("Get", urlRequeste , false);
   XHRequest.send(null);

      if (XHRequest.status == 200) {
      
      //return XHRequest.responseText.substring(XHRequest.responseText.indexOf("<Data>")+6,XHRequest.responseText.indexOf("</Data>")).split(':');
               return XHRequest.responseText.split(':');
      }else{
         alert("Ajax Error :\n" + XHRequest.statusText+"\n"+XHRequest.status+"\n"+urlRequeste);
         return "";
      }
}



les paramètres de la fonction userNameRole sont optionnelle, par défaut la fonction prend le serveur et la base en cours