TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

jetzt buchen

Benutzergruppen UND Verknüpfen?


Autor Nachricht
Verfasst am: 14. 11. 2011 [20:50]
typonewbe
Themenersteller
Dabei seit: 24.06.2006
Beiträge: 92
Hallo,

wenn ich mich nicht Irre ist es so, das wenn ich einer Seite/Element mehrer Benutzgruppen zuweise, diese ODER Verknüpft ausgewertet werden.

Bsp.

Gruppe A
Gruppe B
Gruppe C

Wenn ich einer Seite die Gruppen A und B zuweise sehen es alle Benutzer der Gruppen A oder B. Ich möchte gern das daraus eine UND Verknüpfung wird, also es dürfen nur Benutzer die der Gruppe A und B angehören diese Seite sehen.

Ist dies mit TYPO3 V 4.5.7 Mitteln möglich oder benötige ich dafür eine Extension?
Für letzteres wäre es nett, wenn Ihr mir da eine Vorschlagen könntet ich habe schon mit diversen Keywords (content access, etc.) im Repo. danach gesucht aber keine gefunden, die soetwas Managed.

Danke schon mal für die Mühe

Gruß typonewbe
Profil
Verfasst am: 15. 11. 2011 [09:44]
Julian.Hofmann
Dabei seit: 18.05.2007
Beiträge: 1867
Hallo.

Die simple Antwort ist: Es ist nicht möglich.

Für Contentelemente ließe sich noch was zusammenbauen, indem sich eine Extension via addEnableColumns-Hook ins System einklinkt. Für Seiten gibt es auch diesen Hook, der allerdings erst bei der Generierung der Seite greift, nicht aber für Links auf die Seite (d.h. auch nicht für Menüs). Daher wird es etwas unsinnig auf Seitenebene.

Hatte mich vor zwei Jahren mal etwas ausgiebiger damit beschäftigt und fürchte, das sich hier nichts geändert hat.
Details: http://bugs.typo3.org/view.php?id=10907

Viele Grüße
Julian
Profil
Verfasst am: 15. 11. 2011 [12:43]
typonewbe
Themenersteller
Dabei seit: 24.06.2006
Beiträge: 92
Hallo Julian.Hofmann,

danke für deine Info.

Aber wie es so schön heißt die Hoffnung stirbt zuletzt ich sehe mir den Hook für die enableFields mal an und probiere es aus falls es für die Menüs nicht klappt muss ich mir dafür eben eine Sonderlösung ausdenken.

Ich halte die Leute hier natürlich am laufenden was meine Erkenntnise darüber angeht.

Gruß typonewbe
Profil
Verfasst am: 15. 11. 2011 [17:13]
typonewbe
Themenersteller
Dabei seit: 24.06.2006
Beiträge: 92
Hallo Julian.Hofmann,

sorry das ich nochmal störe. Was meinst du mit zusammenbasteln? Ich habe mir die entsprechenden Stellen angesehen und mir einnen Hook geschrieben der nichts weiter macht als die Query AND zu Verknüpfen das ganze sieht dan so aus
PHP
class tx_myfegrouprights_pi1 {
 
	function main($params,&$Obj) {
t3lib_div::devlog('--- hook---', 'my_fegroup_rights', 0, '-- Hook greift -- ');
		$table = $params['table'];
		$field = $table . '.' . $params['ctrl']['enablecolumns']['fe_group'];
		if($params['ctrl']['enablecolumns']['fe_group']) {
			return $this->getMultipleGroupsWhereClause($field, $table);
		}else {
			return '';
		}
 
	}
 
	function getMultipleGroupsWhereClause($field, $table) {
		$memberGroups = t3lib_div::intExplode(',', $GLOBALS['TSFE']->gr_list);
		$orChecks = array();
		$andChecks = array();
 
		$orChecks[] = $field . '=\'\''; // If the field is empty, then OK
		$orChecks[] = $field . ' IS NULL'; // If the field is NULL, then OK
		$orChecks[] = $field . '=\'0\''; // If the field contsains zero, then OK
 
		foreach ($memberGroups as $value) {
			$andChecks[] = $GLOBALS['TYPO3_DB']->listQuery($field, $value, $table);
		}
		$query = ' AND (' .implode(' AND ', $andChecks).' OR ('. implode(' OR ', $orChecks) . '))';
		return $query;
	}
}

Die ganze Sache hat bei genauerer Betrachtung aber 2 Hacken.

Zum einen bekomme ich im FE eine Fehlermeldung:
HTML
t3lib_div::callUserFunction
|<strong>ERROR:</strong> No class named: tx_myfegrouprights_pi1|

Was bissl komisch ist da ich in meinem debug.log die Meldung sehe das der Hook greift also muss er ja die Klasse finden und benutzen (verwirrt).

Zum anderen habe ich festgestellt, für meinen Fall müsste ich das &ignore_array benutzen um in der enableFields Funktion zu verhindern das er schon dort die fe_groups einbindet mit der OR Verknüpfung Zeile 1112 TYPO3 4.5.7, dies scheint aber nicht möglich zu sein, den wenn ich nach enableFields( suche nirgens dieser Parameter abgerufen wird. Heißt entweder wird die Funktion nur mit Tabelle übergeben oder wenn dann mit ignore_array = array() und das Hardcoded.

Einzige Lösung die mir jetzt spontan noch einfällt ist mir die ganze Klasse zu kopieren die benötigten Stellen anzupassen und als XCLASS einzubinden.

Oder gibs da eventuell noch ne Zwischenlösung?

Gruß typonewbe
Profil
Verfasst am: 15. 11. 2011 [18:04]
Julian.Hofmann
Dabei seit: 18.05.2007
Beiträge: 1867
Habe etwas den verdacht, dass Du den hook nicht ganz richtig eingebunden hast, und die Klasse via FE-Plugin aufgerufen wird (und deshalb logged).
PHP
require_once(t3lib_extMgm::extPath('example').'class.tx_example_hooks.php');
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_page.php']['addEnableColumns'][] = 'tx_example_hooks->getPagePermsClause';


Was das ignore-Array angeht: schmutzig geht es auch ohne die fe_group in den enableFields zu deaktivieren. Wenn Du Deine Bedingung mit einem "AND (...)" anhängst, dann schränkt diese ja stärker ein und erfüllt damit seinen Zweck.
Beispiel (vereinfacht): AND (fe_group=3 OR fe_group=4) AND (fe_group=3 AND fe_group=4)
Profil
Verfasst am: 16. 11. 2011 [10:54]
typonewbe
Themenersteller
Dabei seit: 24.06.2006
Beiträge: 92
Hallo Julian.Hofmann,

vielen Dank für deine Schnelle Hilfe.
Mein Array sah etwas anders aus, dass hatte ich mir direkt aus der t3lib_page gezogen und nur in die ext_localconf kopiert.
das require_once hatte ich in der ext_tables. Hab jetzt alles in die ext_localconf gehauen und dein Array verwendet nu klappts.

PHP
//War aus der t3lib_page
$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_page.php']['addEnableColumns'][''.$_EXTKEY] = 'tx_myfegrouprights_pi1->main';


Jetzt muss ich mich nur noch durch diese Logik wurschteln um zu begreifen warum TYPO3 sich die Werte aus
PHP
$GLOBALS['TSFE']->gr_list
holt, denn da stehen Teilweise andere Gruppen drin als die die ich meinem Benutzer bzw. der Seite gegeben habe.

Aber das bekomme ich auch noch raus. icon_smile.gif

Gruß typonewbe
Profil