Supprimer un utilisateur dans la base names

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Supprimer un utilisateur dans la base names

Messagepar sanaa83 » 16 Sep 2013 à 11:59

Bonjour,

Pour supprimer un utilisateur dans la base names.nsf, j'ai utilisé les deux instructions suivants dans un agent:

Code : Tout sélectionner
Dim adminp As NotesAdministrationProcess
Dim userName As Variant

FullCName = docNames.FullName(0)
Msgbox "FullCName  " & FullCName
         
Set adminp = session.CreateAdministrationProcess("PivotMail")
Call adminp.DeleteUser(FullCName, False, MAILFILE_DELETE_NONE , "Resiliations", False)


Après l'execution de l'agent, je chercher dans les bases names des serveurs, je trouve que l'utilisateur FullCName est tjrs existe.

Est ce que je dois modifier qlq chose dans la méthode?!
Dernière édition par sanaa83 le 16 Sep 2013 à 12:11, édité 1 fois.
sanaa83
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 119
Inscrit(e) le : 26 Avr 2010 à 10:33

Re: Supprimer un utilisateur dans la base names

Messagepar Michael DELIQUE » 16 Sep 2013 à 12:07

salut

l'aide en ligne t'en dira plus, mais ça me semble bon. Essais le tu verra bien si ça marche !


par contre je te conseil vivement de retirer le nom de ton serveur du code que tu as publier... toujours anonymiser les information que tu met sur internet.
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Supprimer un utilisateur dans la base names

Messagepar sanaa83 » 16 Sep 2013 à 12:25

Re,

Merci Michael pour votre retour,

Le nom du serveur que j'ai donné c'est pas le vrai serveur. Merci pour ton conseil comme même.

Sinon, pour la méthode, je l'ai testé plusieurs fois. mais cela ne fonctionne pas.

Par contre, j'ai une question:
Je demande dans quelle annuaire cherche cette méthode?!

Puisque je donne dans adminP je donne le nom de mon serveur.
Puis dans la ligne Call adminp.DeleteUser(FullCName, False, MAILFILE_DELETE_NONE , "Resiliations", False)
je trouve une erreur comme quoi l'utilisateur n'existe pas dans l'annuaire de mon serveur.
Et quand je cherche dans la base names de mon serveur. je trouve l'utilisateur dans la vue Personnes.

Donc, est ce que cette méthode cherche dans tous les annuaires ou seulement dans l'annuaire de serveur spécifié dans adminP???
sanaa83
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 119
Inscrit(e) le : 26 Avr 2010 à 10:33

Re: Supprimer un utilisateur dans la base names

Messagepar Michael DELIQUE » 16 Sep 2013 à 12:34

re,

de mémoire, oui c'est sur le serveur de l'adminp. voic une fonction que j'utilise pour cette méthode.
par contre les méthodes adminP peuvent être un peu capricieuse en script . il faut être bien précis sur les paramètres.

Code : Tout sélectionner
Public Function Admin_UserDelete(wlstParam List As String) As String
      %REM
      Liste des paramètres
      lstParam("ADMINISTRATIONPROCESSSERVER") = ""
      lstParam("USECERTIFICATEAUTHORITY") = ""
      lstParam("CERTIFICATEAUTHORITYORG") = ""
      lstParam("CERTIFIERFILE") = ""
      lstParam("CERTIFIERPASSWORD") = ""
      lstParam("USERNAME")
      lstParam("IMMEDIATE")
      lstParam("MAILFILEACTION")
      lstParam("DENYGROUP")
      lstParam("DELETEWINDOWSUSER")
   %END REM
   %REM
   Function Admin_UserDelete
   Description: delete a user
   liste des parametres à la fin de la fonction
   %END REM
   
   Dim AdminP As NotesAdministrationProcess
   Dim nmUser As NotesName
   Dim nbImmediate As Boolean
   Dim nbMailFileAction As Integer
   Dim DenyGroup As String
   Dim nbDeleteWindowsUser As Boolean
   Dim nbUsecertificateauthority As Boolean
   
   On Error GoTo CatchError

   Admin_UserDelete = ""
   
   If IsEmpty(wlstParam) = True Then
      Error 9999,"wlstParam is Empty"
      Exit Function
   End If
   
   If IsElement(wlstParam("ADMINISTRATIONPROCESSSERVER")) = False Then
      Error 9999,"ADMINISTRATIONPROCESSSERVER value is not defined"
      Exit Function
   End If
   If Trim(wlstParam("ADMINISTRATIONPROCESSSERVER")) = "" Then
      Error 9999,"ADMINISTRATIONPROCESSSERVER value is Empty"
      Exit Function
   End If
   Set nmUser = New NotesName(Trim(wlstParam("ADMINISTRATIONPROCESSSERVER")))
   wlstParam("ADMINISTRATIONPROCESSSERVER") = nmUser.Canonical
   Set nmUser = Nothing
   
   nbUsecertificateauthority = False
   If IsElement(wlstParam("USECERTIFICATEAUTHORITY")) = True Then
      Select Case UCase(Trim(wlstParam("USECERTIFICATEAUTHORITY")))
      Case "YES","Y","TRUE","T","1",CStr(True)
         nbUsecertificateauthority = True
      Case "","NO","N","FALSE","F","0","DEFAULT","D",CStr(False)
         nbUsecertificateauthority = False
      Case Else
         Error 9999,"UseCertificateAuthority, wrong value : "+wlstParam("USECERTIFICATEAUTHORITY")
         Exit Function
   End Select            
   End If
   
   If nbUsecertificateauthority = True Then
      If IsElement(wlstParam("CERTIFICATEAUTHORITYORG")) = False Then
         Error 9999,"CERTIFICATEAUTHORITYORG value is not defined"
         Exit Function
      End If
      If Trim(wlstParam("CERTIFICATEAUTHORITYORG"))= "" Then
         Error 9999,"CERTIFICATEAUTHORITYORG value is Empty"
         Exit Function
      End If   
      Set nmUser = New NotesName(Trim(wlstParam("CERTIFICATEAUTHORITYORG")))
      wlstParam("CERTIFICATEAUTHORITYORG") = nmUser.Canonical
      Set nmUser = Nothing
   Else
      If IsElement(wlstParam("CERTIFIERFILE")) = False Then
         Error 9999,"CertifierIDFile value is not defined"
         Exit Function
      End If
      If Trim(wlstParam("CERTIFIERFILE")) = "" Then
         Error 9999,"CertifierIDFile value is Empty"
         Exit Function
      End If   
      If IsElement(wlstParam("CERTIFIERPASSWORD")) = False Then
         Error 9999,"CERTIFIERPASSWORD value is not defined"
         Exit Function
      End If
      If wlstParam("CERTIFIERPASSWORD") = "" Then
         Error 9999,"CERTIFIERPASSWORD value is Empty"
         Exit Function
      End If
   End If
   
   If IsElement(wlstParam("USERNAME")) = False Then
      Error 9999,"USERNAME value is not defined"
      Exit Function
   End If
   If Trim(wlstParam("USERNAME")) = "" Then
      Error 9999,"USERNAME value is Empty"
      Exit Function
   End If
   
   If IsElement(wlstParam("IMMEDIATE")) = False Then
      Error 9999,"IMMEDIATE value is not defined"
      Exit Function
   End If
   Select Case UCase(Trim(wlstParam("IMMEDIATE")))
      Case "YES","Y","TRUE","T","1",CStr(True)
         nbImmediate  = True
      Case "NO","N","FALSE","F","0",CStr(False)
         nbImmediate = False
      Case ""
         Error 9999,"IMMEDIATE value is Empty"
         Exit Function
      Case Else
         Error 9999,"IMMEDIATE, wrong value : "+wlstParam("IMMEDIATE")
         Exit Function
   End Select
   
   If IsElement(wlstParam("MAILFILEACTION")) = False Then
      Error 9999,"MAILFILEACTION value is not defined"
      Exit Function
   End If
   
   Select Case UCase(Trim(wlstParam("MAILFILEACTION")))
      Case "MAILFILE_DELETE_ALL","DELETE_ALL","ALL","A","2"
         nbMailFileAction = 2
      Case "MAILFILE_DELETE_HOME","DELETE_HOME","HOME","H","1"
         nbMailFileAction = 1
      Case "MAILFILE_DELETE_NONE","DELETE_NONE","NONE","N","0"
         nbMailFileAction = 0
      Case ""
         Error 9999,"MAILFILEACTION value is Empty"
         Exit Function
      Case Else
         Error 9999,"MAILFILEACTION, wrong value : "+wlstParam("MAILFILEACTION")
         Exit Function
   End Select
   
   DenyGroup = ""   
   If IsElement(wlstParam("DENYGROUP")) = True Then
      If Trim(wlstParam("DENYGROUP")) <> "" Then
         DenyGroup = Trim(wlstParam("DENYGROUP"))
      End If
   End If
   
   nbDeleteWindowsUser = False
   If IsElement(wlstParam("DELETEWINDOWSUSER")) = True Then
      Select Case UCase(Trim(wlstParam("DELETEWINDOWSUSER")))
      Case "YES","Y","TRUE","T","1",CStr(True)
         nbDeleteWindowsUser = True
      Case "","NO","N","FALSE","F","0","DEFAULT","D",CStr(False)
         nbDeleteWindowsUser = False
      Case Else
         Error 9999,"DELETEWINDOWSUSER, wrong value : "+wlstParam("DELETEWINDOWSUSER")
         Exit Function
   End Select            
   End If
   
   If session Is Nothing Or DB Is Nothing Then
      Set session = New NotesSession
      Set DB = Session.CurrentDatabase
   End If
   
   Set nmUser = New NotesName(Trim(wlstParam("ADMINISTRATIONPROCESSSERVER")))
   Set AdminP = Session.Createadministrationprocess(nmUser.Canonical)
   If AdminP Is Nothing Then
      Error 9999,"AdminP is Nothing, Administration Process Server : "+nmUser.Abbreviated
      Exit Function
   End If
   Set nmUser = Nothing
   
   If nbUsecertificateauthority = True Then
      AdminP.Usecertificateauthority = True
      AdminP.Certificateauthorityorg =  Trim(wlstParam("CERTIFICATEAUTHORITYORG"))
      If AdminP.Iscertificateauthorityavailable = False Then
         Error 9999,"Certificate Authority not available : "+Trim(wlstParam("CERTIFICATEAUTHORITYORG"))
         Exit Function
      End If
   Else
      AdminP.Certifierfile = Trim(wlstParam("CERTIFIERFILE"))
      AdminP.Certifierpassword = wlstParam("CERTIFIERPASSWORD")
   End If
   
   Set nmUser = New NotesName(Trim(wlstParam("USERNAME")))   
   Admin_UserDelete = AdminP.Deleteuser(nmUser.Canonical, nbImmediate, nbMailfileaction, DenyGroup, nbDeleteWindowsUser)
   Set AdminP = Nothing
   Exit Function
CatchError:
   Set AdminP = Nothing
   Select Case Err
      Case 4000,4183
         Admin_UserDelete = "ERROR : "+CStr(Error)+" ("+CStr(Err)+")"
         Resume Next
      Case Else
         MsgBox "("+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Error " + CStr(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Line # "+Cstr(Erl),16," ERROR !"
         Admin_UserDelete = ""
   End Select
   Exit Function
End Function
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Supprimer un utilisateur dans la base names

Messagepar roubech » 16 Sep 2013 à 18:40

Pour comprendre un peu ton environnement, peux-tu préciser si on nomme AdminServer le serveur d'administratrion de ton domaine (qui est désigné comme serveur d'administration dans la LCA du carnet d'adresse principal), MailServer le serveur qui héberger la boite mail de l'utilisateur que tu essayes de supprimer et AppServer le serveur qui héberge la base applicative dans laquelle se trouve l'agent et sur lequel il est planifié.
Est-ce qu'il s'agit d'un seul et même serveur ?
La tache AdminP tourne sur ces 3 serveurs ?
La base Admin4.nsf est répliquée entre ces 3 serveurs ?
L'agent est lancé manuellement ou planifié sur AppServer ?
Quel est le niveau de sécurité de l'agent ? 3 ?
Si manuel, la personne qui lance l'agent a t elle les droits nécessaire ? accès au names, à admin4.nsf, à certlog.nsf ...
Si planifié, le signataire de l'agent a t il les droits suffisants ? agents restrictifs dans l'onglet sécurité du doc serveur ...

Je suppose que tu as déjà lu cette TechNote : http://www.ibm.com/developerworks/lotus ... inProcess/
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Re: Supprimer un utilisateur dans la base names

Messagepar sanaa83 » 16 Sep 2013 à 22:12

Bsr,

Merci Roubech pour votre feedback.

il s'agit de plusieurs serveur. Et l'agent est lancé manuellement via un bouton.

Vu que la méthode deleteUser et admiP n'ont pas été fonctionnelle comme il le faut, j'ai changé l'approche.

J'ai affecté le user dans un groupe d'intrus et j'ai supprimé le document Person dans la base names de serveur principal. Comme ça après la réplication, on aura pas de problème.

Merci bcp pour vos réactions :)
sanaa83
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 119
Inscrit(e) le : 26 Avr 2010 à 10:33

Re: Supprimer un utilisateur dans la base names

Messagepar sanaa83 » 16 Sep 2013 à 22:14

J'ai oublié de dire que j'ai bien lu cette documentation http://www.ibm.com/developerworks/lotus ... inProcess/

et j'ai appliqué la rubrique "deleting user". Mais c'etais pas efficace.
sanaa83
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 119
Inscrit(e) le : 26 Avr 2010 à 10:33

Re: Supprimer un utilisateur dans la base names

Messagepar roubech » 16 Sep 2013 à 22:19

ça ne supprime pas la base courrier du(es) serveur(s) et les éventuelles bases archives mail
ça ne supprime pas l'utilisateur de tous les groupes du carnet d'adresse, si des champs auteur/lecteur de toutes les bases applicatives ...
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Re: Supprimer un utilisateur dans la base names

Messagepar Jérôme Deniau » 17 Sep 2013 à 11:24

Euh? adminp supprime la base mail (et ses répliques) si c'est demandé et surtout validé par l'admin via la requête présente dans admin4, ça supprime AUSSI l'individu de tous les groupes DU Names, et une requête adminp demande de supprimer la référence du compte pour tous les serveurs (il faut par contre que les dits serveurs soit serveur d'admin dans la lca des bases mails et applicatives: c'est à l'admin de le faire AVANT).
Seul truc pas de suppression des bases d'archives et ça ça fait vraiment c......
Avatar de l’utilisateur
Jérôme Deniau
Maître-posteur
Maître-posteur
 
Message(s) : 497
Inscrit(e) le : 08 Mars 2013 à 09:52
Localisation : Rennes (Bretagne à l'Ouest de la France)

Re: Supprimer un utilisateur dans la base names

Messagepar sanaa83 » 17 Sep 2013 à 17:44

Bsr Jérôme,

Je peux confirmer que la méthode deleteUser ne supprime pas le document Person dans tous les names des serveurs.

Concernant la surpression de fichier courrier, il faut juste le préciser dans la méthode.

Merci bcp pour vos retours et vos réactions.
sanaa83
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 119
Inscrit(e) le : 26 Avr 2010 à 10:33

Re: Supprimer un utilisateur dans la base names

Messagepar Jérôme Deniau » 17 Sep 2013 à 17:57

La méthode deleteUser n'a besoin de supprimer que dans le names.nsf du serveur concerné, la réplication fait ensuite le boulot, sinon il faut forcer la réplication du names ou mieux créer une requête adminp.
Avatar de l’utilisateur
Jérôme Deniau
Maître-posteur
Maître-posteur
 
Message(s) : 497
Inscrit(e) le : 08 Mars 2013 à 09:52
Localisation : Rennes (Bretagne à l'Ouest de la France)


Retour vers Développement