protected function updateAuthToken($userEntity)
{
$username = $userEntity->getUsername();
$cookieLifetime = (int) $this->cookieOptions['lifetime'];
$tokenEntity = $this->getRepositoryAuthtoken()->getUserToken($userEntity->getUsername(), $this->getClientIp(), $this->getClientUserAgent());
if ($tokenEntity) {
$token = $tokenEntity->getToken();
} else {
$salt = $this->randomGenerator->generateString(32);
$token = $this->getAuthToken($username, $salt);
$tokenEntity = new Entity\Authtoken();
$tokenEntity->setUsername($userEntity->getUsername());
$tokenEntity->setToken($token);
$tokenEntity->setSalt($salt);
}
$tokenEntity->setValidity(Carbon::create()->addSeconds($cookieLifetime));
$tokenEntity->setIp($this->getClientIp());
$tokenEntity->setLastseen(Carbon::now());
$tokenEntity->setUseragent($this->getClientUserAgent());
$this->getRepositoryAuthtoken()->save($tokenEntity);
$this->systemLogger->debug("Saving new login token '{$token}' for user ID '{$username}'", ['event' => 'authentication']);
return $tokenEntity;
}