Tutorials

Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.

Zurück zur Übersicht

TYPO3: Einen Auth-Service erstellen ab 6.2+

#Tutorials#TYPO3#PHP

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

  • Seniore T
    Schönes Kompendium, Danke! Hat mir geholfen.
    Antworten
  • Thomas
    Sauber schnell, alles wichtige erklärt. Danke!
    Antworten
    • Andre Rinas
      Freut mich, wenn ich dir helfen konnte!
      Antworten
  • Matze
    Dank dir! Hat mir gerade einiges an Zeit erspart!
    Antworten
  • Manuel
    Hallo Andre. danke für den kurzen Einblick in die Authservices. Das hat mir gefehlt.
    Antworten

Hinterlasse einen Kommentar

Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Kommentar wird gespeichert
Danke für deinen Kommentar! Sobald er freigegeben wurde erscheint er hier.