[Typo3-dev] Usergroup memberships FE and BE with openldap

Didier Gehéniau didier.geheniau at feas.net
Thu Feb 17 21:02:56 CET 2005


Thanks for the reply, I will test it and sharpen it en return you the
results.

I sugest I do also a proposal for staticBEgroups

Regards,

Didier

-----Original Message-----
From: typo3-dev-bounces at lists.netfielders.de
[mailto:typo3-dev-bounces at lists.netfielders.de] On Behalf Of Daniel Thomas
Sent: Thursday, February 17, 2005 7:30 PM
To: List for Core-/Extension development
Subject: Re: [Typo3-dev] Usergroup memberships FE and BE with openldap


Hi Didier,

I am awfully busy at the time, so I must be brief.
As far as I know the OpenLDAP Server will store Groupmembership with  
the group record not with the User Record.
The getFEGroups and getBEGroups methods only work with Groupmembership  
which is stored in the user record.

In the OpenLDAP user record you will probably find no reference  
whatsoever about which groups the user belongs to. That's why you can  
not access them via the above mentioned records. To establish the  
groupmembership of a user in OpenLDAP you would have to take the DN of  
the user record and then perform an LDAP search in the group records'  
member attribute to find in which group records the user is registered.  
Those are the groups you want to assign to the fe_user record in your  
TYPO3 installation. The tx_ldapserver class does contain a commented  
out method to perform such a search. It is commented out because it has  
not been tested thouroghly.

Of course, You can include this method in a user class as well an call  
it in a MAP_OBJECT for the field usergroup with the DN as special  
property.

Find the method below.

Sorry that I could not test and document this

Regards

Daniel


	
	/**
	 * This function is used to return a series of fe_group uids on
basis  
of the membership of the user
	 *
	 *
	 * @param	array	$data: LDAP data array for attribute
	 * @param	array	$conf: optional configuration
	 * @return	string 	value for inserting into db
	 */
/*
	function getStaticFEGroups($data, $conf)	{
#t3lib_div::debug($data);
		if($data) {
			tx_ldapserver::initCharset('');
			$GLOBALS['LDAP_CONNECT']- 
 >search('(&(objectClass=groupOfNames)(member='.$data.'))');
			
			$uids = array();
			
				// for internal record identification
			$table = $conf['table'];
			$pid = $conf['pid'];
			$identField = $conf['identField'];
				
			while($data = $GLOBALS['LDAP_CONNECT']->fetch()) {
				$v = $GLOBALS['LDAP_CONNECT']->getDN();
#debug($data);
				$v = $this->csObj->conv($v,
$this->remoteCharset,  
$this->localCharset);
				if($uid =
tx_ldapserver::recordExists($identField, $v, $pid,  
$table)) {
					$uids[] = $uid;
				}
			}
			return implode(',',$uids);
		}
	}
*/	

> Hi all,
>
> Because nobody answerd my mail in the Typo3 English list I ask it 
> here:
>
> I have installed all the ldap extentions (ldap_lib,ldap_server,
> ldap_auth
> and ldap_sync). I am using open ldap. When synchronizing all the  
> groups and
> users for be and fe are imported corectly but all the group  
> memberships are
> lost.
>
> Does anyone knows what's wrong and/or has anyone a working openldap 
> configuration?
>
> My configuration looks like:
>
> [start]
> FEusers = LDAP_SYNC
>
> FEusers {
>
> 	enable = 1
> 	table = fe_users
> 	basedn = OU=People, DC=feas, DC=net
> 	handleNotFound = 1
> 	handleNotFound {
> 		markHidden = 1
> 		hiddenField = disable
> 		markDeleted = 0
> 		deletedField = deleted
> 		delete = 0
> 		identField = username
> 	}
>
> 	pid = 2
> 	filter = (&(objectClass=person))
> 	uniqueField = tx_ldapserver_dn
> 	fields {
> 		username = MAP_OBJECT
> 		username.attribute = uid
> 		username.userFunc = tx_ldapserver->getSingleValue
>                 usergroup = MAP_OBJECT
>                 usergroup.userFunc = tx_ldapserver->getBEGroups
>                 usergroup.userFunc.pid = 2
>                 usergroup.userFunc.table = fe_groups
>
> 		tx_ldapserver_dn = MAP_OBJECT
> 		tx_ldapserver_dn.special = DN
> 		}
>
> 	}
>
> }
>
>
>
>
>
> FEgroups < FEusers
>
> FEgroups {
> 	table = fe_groups
> 	handleNotFound = 0
>                 basedn = ou=fe_groups, ou=mg_intranet, 
> ou=Applications, dc=feas, dc=net
> 	filter = (&(objectClass=groupOfUniqueNames))
> 	fields {
> 		username >
> 		usergroup >
> 		title = MAP_OBJECT
> 		title.attribute = cn
> 		title.userFunc = tx_ldapserver->getSingleValue
> 	}
>
> }
>
>
>
> BEusers < FEusers
>
> BEusers {
>
> 	table = be_users
> 	pid = root
> 	handleNotFound = 0
> 	filter = (&(objectClass=person))
> 	fields.usergroup.userFunc = tx_ldapserver->getBEGroups
> 	fields.usergroup.userFunc.pid = root
> 	fields.usergroup.userFunc.table = be_groups
> }
>
>
>
> BEgroups < FEgroups
>
> BEgroups {
> 	table = be_groups
> 	pid = root
>                 basedn = ou=fe_groups, ou=mg_intranet, 
> ou=Applications, dc=feas, dc=net
> 	filter = (&(objectClass=groupOfUniqueNames))
> }
>
>
>
> FEauth = LDAP_AUTH
>
> FEauth {
>    enable = 1
>    table = fe_users
>    SSO = 1
>    SSO.10.userFunc = tx_ldapauth_sv1->authFromGet
>    sync < FEusers
> }
>
>
>
> BEauth < FEauth
> BEauth {
> 	table = be_users
> 	sync < BEusers
> }
> [end]
>
> Regards,
>
> Didier
>
> _______________________________________________
> Typo3-dev mailing list
> Typo3-dev at lists.netfielders.de 
> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-dev
>
>
>
--/

Daniel Thomas dpool

Hinderink und Thomas Partnerschaft IT-Berater und Projektmanager

Eduard-Schmid-Str. 9 | D-81541 München
t 08945227582 | m 01793918781 | fax 08945227583

http://www.dpool.net | http://www.typergy.com http://typo3partner.net

/--

_______________________________________________
Typo3-dev mailing list
Typo3-dev at lists.netfielders.de
http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-dev






More information about the TYPO3-dev mailing list