2006-04-18 15:49 #0 av: johan

I många mallprojekt och makron kan det vara användbart att hämta uppgifter om den inloggade användaren ur Active Directory istället för att låta användaren skriva in uppgifter själv gång på gång. Detta kan båda användas som en ren service eller för att tvinga in rätt uppgifter.

Active Directory (AD) kan också användas för att kontrollera rättigheter, t ex att man är med i en viss säkerhetsgrupp. Du kan då visa olika data för olika användare och vara säker på att rätt person ser rätt sak.

Observera att du måste vara ansluten till en domän för att nedanstående kod ska fungera.

Hämta uppgift ur Active Directory

För att hämta ut uppgifter ur Active Directory om den inloggade användaren behöver vi först skapa ett objekt med koppling till AD. Denna kod gör detta:

Set oAdSys = CreateObject("ADSystemInfo")

Set oUser = GetObject("LDAP://" & oAdSys.UserName)

Objektet oUser har nu egenskaper för olika uppgifter. Nedan ser du en tabell med uppgifter och vad de hämtar:

Namn

Hämtar

SAMAccountName

Inloggningsnamnet (utan domän)

DisplayName

Visningsnamnet i AD, oftast Förnamn Efternamn

GivenName

Förnamn

SN

Efternamn

CN

Common Name, visar namnet på användaren, gruppen eller datorn

Company

Företagsnamn

L

Stad (egentligen Location, men oftast användas detta för stad)

Department

Avdelning

Mail

E-postadress

facsimileTelephoneNumber

Faxnummer

Initials

Initialer

Mobile

Mobiltelefonnummer

StreetAddress

Gatuadress

TelephoneNumber

Telefonnummer

PostalCode

Postnummer

Det finns även fler egenskaper, men jag har här valt att endast ta upp de vanligaste.

För att hämta ut en uppgift ur AD använder du denna kod:

oUser.<egenskap>

T ex:

MsgBox oUser.DisplayName

Du kan också hämta ut uppgifter med metoden Get(egenskapsnamn), t ex:

MsgBox oUser.Get("PostalCode")

Kontrollera gruppmedlemskap

Du kan enkelt kontrollera om den inloggade användaren är medlem i en viss säkerhetsgrupp. Detta är mycket användbart om du vill visa olika data eller göra olika funktioner tillgängliga beroende på vem som är inloggad.

Egenskaper memberOf ger en samling med alla grupper som den inloggade användaren är medlem i. Nedanstående funktion kontrollera om användaren är medlem i en viss grupp:

Public Function IsMember(ByVal strGroup) As Boolean

    Dim strCurrent As Variant

    Dim oGroup As Object

    Dim oAdSys As Object

    Dim oUser As Object

    Set oAdSys = CreateObject("ADSystemInfo")

    Set oUser = GetObject("LDAP://" & oAdSys.UserName)

 

    For Each strCurrent In oUser.memberOf

        Set oGroup = GetObject("LDAP://" & strCurrent)

        If UCase(oGroup.CN) = UCase(strGroup) Then

            IsMember = True

            Exit Function

        End If

    Next

    IsMember = False

End Function

 

 

 

Av: johan

Datum för publicering

  • 2006-04-18

Behöver du hjälp med utbildning eller mall-utveckling? Jag hjälper gärna till via min arbets-givare Spider.