Tutorials
Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.
TYPO3: Einen Auth-Service erstellen ab 6.2+
TYPO3 bietet an, dass man das Login auch selber über einen sogenannten Auth-Service steuern kann. Mit diesem Service kann man Benutzer automatisch einloggen, wenn beispielswese ein Hash an der URL steht, oder wenn man sich mit LDAP authentifizieren möchte und so weiter. Der Aufbau eines Auth-Service ist immer gleich. Im Folgenden habe ich einen kleinen Authservice erstellt.
Als erstes muss der AuthService in der ext_localconf.php hinzugefügt werden. Dabei muss beachtet werden, dass ihr bei className euren Namespace zu eurem AuthService angebt.
// auth service
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addService(
$_EXTKEY,
'auth' /* sv type */,
'AuthService' /* sv key */,
array(
'title' => 'Authentication service',
'description' => 'Authentication Lookup.',
'subtype' => 'getUserFE, authUserFE, getGroupsFE',
'available' => true,
'priority' => 90,
'quality' => 90,
'os' => '',
'exec' => '',
'className' => 'TEST\\Example\\Service\\AuthService', // diese Klasse muss eurem Auth-Service entsprechen!
)
);
Als nächstes muss jetzt der AuthService erstellt werden. Im Folgenden habe ich mal einen kleinen Service erstellt. Diesen habe ich unter Classes/Service/AuthService.php abgelegt.
<?php
namespace TEST\Example\Service;
class AuthService extends \TYPO3\CMS\Sv\AuthenticationService{
private $userId;
public function getUser(){
// do nothing...
}
public function authUser($user){
// in dieser Funktion können wir jetzt den User, der sich gerade einloggt authentifizieren.
// Im folgenden Beispiel habe ich eingestellt, dass alle User, die die PID 24 haben, sich nicht einloggen können.
// es gibt drei Stati die man zurückschicken kann
// 0: Der User wird nicht eingeloggt und auch kein anderer Service kann doch was dran ändern
// 100: Der Benutzer wird nicht von diesem Service eingeloggt, kann aber noch durch einen anderen eingeloggt werden
// 200: Der Benutzer wird eingeloggt.
if($user['pid'] == 24){
return 0;
}
if($user['uid'] == $this->userId) {
// OK, 'code' = 200
return 200;
}
// fail
return 100;
}
public function getGroups(&$user) {
// do nothing...
}
}
Kommentare
Hinterlasse einen Kommentar