> Mobilité > Gérer les comptes utilisateur, 2ème partie

Gérer les comptes utilisateur, 2ème partie

Mobilité - Par iTPro.fr - Publié le 24 juin 2010
email

par Ethan Wilansky - Mis en ligne le 12/01/2005 - Publié en Mars 2004

Le fonctionnement interne de 3U

Dans la 1ère partie de « Gérer les comptes utilisateur », j'ai présenté mon User Update Utility (3U), un utilitaire graphique à  la fois léger, simple et puissant pour maintenir des comptes utilisateur dans un domaine AD (Active Directory). J'ai créé cet outil pour administrer les comptes utilisateur dans un domaine AD validé pour Exchange 2000 Server. Mais je l'ai modifié depuis afin qu'il puisse administrer des comptes utilisateur dans des domaines AD sans Exchange 2000 (ou Exchange Server 2003) ...Dans la 1ère partie, j'ai décrit les divers fichiers de 3U, les préparations pour l'utilisation de 3U, et l'exécution de l'utilitaire. Ensuite, j'ai entamé l'exploration du code de 3U en décrivant comment il se connecte à  AD et construit l'interface. Dans ce second article, je poursuis l'exploration du code en décrivant la manière dont 3U prend à  son compte l'administration des comptes utilisateur en appelant les diverses sousroutines dans UserUpadte.hta, Results.htm et PropPage.htm.

Gérer les comptes utilisateur, 2<sup>ème</sup> partie

UserUpdate.hta est le point
d’entrée de 3U. Une fois la
connexion avec AD établie et
l’interface construite, 3U est
prêt : vous pouvez entrer les
critères de recherche et cliquer
sur le bouton Find que présente
UserUpdate.hta.
Un clic sur le bouton Find
lance la sous-routine Find-
Script, que montre le listing 1.
FindScript vérifie que vous
avez entré des données dans
un champ au moins, comme le
montre le code du renvoi A du
listing 1. Si vous n’en avez pas
entré, UserUpdate.hta vous indique
que vous devez entrer
des critères de recherche dans un ou plusieurs champs. Si
vous avez entré des données, FindScript appelle la sous-routine
ADSISearch (illustrée dans le listing 2) et transmet à  la
sous-routine les noms des attributs qui contiennent des valeurs.
Souvenez-vous de la sous-routine BuildElement, vue
dans la 1ère partie. Le dernier paramètre de cette sous-routine a attribué le IDAPDisplayName correspondant à  l’attribut
Name du tag Input. La sous-routine FindScript recherche
le IDAPDisplayName stocké dans l’attribut nom pour n’importe
quels champs qui contiennent des valeurs, puis transmet
la liste d’attributs résultante à  la sous-routine
ADSISearch.
ADSISearch utilise le provider OLE DB ADSI (Active
Directory Service Interfaces) pour interroger AD pour tous
les comptes utilisateur qui correspondent aux critères spécifiés
sur le formulaire. Le renvoi A du listing 2 montre le code
permettant de préparer et d’exécuter la requête. La sousroutine
stocke le jeu de résultats issu de cette opération de
recherche, dans la variable strVals. ADSISearch compile ce
jeu de résultats en utilisant une instruction Do…Loop pour
faire une itération dans le recordset, comme le montre le
renvoi B du listing 2. Dans la boucle, le script utilise la collection
Fields pour lire les attributs obligatoires stockés dans
le recordset. La fonction CheckOptValue charge des attributs
facultatifs qui pourraient ne pas être attribués au
compte utilisateur ; les attributs non attribués renvoient une
valeur d’objet nulle (plutôt qu’une valeur vide) au script.
(Comme la fonction CheckOptValue est courte, je n’ai pas inclus
de listing pour elle. Pour examiner la fonction de plus
près, recherchez-la dans la fonction script de UserUpdate.
hta.) A l’intérieur de l’instruction Do…Loop ou de la
fonction CheckOptValue, ADSISearch ajoute un symbole
pipe (|) après chaque valeur d’attribut dans le jeu de résultats
pour séparer une cellule
de table de la suivante. A la fin
de chaque itération de boucle,
la sous-routine ajoute un
double symbole pipe (||) pour
indiquer la fin d’une ligne de
données.
Comme le montre la dernière
partie du listing 2,
ADSISearch utilise la fonction
VBScript Split pour créer une
matrice d’enregistrements. La
fonction Split utilise le symbole
double pipe comme séparateur
de chaque ligne de données.
ADSISearch stocke la
matrice dans la variable de matrice
arrRecords, puis passe la
matrice à  la sous-routine
BuildTable.
En utilisant le modèle objet
table DHTML (Dynamic
HTML), l a sous-routine
BuildTable utilise la matrice de
lignes pour construire une
table dans le iframe. BuildTable
commence par effacer les
éventuelles lignes existantes, y
compris l’en-tête de table,
comme le montre le code du renvoi A dans le
listing Web 1 (http://www.itpro.fr). Ensuite, la sous-routine
recrée l’en-tête de table et y insère les cellules. Puis,
BuildTable utilise la matrice arrRecords pour construire les
lignes et les cellules de la table et pour peupler les cellules
avec des valeurs, comme le montre le code du renvoi B dans
le listing Web 1. Pour chaque ligne dans le jeu de résultats,
BuildRow appelle la méthode insertRow de l’objet table et
définit divers attributs de l’objet ligne. Pour chaque cellule
dans le jeu de résultats, BuildRow appelle la méthode
insertCell de l’objet ligne et définit divers attributs de chaque
objet cellule. Après quoi, la sous-routine utilise la propriété
innerText de chaque objet cellule pour peupler chaque cellule
avec une valeur.
L’événement onClick de chaque ligne appelle la sous-routine IdentifyRow, qui effectue deux
tâches : elle valide le bouton Edit et elle
assigne l’attribut distinguishedName
d’un compte utilisateur à  l’attribut
nom du bouton Edit. Après quoi,
quand vous cliquerez sur le bouton
Edit, EditScript passera la valeur à  la
User Account Properties Page
(PropPage.htm). L’événement onClick
du bouton Edit se voit attribuer la
sous-routine EditScript (du listing 3)
pour accomplir la double tâche : charger
PropPage.htm et lui transmettre
une valeur. Comme l’événement
onDblclick de chaque ligne se voit attribuer
la sous-routine EditScript, on
peut aussi double-cliquer sur une ligne
mise en évidence dans le jeu de résultats
pour exécuter la sous-routine
EditScript.
EditScript est une courte sous-routine
qui charge une boîte de dialogue
sans mode. J’utilise une telle boîte de
dialogue afin que vous ne soyez pas
restreint à  ouvrir juste une instance de
la User Account Properties Page à  partir
de UserUpdate.hta. Bien au
contraire, vous pouvez, par exemple,
ouvrir deux instances de la page
Properties d’un compte utilisateur, apporter
des changements dans les deux
fenêtres, cliquer sur OK pour sauvegarder
vos changements et revenir à 
UserUpdate.hta. Quand vous visualiserez
à  nouveau les propriétés de ce
compte utilisateur, vous verrez tous
vos derniers changements.
Les sous-routines simples sont attribuées
aux événements onClick des
deux autres boutons dans UserUpdate.
hta : Reset et Close. Le bouton Reset
appelle la sous-routine ResetScript qui
efface tous les champs et le iframe. Le
bouton Close appelle la sous-routine
QuitScript, qui ferme UserUpdate.hta.

Téléchargez gratuitement cette ressource

Comment sécuriser la Digital Workplace ?

Comment sécuriser la Digital Workplace ?

Avec le recours généralisé au télétravail, les entreprises ont ouvert davantage leur SI. En dépit des précautions prises, elles ont mécaniquement élargi leur surface d’exposition aux risques. Découvrez 5 axes à ne pas négliger dans ce Top 5 Sécurité du Télétravail.

Mobilité - Par iTPro.fr - Publié le 24 juin 2010