Finalmente dopo un bel pò di tempo sono capitato su un progetto + o - interessante che mi ha dato la possibilità di approfondire qualcosina che mi interessava. La nostra bella classe preve prevede 2 metodi di inizializzazione dove setteremo il nostro bel path base:
InitDirectoryEntry() per accedere alla root del nostro repository e l'altro un semplice overload di InitDirectoryEntry(string ou) per accedere in nodo ben preciso del nostro repository.
Ogni ricerca si baserà du una connessione ben precisa, questa potrà essere di questi tipo:
DN = ou=Utenti, dc=dominio,dc=it
o più in dettaglio
DN = an=office, ou=Applicazioni, dc=dominio,dc=it ecc
Partendo da questa base, introduco brevemente lo scopo dei metodi:
public static string[] getObject(string objectClass, string PropertiesToLoad)
Ci permette di recuperare una ben determinata proprietà di un nostro oggetto.
Una volta passato lo schema e la proprietà da caricare avremo un comodissimo array di stringhe da leggere e da stampare.
public static DataTable readObject(string nome, string objectClass, string[]
PropertiesToLoad)
Una volta trovati i singoli oggetti, abbiamo voglia di conoscere le singole proprietà, quindi questo metodo non fa altro che impostare il nome dell'oggetto da ricercare NOME = "cn=daniele"
lo schema da caricare e le varie proprietà che caricheremo nel SearchDirecotry
search.PropertiesToLoad.AddRange(PropertiesToLoad);
che come si potrà notare accetta come input un array di stringhe.
Come ritorno questo metodo ci fornisce un DataTable, ma volendo possiamo crearci altri tipi di oggetti XML ecc.
I restanti metodi:
public static bool addObject(string nome, string objectClass, string[] setProperties, string[] valProperties) public static bool modifyObject(string nome, string objectClass, string[] setProperties, string[] valProperties) public static bool deleteObject(string nome, string objectClass) non fanno altro che ricercare il nome passatogli e in caso che questo sia presente o meno aggiungere, cancellare o modificare l'oggetto nel repository.
Il metodo addObject e modifyObject come potete notare accettano 2 array di stringhe ("si potrebbe fare meglio, ma questa è la mia beta1") che contengono i nomi delle proprietà e i rispettivi valori che andremo a settare grazie al metodo
SettaProprieta(user, setProperties, valProperties);
Una cosa abbastanza banale ma può tornare sempre utile averla a disposizione.