nixpkgs/home/files/typo3-configuration/Autologin.php
Daniel Siepmann 1c1baf7552
Allow to prevent TYPO3 auto login via Cookie
This change allows to set a Cookie with name `das_prevent_login` and
truish value like `1` to prevent auto login.
This can be useful when backend users need to be simulated (switched).
2023-09-21 07:45:47 +02:00

88 lines
2.5 KiB
PHP

<?php
namespace Codappix\CdxAutoLogin;
// >= 10.4
if (class_exists(\TYPO3\CMS\Core\Authentication\AbstractAuthenticationService::class) !== false) {
class AutoAuthenticationTypo3Service extends \TYPO3\CMS\Core\Authentication\AbstractAuthenticationService
{
public function getUser()
{
$possibleUsernames = [
'dsiepmann',
'daniel.siepmann',
'daniel_siepmann',
];
foreach ($possibleUsernames as $username) {
$record = $this->fetchUserRecord($username);
if (is_array($record)) {
return $record;
}
}
return [];
}
public function authUser(array $user)
{
return 200;
}
}
}
// < 10.4
if (class_exists(\TYPO3\CMS\Sv\AbstractAuthenticationService\AbstractAuthenticationService::class) !== false) {
class AutoAuthenticationTypo3Service extends \TYPO3\CMS\Sv\AbstractAuthenticationService\AbstractAuthenticationService
{
public function getUser()
{
$possibleUsernames = [
'dsiepmann',
'daniel.siepmann',
'daniel_siepmann',
];
foreach ($possibleUsernames as $username) {
$record = $this->fetchUserRecord($username);
if (is_array($record)) {
return $record;
}
}
return [];
}
public function authUser(array $user)
{
return 200;
}
}
}
// Autologin
if (
class_exists(\Codappix\CdxAutoLogin\AutoAuthenticationTypo3Service::class)
&& ($_COOKIE['das_prevent_login'] ?? false) == false
&& (
defined('TYPO3_REQUESTTYPE') === false
|| (TYPO3_REQUESTTYPE & TYPO3_REQUESTTYPE_CLI) === 0
)) {
$GLOBALS['TYPO3_CONF_VARS']['SVCONF']['auth']['setup']['BE_alwaysFetchUser'] = true;
$GLOBALS['TYPO3_CONF_VARS']['SVCONF']['auth']['setup']['BE_alwaysAuthUser'] = true;
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addService(
'sitepackage',
'auth',
AutoAuthenticationTypo3Service::class,
[
'title' => 'Auto User authentication',
'description' => 'Auto authenticate user with configured username',
'subtype' => 'authUserBE,getUserBE',
'available' => true,
'priority' => 100,
'quality' => 50,
'className' => AutoAuthenticationTypo3Service::class,
]
);
}