правильнее это все делать через auth сервис  (в репозитории много примеров по слову "auth")
Но если хочется по своему то: 
насчет кода для создания юзера: есть примеры, как это делается в eid скрипте
если без eid то можно так:
- назначить $_POST те поля, которые есть у стандартного логин бокса
- вызвать типа $TSFE->initFEuser(); или $GLOBALS['TSFE']->initFEuser();
  function processFELogin($data){
  // We put our incoming data to the regular piVars
  $_POST=$data;
  $user=tslib_eidtools::initFeUser();
  $GLOBALS['TSFE']->loginUser=$user->user ? 1 : 0;
  $GLOBALS['TSFE']->fe_user=$user;
это в eid скрипте так сделано экст  ods_ajaxfelogin
еще насчет юзера 
http://lists.typo3.org/pipermail/typ...ly/002273.html
тут вариант как без $_POST сделать
дело в том, что если юзер не залогинен, то сесиия и  $GLOBALS['TSFE']->fe_user все равно существуют