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

Jetzt testen!

Schulungen

Zugangsbeschränkte Seiten bedingt auch ohne Login anzeigen


Autor Nachricht
Verfasst am: 08. 01. 2010 [16:09]
enobe.de
Themenersteller
Dabei seit: 08.02.2007
Beiträge: 115
Ich Suche nach einer Möglichkeit, ohne eingeloggt zu sein, geschützte Seiten unter bestimmten Bedingungen anzeigen zu lassen.

Zur Erklärung:
Ein Portal, für verschiedene Benutzergruppen zugänglich gemacht, beinhaltet Newsletter als Seiten die den Gruppen separat zugesandt werden und online sichtbar sind, jedoch nur für die entsprechend berechtigte Gruppe.

Das Problem:
Der Versandt der Newsletter (tcdirectmail) schlägt fehl (leere Seite), weil das Serverseitige Script der Extension sich nicht authentifiziert/einloggt und die zu versendenden geschützten Seiten per t3lib_div::getUrl() aufruft.

Gibt es eine Art Authentifizierung, die es erlaubt, unter definierten Bedingungen Inhalte eines geschützten Bereiches zu Anzeige zu bringen?

Vielen Dank im Vorraus

ProfilWWW
Verfasst am: 14. 01. 2010 [22:45]
infodry
Dabei seit: 04.03.2005
Beiträge: 37
Von mir ungetestet: In neueren Versionen von tcdirectmail kann man im EXT-Manager unter "String to append to URL's when fetc...[append_url]" zusätzliche Parameter angeben z. B. eben
TYPOSCRIPT
&logintype=login&user=XXX&pass=YYY&pid=ZZZ

pid ist der User-Ordner. Kann aber sein, dass es mit neuen Versionen von felogin & saltedpassword nicht mehr geht, wenn die Passwörter verschlüsselt sind. Wollte ich auch erst ausprobieren.

In großer Not und wenn nichts anderes geht:
Neue, versteckte Seite anlegen und über "Inhalt von dieser Seiten anzeigen" versuchen. Wie Du das den Redakteuren erklärst weiß ich nicht icon_biggrin.gif
Oder: Newsletter per TS-Condition anzeigen. Da kann man Gruppen nehmen und - für den Newsletteraufruf - IPs. Da eben die vom Server.

Schade, dass tcdirectmail nicht mehr weiterentwickelt wird.
Profil
Verfasst am: 15. 01. 2010 [05:22]
enobe.de
Themenersteller
Dabei seit: 08.02.2007
Beiträge: 115
ich habe dann verschiedene Dinge probiert, die mir aber bewußt machten, warum es nicht gehen würde: ein Script vom Server kann keine Sessions aufbauen.
Ich habe ein Script gefunden, dass den Login selbst durchführt.
PHP
function user_autologin($cObj) {
 
		$loginData=array(
			'uname' => 'user', //username
			'uident'=> 'password', //password
			'status' => 'login'
		);
		$GLOBALS['TSFE']->fe_user->checkPid=0; //do not use a particular pid
		$info = $GLOBALS['TSFE']->fe_user->getAuthInfoArray();
		$user = $GLOBALS['TSFE']->fe_user->fetchUserRecord($info['db_user'],$loginData['uname']);
		$ok = $GLOBALS['TSFE']->fe_user->compareUident($user,$loginData);
		if($ok) {
			// login successfull
			$GLOBALS['TSFE']->fe_user->createUserSession($user);
		} else {
			// login failed
		}
 
		$GLOBALS['TSFE']->loginUser = 1;
		#$GLOBALS['TSFE']->fe_user->start();
 
		return $cObj;
	}

Danach waren alle Requests erfolgreich, wenn sie durch einen Browser aufgerufen wurden, der Cookies erlaubt. Ich konnte die angelegten Sessions in der Datenbank mitverfolgen, welche auch beim Versenden des Newsletters angelegt wurden. Aber das Rendering der Typo3-Seite hat diese Sessions ignoriert, und die Seiten blieben leer.
Letztendlich habe ich beschlossen, die Newsletterseiten nicht per FE-Login zu schützen. Ich habe mir eine Condition geschrieben, die Inhalte nur dann anzeigt, wenn ein User eingeloggt ist oder die Anfrage von keinem Browser stammt.
TYPOSCRIPT
[globalString = ENV:REMOTE_ADDR = 127.0.0.1] || [loginUser=*]
   # leave as is
[else]
   # clear/replace content
   page.10 = TEXT
   page.10.value = You don't have permission to access this page unless you login.</a>.
[global]

Da es keine sensible Daten sind, sondern nur zwischen einzelnen Benutzergruppen getrennt werden soll ist dies völlig ausreichend.

Ja, die Ext:TC Directmail wird nicht mehr vom Author Daniel Schledermann weiterentwickelt. Aber trotzdem ist jeder herzlich willkommen Sie weiterzuentwickeln.
Ich habe Sie zum Beispiel so erweitert, dass ein Newsletter in mehreren Sprachen angelegt werden kann und jede Sprach-Version des Newsletters verschiedenen Empfängern zugeordnet und zu unterschiedlichen Zeitpunkten versendet werden können (zwecks zeitlicher Verzögerungen durch Übersetzungen).
Ein übersichtlicheres Interface für das Senden des Newsletters.
Man kann ein geplanten CronJob auch wieder stoppen.
[/list]


ProfilWWW
Verfasst am: 13. 04. 2010 [15:32]
infodry
Dabei seit: 04.03.2005
Beiträge: 37
So. Jetzt hatte ich das Problem noch mal live.
Die Lösung mit [globalString = ENV:REMOTE_ADDR = 127.0.0.1] war bei mir etwas unpraktisch, weil die Testmails nicht liefen. Die werden ja vom Client ausgelöst und deshalb sind die nicht unter 127.*
Drum habe ich eine andere Condition verwendet: In tc_directmail und in directmail lassen sich zusätzliche URL-Paramenter angeben, die beim Aufruf der Seite verwendet werden. Bei tc_directmail ist das in den Extension-Einstellungen, bei directmail in den Newsletter-Configs. Da steht jetzt "&letMeIn"=1 drin.
Im Template steht
[globalVar = GP:letMeIn=1] || [usergroup= 123]
# leave as is
[else]
# clear/replace content
page.10 = TEXT
page.10.value = You don't have permission to access this page unless you login.
[global]

So klappt's auch mit der Vorschau.
Profil