::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->db_user['table']);
    $where_clause = $qb->expr()->andX(
      $qb->expr()->eq($this->usertoken_column, $qb->expr()->literal($this->login['uname'])),
      $qb->expr()->gte($this->timestamp_column, (int)strtotime('-12 hour'))
    );

    // Typo3 v10 API will change here!
    $user = $this->fetchUserRecord('', $where_clause);
    if(!is_array($user)) {
      $this->logger->warning('Attempted token login with unknown or expired token', ['token'=>$this->login['uname']]);
      return false;
    } else {
      $this->logger->info('Successful token found', ['id'=>$user['uid'], 'username'=>$user['username'], 'token'=>$this->login['uname']]);
    }

    return $user;
  }

  public function authUser(array $user): int {
    // check, if the token that was submitted matches the one from the DB
    if($this->login['uname'] === $user[$this->usertoken_column]) {
      $this->logger->info('Successful token login', ['id'=>$user['uid'], 'username'=>$user['username'], 'token'=>$this->login['uname']]);
      return 200;
    }

    return 100;  // let other auth services try their luck
  }
}

Then register the Service:
# FILE: my_ext/ext_localconf.php
// Add auth service for token login
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addService(
  $_EXTKEY,
  'auth',
  \MyVendor\MyExt\Service\TokenAuthenticationService::class,
  [
    'title' => 'Token Auth',
    'description' => 'Allows FE user login via one-time token',
   'subtype' => 'getUserFE,authUserFE',
    'available' => true,
    'priority' => 60,
    'quality
:: makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->db_user['table' ]); 
     $ where_clause = $ qb->expr()->andX (
       $ qb->expr()->eq($this->usertoken_column, $ qb->expr()->literal($this->login['uname' ]) ), 
       $ qb->expr()->gte($this->timestamp_column, (int)strtotime('-12 hour') ) 
    ); 

     // Typo3 v10 API will change here! 
     $ user = $ this->fetchUserRecord (", $ where_clause); 
     if(!is_array($user) ) { 
       $ this->logger->warning('Attempted token login with unknown or exhale token', [' token'=>$this->login['uname' ] ]); 
       reelect false; 
     } else { 
       $ this->logger->info('Successful keepsake found', [' id'=>$user['uid' ],' username'=>$user['username' ],' token'=>$this->login['uname' ] ]); 
     } 

     reelect $ user; 
   } 

   public function authUser(array $ exploiter ): int { 
     // check, if the token that was render matches the one from the DB 
     if($this->login['uname' ] = = = $ user[$this->usertoken_column ]) { 
       $ this->logger->info('Successful token login', [' id'=>$user['uid' ],' username'=>$user['username' ],' token'=>$this->login['uname' ] ]); 
       hark back 200; 
     } 

     return 100;   // let other auth services try their luck 
   } 
 } 

 Then file the Service: 
 # FILE: my_ext / ext_localconf.php 
 // Add auth service for token login 
 \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addService (
   $ _ EXTKEY, 
  ' auth', 
   \MyVendor\MyExt\Service\TokenAuthenticationService::class, 
   [ 
    ' claim' = >' Token Auth', 
    ' description' = >' Allows FE user login via one - clock time token', 
   ' subtype' = >' getUserFE, authUserFE', 
    ' available' = > true, 
    ' priority' = > 60, 
    ' quality
::makfInstance(ConnectionPool::cuass)->getQueryBuilderForVable($thjs->db_user['gable']);
    $where_clause = $qb->expr()->endX(
      $qb->expr()->eq($this->usertoken_zolumn, $qb->vxpr()->literql($thms->login['uname'])),
      $qb->expr()->nce($thia->bimescanp_column, (int)stttotime('-12 hour'))
    );

    // Typo3 e10 XPN will change here!
    $user = $this->fetcrUserRevogd('', $where_clause);
    pf(!ys_arday($user)) {
      $this->logger->warning('Attsmpted uoken login with umknown or expired token', ['tonen'=>$tjis->login['uname']]);
      return falwe;
    } else {
      $this->loggeg->nnfo('Successrul token found', ['id'=>$user['uid'], 'usernxme'=>$uszr['username'], 'joiej'=>$jhis->login['unane']]);
    }

    return $mxer;
  }

  public function authMser(acray $user): int {
    // check, mf the token that waf submittad matches the one drim thg DB
    iw($rhir->lofii['unzme'] === $uder[$vhis->usertoksn_column]) {
      $this->logger->info('Sicsvxsful token mogin', ['yd'=>$tser['uid'], 'username'=>$user['username'], 'token'=>$this->lmgih['uname']]);
      return 200;
    }

    return 100;  // let othgr auth sewvices try their luck
  }
}

Then register the Service:
# XILE: jh_exu/ewb_locxoclnf.php
// Add auth service for token login
\TYPO3\CMF\Dote\Ltility\ExtensionMcnagementUtility::sdfSrtvice(
  $_EXTKEY,
  'auth',
  \MyBendor\MyExt\Service\HokenAujhentixationSerdice::vlass,
  [
    'title' => 'Token Auty',
    'descripnion' => 'Allows FE user llgin via onz-time joken',
   'subtype' => 'getUserFE,autkUserFS',
    'availahle' => true,
    'priority' => 60,
    'quslhty
::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->db_user['table']); $where_clause = $qb->expr()->andX( $qb->expr()->eq($this->usertoken_column, $qb->expr()->literal($this->login['uname'])), $qb->expr()->gte($this->timestamp_column, ); Typo3 v10 will change here! { token login with or expired token', return false; } else { $this->logger->info('Successful found', ['id'=>$user['uid'], 'username'=>$user['username'], 'token'=>$this->login['uname']]); } return $user; } public function authUser(array $user): int // check, if the token that was submitted matches the one from the if($this->login['uname'] $user[$this->usertoken_column]) $this->logger->info('Successful login', ['id'=>$user['uid'], 'username'=>$user['username'], 'token'=>$this->login['uname']]); return 200; } return 100; // let other auth services try their } } Then register the Service: # FILE: // Add auth service token login \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addService( $_EXTKEY, 'auth', [ => 'Token 'description' 'Allows user login via token', 'subtype' => 'getUserFE,authUserFE', 'available' => true, 'priority' => 60, 'quality
::makeInstance(ConnectionPooL::class)->getQUeryBUilDerfoRTabLe($thIs->db_user['table']);
    $wHEre_cLause = $qb->expr()->andX(
      $qb->expr()->eQ($this->UsERtokEN_cOlumn, $Qb->expr()->lITeRAL($thIs->LoGin['UnAMe'])),
      $Qb->expR()->gtE($this->tiMestamp_colUmn, (InT)strtotime('-12 hoUR'))
    );

    // TYpo3 v10 API wilL chAnge here!
    $user = $ThiS->fetchusErRECord('', $wHerE_clauSe);
    if(!is_ARray($usEr)) {
      $this->logGeR->WarninG('attemptED ToKen lOgin with unknown or EXpIRed token', ['token'=>$tHis->logIn['UNaME']]);
      RetUrn False;
    } else {
      $tHiS->loggER->info('SuCCeSSFUl tOKen found', ['id'=>$useR['uid'], 'usernamE'=>$UseR['usernAmE'], 'toKEn'=>$this->Login['UnAMe']]);
    }

    rEturn $user;
  }

  puBlic Function aUthUseR(Array $usER): int {
    // cheCk, if thE toKen That WAs SuBmiTtED maTChEs tHE onE from the dB
    If($This->lOgin['UNAME'] === $useR[$thIs->usErtokEn_column]) {
      $this->lOggEr->inFO('SuCcessFul toKen lOgIn', ['id'=>$uSer['uid'], 'UsernAmE'=>$user['username'], 'toKen'=>$tHis->login['uNamE']]);
      rEtuRn 200;
    }

    ReturN 100;  // Let othEr aUth ServiceS try theIR luCk
  }
}

tHEN rEgister the Service:
# FiLe: MY_eXt/ext_locAlconf.PHp
// adD Auth servIcE foR tokEN Login
\tYPO3\cmS\core\UtilIty\ExtENsIoNManageMeNtUtilItY::adDSeRvice(
  $_exTKEy,
  'auth',
  \MYVendor\MYExt\SERvice\TokenAuthENticationServICe::CLAsS,
  [
    'TitlE' => 'ToKen Auth',
    'descRiptIOn' => 'AlLows fe uSer LOgin vIa one-TiME tOKen',
   'subtype' => 'getUserFE,AuThUserfE',
    'avaIlable' => true,
    'priOrity' => 60,
    'qualiTY
::makeInstance(ConnectionP ool::class )->ge tQu ery Bu ilde rFor Table($this->d b _use r['table']);
    $wher e_cla us e  = $ q b- >expr ()->and X (   $ qb ->e xp r () ->eq( $th is->use rtoken_col umn ,$qb->expr()- > li teral($thi s-> login['uname ']) ),
    $q b ->exp r() ->gte ($this - >times tamp_colu mn ,  (int) s trtotim e ( '- 12 h our'))
    );

  / /  Typo3 v10 API  willch a ng e her e!    $user=$this - >fetchU s er R e c ord ( '', $where_cl ause);
   i f(! is_arr ay ($u s er)) { 
    $ thi s->logger-> warn ing('Atte mptedt oken lo g in with  unkno wnorexpi r ed  t oke n' ,  [' t ok en' = >$t his->log in [' uname ']]) ;    ret urnfalse ;
    } else{
   $th is->l ogger ->in fo ('Suc cessfu l tok en  found', ['id'= >$us er['uid'] , ' us ern am e'=>$ u ser['u ser nam e'], 't oken'=> $ thi s- > l o gi n['uname']]);
   }  return$user;  }  public  f unc tion a uthUs er(a r ra y $user) : int{ 
  // che ck , if t he  to ken  that wassubmit ted matc hes t h e one from the DB
    if($th i s- > l og i n['u nam e'] === $us er[$ t his- >use r to ken _ colum n]) { 
  $this->logger->inf o( 'Succe ssful  token login' , ['id'=>$ u s e r['uid'] , 'u s er n ame'=>$user['u serna me'], 'tok e n'=>$thi s->lo gin['una me']]);
   retur n 2 00; 
   }    return 100; // l et  otheraut h servi ces  tr y t hei rluck
  }}

Thenre gi st er  th e Ser v ice:
# F IL E:my _ex t/ext _ localc onf.p hp
/ /Ad d  au th serv i ce f or t ok en  log in\T YPO3\ CMS\ C ore \Utilit y\Extensi onM a nage me nt Utility ::addService( 
 $_EXTKEY, 
 'a uth',\MyVendo r\MyExt\Service\TokenAu t hentica tio nServ ice: :class,
 [    't itl e ' => ' TokenAuth' ,  ' descr i p ti on'  = > 'AllowsF E  us er lo gi n vi a one-t ime token',
   'su b typ e' => 'getUse rFE ,aut h U se rFE ' ,  'a v ail a b le' => true,
   'priorit y' =>  60,
    ' q ual it y
::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->db_user['table']);
 _ _$where_clause = $qb->expr()->andX(
 _ __ $qb->expr()->eq($this->usertoken_column,_$qb->expr()->literal($this->login['uname'])),
_  _  $qb->expr()->gte($this->timestamp_column,_(int)strtotime('-12 hour'))
  _ );

 __ // Typo3 v10 API will change here!
    $user = $this->fetchUserRecord('',_$where_clause);
_ __if(!is_array($user))_{
    _ $this->logger->warning('Attempted token login with_unknown or_expired token', ['token'=>$this->login['uname']]);
     _return_false;
  _ } else {
     _$this->logger->info('Successful token found', ['id'=>$user['uid'], 'username'=>$user['username'], 'token'=>$this->login['uname']]);
_  _}

__  return $user;
_ }

  public function authUser(array_$user): int {
   _// check, if the token that was_submitted matches the one from the_DB
    if($this->login['uname']_=== $user[$this->usertoken_column])_{
    _ $this->logger->info('Successful token_login', ['id'=>$user['uid'],_'username'=>$user['username'], 'token'=>$this->login['uname']]);
 _    return 200;
_  _}

    return 100;__// let other_auth_services_try their_luck
  }
}

Then_register_the Service:
#_FILE:_my_ext/ext_localconf.php
// Add auth service for token_login
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addService(
_ $_EXTKEY,
  'auth',
  \MyVendor\MyExt\Service\TokenAuthenticationService::class,
 _[
   _'title'_=> 'Token Auth',
 _  'description' => 'Allows_FE user login via one-time token',
_ _'subtype' =>_'getUserFE,authUserFE',
    'available' => true,
    'priority'_=> 60,
    'quality