|
; Function : MemberOf()
;
; Author : Emmanuel Biard
; Contributor : Howard A. Bullock for some part of his TranslateName() function
;
; Action : MembreDe function tests if a user is member of a group (directly or not)
;
; Syntax : MemberOf(Group[, User])
;
; Version : 1.0
; Date : 27 december 2004
; Date revised : -
;
; Parameters :
; - Group, name of the group
; - User, name of the user (@USERID if not specified)
;
; Remarks : This function was created because the built-in InGroup kix function is not reliable at all, neither for direct membership tests nor for indirect ones.
;
; Returns :
; 0 if the user is not member of the group
; 1 if the user is member of the group
;
; Dependencies : LDAP directory
; KiXtart version : 4.20
;
; Example : if MemberOf("ThisGroup", "ThisUser")
;
Function NomComplet($NomCourt)
$NomComplet = ""
$oNomComplet = CreateObject("NameTranslate")
If Not(@ERROR)
$oNomComplet.Init(3, "")
If Not(@ERROR)
$oNomComplet.Set (3,$NomCourt)
If Not(@ERROR)
$NomComplet = $oNomComplet.Get(1)
EndIf
EndIf
EndIf
EndFunction
Function RecursifMembreDe($Groupe, $User)
$LDAPGroupe = NomComplet("@DOMAIN\"+$Groupe)
$oGroupe = GetObject("LDAP://" + $LDAPGroupe)
If Not(@ERROR)
For Each $Objet In $oGroupe.Members
Select
Case $Objet.Class = "group"
$Result = RecursifMembreDe($Objet.cn, $User)
If ($Result = 1)
$RecursifMembreDe = 1
Return
EndIf
Case $Objet.Class = "user"
If ($Objet.samAccountName == @USERID)
$RecursifMembreDe = 1
Return
EndIf
EndSelect
Next
EndIf
$RecursifMembreDe = 0
EndFunction
Function MemberOf($Groupe, OPTIONAL $User)
If ($User = "")
$User = @USERID
EndIf
$MemberOf = RecursifMembreDe($Groupe, $User)
EndFunction
Edited by ebiard (2004-10-27 06:53 PM)
|