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

Jetzt testen!

Schulungen

Mehrere Redakteure - Zugriff auf Nutzergruppen


Autor Nachricht
Verfasst am: 22. 06. 2010 [20:17]
DerFredster
Themenersteller
Dabei seit: 01.04.2008
Beiträge: 37
Hallo zusammen,
habe ein Problem und komme nicht wirklich weiter. Vielleicht gibts ja jemanden der schon mal sowas gelöst hat.

Folgendes Setup:
- T3 Installation mit mehreren Redakteuren welche die gleichen Logins verwalten
- Redakteur A hat Zugriff auf Nutzergruppe A aber nicht auf Nutzergruppe B
- Redakteur B hat Zugriff auf Nutzergruppe B aber nicht auf Nutzergruppe A
- Sowohl Redakteur A als auch Redakteur B haben Zugriff auf Nutzer N

Problem:
Nutzer N hat Nutzergruppe A bereits. Jetzt kommt Redakteur B und vergibt Nutzer N die Nutzergruppe B. Sobald Redakteur B speichert (er sieht die Gruppe A die Nutzer N bereits hat ja nicht in der Flexform) verliert N Gruppe A.
D.h. TYPO3 speichert immer nur die Gruppe die der Nutzer vergeben hat und nicht zusätzlich bereits vergebene, für den Redakteur aber nicht sichtbare Gruppen. banghead.gif

Ansatz:
- habe bereits erfolglos probiert den Redakteuren jeweils Leserechte auf die jeweils andere Gruppe, welche in anderen Sysfoldern liegen, zu geben

Hat vielleicht jemand eine Idee?

Danke im voraus.
Federico
Profil
Verfasst am: 23. 06. 2010 [14:54]
DerFredster
Themenersteller
Dabei seit: 01.04.2008
Beiträge: 37
ok,

habe das Ganze jetzt erstmal direkt in den Sourcen gelöst. Könnte man evtl. via Hook besser und eleganter lösen... war aber wie immer dringend und funktioniert icon_smile.gif

Hier mein Snippet welches ich in Zeile 878 der class.t3lib_tcemain.php eingefügt habe:

PHP
if($table == "fe_users" && !($this->BE_USER->isAdmin())) {
		// Get the current usergroup setting
	$KK_res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('usergroup', 'fe_users', 'uid='.intval($id));
	while ($KK_row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($KK_res)) {
		$KK_currentRecord = $KK_row['usergroup'];
	}		
	$GLOBALS['TYPO3_DB']->sql_free_result($KK_res);
 
		// Check if the user has access to the current record and discard all those where the user has access
	$KK_currentRecordArray = explode(',', $KK_currentRecord);
	foreach ($KK_currentRecordArray as $KK_key => $KK_value) {
			// Get the current usergroup pid
		$KK_pid_res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('pid', 'fe_groups', 'uid='.intval($KK_value));
		while ($KK_pid_row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($KK_pid_res)) {
			$KK_pid_to_check = $KK_pid_row['pid'];
		}		
		$GLOBALS['TYPO3_DB']->sql_free_result($KK_pid_res);		
			// If the user has access to the pid where the usergroup is stored we can remove it							
		if($this->BE_USER->isInWebMount($KK_pid_to_check)) {
			unset($KK_currentRecordArray[$KK_key]);
		}
	}
 
		// join the groups to keep and the new ones
	if($KK_currentRecordArray) {
		$KK_keepGroups = implode(",", $KK_currentRecordArray);
		if($fieldArray['usergroup'] == '') {
			$fieldArray['usergroup'] = $KK_keepGroups;
		} else {
			$fieldArray['usergroup'] = $fieldArray['usergroup'] . ',' . $KK_keepGroups;
		}
	}
}
Profil