---
title: "eu_ldap Auto-Zuweisung von Gruppen"
url: "https://www.typo3.net/d/26976-eu-ldap-auto-zuweisung-von-gruppen"
source: "typo3.net"
tags: ["Extensions","Frage"]
created: "2005-07-07"
last_reply: "2005-08-15"
replies: 7
solved: false
page: 1
pages: 1
lang: "de"
---

# eu_ldap Auto-Zuweisung von Gruppen

Extensions · 7 Antworten · gestartet 2005-07-07

## Eröffnungsbeitrag

**droptix** · 2005-07-07 · [Beitrag #1](https://www.typo3.net/d/26976-eu-ldap-auto-zuweisung-von-gruppen/1)

Ich nutze eu_ldap mit Gruppenimport zur Authentifizierung meiner User. Klappt super, aber die User haben im BE keine Rechte.

Nun möchte ich einzelnen Usern oder auch ganzen Gruppen weitere Rechte einräumen. Das einfachste wäre, wenn ich dafür manuell Gruppen anlege, die mehr Rechte haben, wie z.B. "Redakteure" oder "Administratoren" etc.

Wenn ich einen User in eine erweiterte Gruppe schiebe, wird diese Zuweisung nach dem nächsten Login wieder aufgehoben.

Kann ich eu_ldap beibringen, dass er bestimmte Nutzer oder ganze Gruppen beim Import bzw. Aktualisieren zusätzlich in eine von Hand angelegte Gruppe legt?

## Antworten

### [#2](https://www.typo3.net/d/26976-eu-ldap-auto-zuweisung-von-gruppen/2) · KaeptnOvi · 2005-07-07

ich hatte ein ähnliches Problem,da in unserm Directory keine Gruppen definiert waren. Deshalb hatten alle User dann keinerlei Rechte. Ich habe dann einfach die funktionen tx_euldap_div::updateSingleUser und insertSingleUser angepasst, und eine bestehende Gruppe statisch hinzugefügt. Ist sicherlich keine elegante Lösung, aber bei mir hat's funktionniert :)

### [#3](https://www.typo3.net/d/26976-eu-ldap-auto-zuweisung-von-gruppen/3) · droptix · 2005-07-07

Ach, ich dachte das ginge vielleicht von Haus aus... aber ist egal, da ich meine eu_ldap-Klasse bereits editiert habe.

Hättest du ein (kommentiertes) Code-Snippet für mich zum Nachvollziehen?

Vielleicht kann man dafür eine eigene Erweiterung schreiben?

### [#4](https://www.typo3.net/d/26976-eu-ldap-auto-zuweisung-von-gruppen/4) · KaeptnOvi · 2005-07-08

ich hab's so gelöst, in der funktion update_singleuser und insert_singleuser der Klasse tx_euldap_div

```php
if ($user_table == 'fe_users') {
			$map_additional_fields = 'address='.$ldapaddress			.',zip='.$ldapzip			.',city='.$ldapcity			.',country='.$ldapcountry			.',address='.$ldapaddress			.',telephone='.$ldapphone			.',fax='.$ldapfax			.',www='.$ldapwww			.($map_additional_fields?','.$map_additional_fields:'');

// manual Hack, always enters Group 2
if(!$gid)
{
     $gid = 2;
}
else
{
     $gid .= ',2';
}
// end manual Hack

$updateArray = array('tstamp' => time(),
'name' => str_replace("'", "''", $name),
'email' => $email,
'usergroup' => $gid
);
```

wie gesagt, ist nur ein hack, aber es sollte so funktionieren (nur der teil zwischen den beiden kommentaren ist einzufügen, der rest steht schon in der funktion, ich hab's einfach dringelassen, damit man die Stelle besser findet)

### [#5](https://www.typo3.net/d/26976-eu-ldap-auto-zuweisung-von-gruppen/5) · droptix · 2005-07-08

Danke! Importierst du keine Gruppen aus LDAP? Dann müsste doch immer eine $gid vorhanden sein und du könntest dir die Abfrage sparen. Ein $gid .= ",2"; würde reichen, oder?

### [#6](https://www.typo3.net/d/26976-eu-ldap-auto-zuweisung-von-gruppen/6) · KaeptnOvi · 2005-07-08

> **droptix schrieb:**
>
> Danke! Importierst du keine Gruppen aus LDAP? Dann müsste doch immer eine $gid vorhanden sein und du könntest dir die Abfrage sparen. Ein $gid .= ",2"; würde reichen, oder?

ja, schon, ich importiere alles aus der NDS. Allerdings wurden bei uns offensichtlich keine Gruppen erfasst, weshalb er die auch nicht importieren kann. Das soll später noch geändert werden, aber bis es soweit ist, muss ich es halt so lösen. Aber wenn jeder User mindestens eine LDAP-Gruppe hat, reicht das $gid .= ",2"; schon.

### [#7](https://www.typo3.net/d/26976-eu-ldap-auto-zuweisung-von-gruppen/7) · droptix · 2005-07-08

Alles klar, dann versteh ich das. Dumm ist es trotzdem nicht, weil ich z.B. alle über LDAP importierten User in eine Gesamt-Gruppe schieben möchte.

Eine komfortable Administration ist das leider nicht. Ich muss dafür sorgen, dass sich auch einzelne User (anhand vom Benutzernamen) bequem einstellen lassen, ohne im Quellcode rumhacken zu müssen.

Mich wundert es, dass es dafür noch keine Erweiterung gibt oder hab ich sie nur nicht gefunden?

Wenn's die wirklich noch nicht gibt, werde ich wohl eine schreiben müssen :-(

### [#8](https://www.typo3.net/d/26976-eu-ldap-auto-zuweisung-von-gruppen/8) · droptix · 2005-08-15

Okay, mich hat es etwas genervt, dass die alten Gruppen nicht wieder hergestellt werden… War auch ein Feature, dass ich dringend brauchte. Deshalb folgender Workaround:

**1)** Aus dem LDAP importierte Backend-Gruppen (BEG's) müssen irgendwie markiert werden. Also bin ich mittels phpMyAdmin in die Tabelle 'be_groups' gewandert und habe eine neue Spalte 'from_euldap' hinzugefügt. Hier das Alter-Skript:

```php
<?php
// […]
$sql = "ALTER TABLE `be_groups` ADD `from_euldap` TINYINT(1) UNSIGNED DEFAULT '0' NOT NULL";
// […]
?>
```

**2)** Um das nutzen zu können, muss beim Import von BEG's aus LDAP der Wert dieser Spalte auf '1' gesetzt werden. Das geschieht in der Datei '/typo3conf/ext/eu_ldap/mod1/class.tx_euldap_div.php' in der Funktion 'insert_newgrps()'. Dort macht ihr in der ersten foreach-Schleife folgende Änderung (hier nur Anfang der Schleife):

```php
<?php
// […]
foreach ($grps as $grp) {
  $qry = Array('pid' => $pid,
    'tstamp' => time(),
    'title' => $grp,
    'description' => 'Inserted by eu_ldap '.time(),        
    ### hack -- { ###
    // Komma zwei Zeilen weiter oben nicht vergessen!
    'from_euldap' => '1'
    ### hack -- } ###
  );
  // […]
?>
```

**3)** Der Wert 'from_euldap' muss nun noch ausgewertet werden. Dabei berufe ich mich auf die Idee von *KaeptnOvi* und mach noch was eigenes: Ich will alle Gruppenbeziehungen wieder herstellen, die nicht aus LDAP kommen, weil ich immer nur eine Gruppe aus LDAP bekomme und weitere von Hand zuweise. Wer das nicht braucht, kann sich Punkt 1) und 2) sowie die ganze Überprüfung auf den Wert 'from_euldap' im folgenden Code-Snippet sparen und gleich die ausgelesene $row['usergroup'] mit einem Komma an $gid ranhängen. Ansonsten werden alte Gruppen wieder hergestellt, die nicht aus LDAP stammen. Ich mache also einen kleinen Hack in die Funktion 'update_singleuser()' (jeweils noch eine Zeile davor und danach zur besseren Übersicht mitgenommen):

```php
<?php
// […]
tx_euldap_div::assign_groups($Server, $arrGroups, $user, $gid, $gname, $user_table, $pid);
    ### hack -- { ###
    // Gruppen
    $userGid = "";
    // alte BE-Gruppen auslesen
    $where = "lower(username) = '".strtolower($username)."'";
		$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery("usergroup", "be_users", $where);
		$row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
    // BE-Gruppen aus Kommaliste splitten
    $arrBeGroups = explode(",", $row['usergroup']);
    // jede Gruppe auf den Import durch die Extension 'eu_ldap' untersuchen
    foreach($arrBeGroups as $intGroup)
    {
      // Spalte `from_euldap` abfragen
      $where = "uid = $intGroup";
  		$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery("from_euldap", "be_groups", $where);
  		$row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
      // Integer-Wert aus Array separieren
      $from_euldap = (int)array_shift($row);
      // wenn nicht importiert, dann anhängen
      if($from_euldap != 1)
      {
        $userGid .= ",$intGroup";
      } # if
    } # foreach
    // alte Gruppen anhängen
    $gid .= $userGid;
    ### hack -- } ###
		if ($user_table == 'fe_users') {
// […]
?>
```

---

Quelle: „eu_ldap Auto-Zuweisung von Gruppen“, typo3.net, https://www.typo3.net/d/26976-eu-ldap-auto-zuweisung-von-gruppen
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
