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 |
|
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 |
|
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 |
|
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 |
|
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) |
|
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 Aber das bekomme ich auch noch raus. Gruß typonewbe |



