Commit 2a7be7da authored by Thomas Löffler's avatar Thomas Löffler

Merge branch 'develop' into 'master'

Release 21-05-19

See merge request !159
parents 7b08fb7b 3c3f2a94
Pipeline #7061 passed with stages
in 4 minutes and 21 seconds
#ddev-generated: Automatically generated ddev .gitignore.
# You can remove the above line if you want to edit and maintain this file yourself.
/import.yaml
/docker-compose.yaml
......@@ -6,3 +7,7 @@
/sequelpro.spf
/import-db
/.bgsync*
/config.*.y*ml
/.webImageExtra
/.dbImageExtra
/*-build/Dockerfile.example
APIVersion: v1.6.0
APIVersion: v1.8.0
name: my.typo3.org
type: typo3
docroot: public
php_version: "7.2"
webserver_type: nginx-fpm
dbimage: drud/ddev-dbserver:v1.6.0-10.1
dbimage: drud/ddev-dbserver:v1.8.0-10.1
router_http_port: "80"
router_https_port: "443"
xdebug_enabled: false
additional_hostnames: []
additional_fqdns: []
mariadb_version: "10.1"
webcache_enabled: false
nfs_mount_enabled: false
provider: default
hooks:
post-start:
- exec: bash -c "sudo -E apt-get update"
- exec: bash -c "sudo -E apt-get install --yes --no-install-recommends apt-utils"
- exec: bash -c "sudo -E apt-get install --yes php7.2-ldap -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\" && killall -HUP php-fpm"
- exec: cp private/typo3conf/AdditionalConfiguration.ddev.php private/typo3conf/AdditionalConfiguration.php
- exec: composer install
- exec: npm --prefix private/typo3conf/ext/t3olayout/Build install
- exec: npm --prefix private/typo3conf/ext/t3olayout/Build run-script build
- exec: vendor/bin/typo3cms install:generatepackagestates
- exec: vendor/bin/typo3cms install:extensionsetupifpossible
# This config.yaml was created with ddev version v1.6.0
# webimage: drud/ddev-webserver:v1.6.0
# dbimage: drud/ddev-dbserver:v1.6.0-10.1
# dbaimage: drud/phpmyadmin:v1.6.0
# bgsyncimage: drud/ddev-bgsync:v1.6.0
- exec: bash -c "sudo -E apt-get update"
- exec: bash -c "sudo -E apt-get install --yes --no-install-recommends apt-utils"
- exec: bash -c "sudo -E apt-get install --yes php7.2-ldap -o Dpkg::Options::=\"--force-confdef\"
-o Dpkg::Options::=\"--force-confold\" && killall -HUP php-fpm"
- exec: cp private/typo3conf/AdditionalConfiguration.ddev.php private/typo3conf/AdditionalConfiguration.php
- exec: composer install
- exec: npm --prefix private/typo3conf/ext/t3olayout/Build install
- exec: npm --prefix private/typo3conf/ext/t3olayout/Build run-script build
- exec: vendor/bin/typo3cms install:generatepackagestates
- exec: vendor/bin/typo3cms install:extensionsetupifpossible
# This config.yaml was created with ddev version v1.8.0
# webimage: drud/ddev-webserver:v1.8.0
# dbimage: drud/ddev-dbserver:v1.8.0-10.2
# dbaimage: drud/phpmyadmin:v1.8.0
# bgsyncimage: drud/ddev-bgsync:v1.8.0
# However we do not recommend explicitly wiring these images into the
# config.yaml as they may break future versions of ddev.
# You can update this config.yaml using 'ddev config'.
......@@ -91,6 +91,37 @@ hooks:
# Note that these containers can also be omitted globally in the
# ~/.ddev/global_config.yaml or with the "ddev config global" command.
# nfs_mount_enabled: false
# Great performance improvement but requires host configuration first.
# See https://ddev.readthedocs.io/en/stable/users/performance/#using-nfs-to-mount-the-project-into-the-container
# webcache_enabled: false (deprecated)
# Was only for macOS, but now deprecated.
# See https://ddev.readthedocs.io/en/stable/users/performance/#using-webcache_enabled-to-cache-the-project-directory
# host_https_port: "59002"
# The host port binding for https can be explicitly specified. It is
# dynamic unless otherwise specified.
# This is not used by most people, most people use the *router* instead
# of the localhost port.
# host_webserver_port: "59001"
# The host port binding for the ddev-webserver can be explicitly specified. It is
# dynamic unless otherwise specified.
# This is not used by most people, most people use the *router* instead
# of the localhost port.
# host_db_port: "59002"
# The host port binding for the ddev-dbserver can be explicitly specified. It is dynamic
# unless explicitly specified.
# webimage_extra_packages: [php-yaml, php7.3-ldap]
# Extra Debian packages that are needed in the webimage can be added here
# This is ignored if a free-form .ddev/web-build/Dockerfile is provided
# dbimage_extra_packages: [telnet,netcat]
# Extra Debian packages that are needed in the dbimage can be added here
# This is ignored if a free-form .ddev/db-build/Dockerfile is provided
# provider: default # Currently either "default" or "pantheon"
#
......
/vendor/
/var/
/public/
!/public/humans.txt
/private/
......
......@@ -26,22 +26,21 @@
"issues": "https://git-t3o.typo3.org/t3o/my/issues"
},
"require": {
"typo3/cms-redirects": "^9.5",
"helhum/typo3-console": "^5.0",
"dmitryd/typo3-realurl": "^2.1",
"t3o/t3olayout": "^3.0",
"in2code/femanager": "^4.0",
"in2code/userprofile": "^0.2",
"t3o/t3olayout": "dev-develop-v9",
"in2code/femanager": "^5.0",
"sjbr/static-info-tables": "^6.5",
"t3o/gitlab_api": "^1.0",
"gordalina/cachetool": "^3.2",
"gordalina/cachetool": "^4.0",
"t3o/t3omy": "@dev",
"t3o/t3o_slack": "@dev",
"t3o/t3o_ldap": "@dev",
"helhum/typo3-secure-web": "^0.2.8"
"in2code/userprofile": "^0.3"
},
"config": {
"platform": {
"php": "7.0.30"
"php": "7.2.11"
}
},
"extra": {
......
This source diff could not be displayed because it is too large. You can view the blob instead.
rootPageId: 1
base: 'https://my.typo3.org'
baseVariants:
-
base: 'http://my.typo3.org.ddev.local'
condition: 'applicationContext == "Development"'
-
base: 'https://my-stage.typo3.org'
condition: 'applicationContext == "Testing"'
-
base: 'https://my.typo3.org'
condition: 'applicationContext == "Production"'
languages:
-
title: English
enabled: true
languageId: '0'
base: /
typo3Language: default
locale: en_US.UTF-8
iso-639-1: en
navigationTitle: English
hreflang: en-US
direction: ''
flag: gb
errorHandling:
-
errorCode: '404'
errorHandler: Page
errorContentSource: 't3://page?uid=404'
routes:
-
route: robots.txt
type: staticText
content: "User-agent: *\r\nDisallow: /typo3/\r\nDisallow: /fileadmin/\r\nAllow: /typo3/sysext/frontend/Resources/Public/*"
......@@ -9,7 +9,7 @@
"extension"
],
"require": {
"typo3/cms-core": "^8.7"
"typo3/cms-core": "^8.7 || ^9.5"
},
"autoload": {
"psr-4": {
......
......@@ -21,7 +21,7 @@ $EM_CONF[$_EXTKEY] = [
'version' => '0.0.0',
'constraints' => [
'depends' => [
'typo3' => '8.7.0-8.99.99',
'typo3' => '8.7.0',
'php' => '7.0.0-7.99.99',
],
'conflicts' => [],
......
......@@ -13,8 +13,8 @@ namespace T3o\T3oLdap\Connectors;
* LICENSE.txt file that was distributed with this source code.
*/
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Saltedpasswords\Utility\SaltedPasswordsUtility;
/**
* LDAP connector class to update accounts and passwords for LDAP user
......@@ -24,8 +24,9 @@ use TYPO3\CMS\Saltedpasswords\Utility\SaltedPasswordsUtility;
*
* @since 1.0.0
*/
class Ldap
class Ldap implements \Psr\Log\LoggerAwareInterface
{
use \Psr\Log\LoggerAwareTrait;
/**
* LDAP server as IP, hostname or complete URI
......@@ -101,7 +102,11 @@ class Ldap
putenv('LDAPTLS_REQCERT=never');
// TODO Move to TypoScript configuration object if more than one LDAP server is required per installation
$this->extensionConfiguration = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['t3o_ldap']);
if (version_compare(TYPO3_version, '9.0', '<')) {
$this->extensionConfiguration = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['t3o_ldap'] ?? '') ?? [];
} else {
$this->extensionConfiguration = $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['t3o_ldap'] ?? [];
}
$this->ldapServer = trim($this->extensionConfiguration['ldapServer']);
$this->ldapServerPort = intval($this->extensionConfiguration['ldapServerPort']);
$this->ldapProtocolVersion = intval($this->extensionConfiguration['ldapProtocolVersion']);
......@@ -109,6 +114,8 @@ class Ldap
$this->ldapBindPassword = $this->extensionConfiguration['ldapBindPassword'];
$this->ldapBaseDnForPasswordChanges = trim($this->extensionConfiguration['ldapBaseDnForPasswordChanges']);
$this->logger = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Log\LogManager::class)->getLogger(__CLASS__);
// Connect and bind
try {
if ($this->createLdapConnection()) {
......@@ -140,11 +147,7 @@ class Ldap
$ret = true;
}
} else {
GeneralUtility::sysLog(
'Keine LDAP-Bind mit Nutzerdaten moeglich: ' . ldap_error($this->ldapConnection),
't3o_ldap',
GeneralUtility::SYSLOG_SEVERITY_ERROR
);
$this->logger->error('ldab_bind is not working with user data: ' . ldap_error($this->ldapConnection));
}
return $ret;
......@@ -174,25 +177,13 @@ class Ldap
// Finally try to update passwords
$result = $this->updateLdapAttribute($dn, 'userPassword', $values, true);
if ($result === false) {
GeneralUtility::sysLog(
ldap_error($this->ldapConnection),
't3o_ldap',
GeneralUtility::SYSLOG_SEVERITY_ERROR
);
$this->logger->error(ldap_error($this->ldapConnection));
}
} else {
GeneralUtility::sysLog(
'Unable to bind to LDAP using: ' . ldap_error($this->ldapConnection),
't3o_ldap',
GeneralUtility::SYSLOG_SEVERITY_ERROR
);
$this->logger->error('Unable to bind to LDAP using: ' . ldap_error($this->ldapConnection));
}
} else {
GeneralUtility::sysLog(
'No active LDAP connection available',
't3o_ldap',
GeneralUtility::SYSLOG_SEVERITY_ERROR
);
$this->logger->error('No active LDAP connection available');
}
return $ret;
......@@ -222,7 +213,7 @@ class Ldap
);
}
} catch (\RuntimeException $e) {
GeneralUtility::sysLog($e->getMessage(), 't3o_ldap', GeneralUtility::SYSLOG_SEVERITY_ERROR);
$this->logger->error($e->getMessage());
}
return $ret;
......@@ -289,7 +280,7 @@ class Ldap
);
}
} catch (\RuntimeException $e) {
GeneralUtility::sysLog($e->getMessage(), 't3o_ldap', GeneralUtility::SYSLOG_SEVERITY_ERROR);
$this->logger->error($e->getMessage());
}
return $ret;
......@@ -556,35 +547,32 @@ class Ldap
{
$ret = false;
if ($passwordString !== '') {
if (SaltedPasswordsUtility::isUsageEnabled('FE')) {
$objSalt = GeneralUtility::makeInstance(SaltedPasswordsUtility::getDefaultSaltingHashingMethod('FE'));
if (is_object($objSalt)) {
if ($objSalt->isValidSaltedPW($passwordString)) {
$ret = true;
}
$saltedHashingMethods = \TYPO3\CMS\Core\Crypto\PasswordHashing\PasswordHashFactory::getRegisteredSaltedHashingMethods();
foreach ($saltedHashingMethods as $saltedHashingMethod) {
/** @var \TYPO3\CMS\Core\Crypto\PasswordHashing\PasswordHashInterface $method */
$method = GeneralUtility::makeInstance($saltedHashingMethod);
if ($method->isAvailable() && $method->isValidSaltedPW($passwordString)) {
return true;
}
}
}
return $ret;
}
/**
* Update the last modified in LDAP timestamp of a user
*
* @todo Rebuild it with Doctrine DBAL
* @param $feUserUid
* @return mixed
*/
private function updateFeUserLastLdapUpdateTimestamp($feUserUid)
{
return $GLOBALS['TYPO3_DB']->exec_UPDATEquery(
'fe_users',
'uid = ' . intval($feUserUid),
[
'tx_t3oldap_lastupdate_ts' => $GLOBALS['EXEC_TIME']
]
);
return GeneralUtility::makeInstance(ConnectionPool::class)
->getConnectionForTable('fe_users')
->update(
'fe_users',
['tx_t3oldap_lastupdate_ts' => $GLOBALS['EXEC_TIME']],
['uid' => (int)$feUserUid]
);
}
/**
......@@ -604,7 +592,6 @@ class Ldap
}
/**
* @todo Rebuild it with Doctrine DBAL
* @param $countryName
* @return bool
*/
......@@ -612,27 +599,17 @@ class Ldap
{
$ret = false;
$whereClause = 'cn_short_en LIKE ' . $GLOBALS['TYPO3_DB']->fullQuoteStr($countryName, 'static_countries');
$selectFields = 'uid, cn_iso_2, cn_short_en';
$selectFields = ['uid', 'cn_iso_2', 'cn_short_en'];
$fromTable = 'static_countries';
$groupBy = '';
$orderBy = '';
$limit = '1';
$result = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
$selectFields,
$fromTable,
$whereClause,
$groupBy,
$orderBy,
$limit
);
if ($result) {
if ($GLOBALS['TYPO3_DB']->sql_num_rows($result) == 1) {
$ret = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($result);
$GLOBALS['TYPO3_DB']->sql_free_result($result);
}
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($fromTable);
$ret = $queryBuilder->select(...$selectFields)
->from($fromTable)
->where(
$queryBuilder->expr()->eq('cn_short_en', $queryBuilder->createNamedParameter($countryName))
)
->execute()
->fetch();
return $ret;
}
......@@ -643,7 +620,7 @@ class Ldap
public function __destruct()
{
if ($this->ldapConnection) {
ldap_close($this->ldapConnection);
ldap_unbind($this->ldapConnection);
}
}
}
......@@ -42,7 +42,11 @@ class DataHandlerHook
*/
public function processDatamap_afterAllOperations(\TYPO3\CMS\Core\DataHandling\DataHandler $dataHandler)
{
$extensionConfiguration = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['t3o_ldap']);
if (version_compare(TYPO3_version, '9.0', '<')) {
$extensionConfiguration = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['t3o_ldap'] ?? '') ?? [];
} else {
$extensionConfiguration = $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['t3o_ldap'] ?? [];
}
$enableLdapPasswordUpdates = (int)$extensionConfiguration['enableLdapPasswordUpdates'];
if ($enableLdapPasswordUpdates === 1) {
......
......@@ -17,8 +17,10 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
/**
* Password updating facility.
*/
class PasswordUpdate
class PasswordUpdate implements \Psr\Log\LoggerAwareInterface
{
use \Psr\Log\LoggerAwareTrait;
const PASSWORD_METHODS = ['md5', 'sha1', 'crypt'];
/**
......@@ -29,18 +31,19 @@ class PasswordUpdate
*/
public function updatePassword(string $username, string $clearTextPassword)
{
$extensionConfiguration = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['t3o_ldap']);
if (version_compare(TYPO3_version, '9.0', '<')) {
$extensionConfiguration = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['t3o_ldap'] ?? '') ?? [];
} else {
$extensionConfiguration = $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['t3o_ldap'] ?? [];
}
// Check if LDAP updates are enabled in extension configuration
if ((int)$extensionConfiguration['enableLdapPasswordUpdates'] === 1) {
/** @var \T3o\T3oLdap\Connectors\Ldap $ldap */
$ldap = GeneralUtility::makeInstance(\T3o\T3oLdap\Connectors\Ldap::class);
if ($ldap->setLdapPasswords($username, $this->getHashedPasswords($clearTextPassword))) {
GeneralUtility::sysLog(
'Password successfully updated (Mechanisms: ' . strtoupper(implode(', ', self::PASSWORD_METHODS)) . ')',
't3o_ldap',
GeneralUtility::SYSLOG_SEVERITY_INFO
);
$this->logger = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Log\LogManager::class)->getLogger(__CLASS__);
$this->logger->info('Password successfully updated (Mechanisms: ' . strtoupper(implode(', ', self::PASSWORD_METHODS)) . ')');
}
}
}
......
......@@ -35,7 +35,7 @@ $EM_CONF[$_EXTKEY] = [
'constraints' => [
'depends' => [
'php' => '7.0.0-0.0.0',
'typo3' => '8.7.0-8.9.99',
'typo3' => '8.7.0',
'femanager' => '4.1.0-0.0.0'
],
'conflicts' => [
......
......@@ -33,8 +33,10 @@ use TYPO3\CMS\Extbase\Mvc\Controller\CommandController;
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class SlackImportCommandController extends CommandController
class SlackImportCommandController extends CommandController implements \Psr\Log\LoggerAwareInterface
{
use \Psr\Log\LoggerAwareTrait;
/**
* @var \T3o\T3oSlack\Domain\Repository\SlackUserRepository
* @inject
......@@ -113,10 +115,8 @@ class SlackImportCommandController extends CommandController
}
} while ($cursor);
$GLOBALS['BE_USER']->simplelog(
'Import of Slack User sucessful - imported ' . $counter . ' users',
't3o_slack'
);
$this->logger = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Log\LogManager::class)->getLogger(__CLASS__);
$this->logger->info('Import of Slack User sucessful - imported ' . $counter . ' users');
}
protected function getTSConfiguration()
......
......@@ -9,7 +9,7 @@
"issues": "https://github.com/TYPO3-typo3org/t3o_slack/issues"
},
"require": {
"typo3/cms-core": "8.5.0 - 8.9.99"
"typo3/cms-core": "^8.7 || ^9.5"
},
"autoload": {
"psr-4": {
......
......@@ -29,7 +29,7 @@ $EM_CONF[$_EXTKEY] = [
'version' => '1.1.4',
'constraints' => [
'depends' => [
'typo3' => '8.5.0-8.99.99',
'typo3' => '8.7.0',
],
'conflicts' => [],
'suggests' => [],
......
......@@ -288,7 +288,8 @@ class FeManagerHooks
protected function getTSConfiguration()
{
// init ConfigurationManager
$configurationManager = GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Configuration\ConfigurationManager::class);
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
$configurationManager = $objectManager->get(\TYPO3\CMS\Extbase\Configuration\ConfigurationManager::class);
// load complete ts
$tsSettings = $configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT);
......
......@@ -97,7 +97,7 @@ class ReactivateUserHook implements \TYPO3\CMS\Backend\RecordList\RecordListGetT
$this->persistenceManager->persistAll();
$this->addFlashMessage(
'The user is created in LDAP',
\TYPO3\CMS\Core\Messaging\FlashMessage::SUCCESS,
\TYPO3\CMS\Core\Messaging\FlashMessage::OK,
'Old User transfer'
);
$this->sendRecoveryMail($oldUser->getEmail(), $oldUser->getUsername());
......@@ -125,7 +125,7 @@ class ReactivateUserHook implements \TYPO3\CMS\Backend\RecordList\RecordListGetT
$this->sendRecoveryMail($feUser->getEmail(), $feUser->getUsername());
$this->addFlashMessage(
'The user is created in LDAP',
\TYPO3\CMS\Core\Messaging\FlashMessage::SUCCESS,
\TYPO3\CMS\Core\Messaging\FlashMessage::OK,
'LDAP Transfer'
);
} else {
......
......@@ -27,7 +27,6 @@ namespace T3o\T3omy\Hooks;
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\Imaging\IconFactory;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\SignalSlot\Dispatcher;
......@@ -102,7 +101,9 @@ class RecordListWorkflowFeUsers implements RecordListHookInterface
'id' => $row['pid']
];
$href = BackendUtility::getModuleUrl('web_list', $urlParameters);
$uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
$href = $uriBuilder->buildUriFromRoute('web_list', $urlParameters);
$class = 'btn btn-default';
return '<a class="' . $class . '" href="' . $href . '">'
......
......@@ -27,7 +27,6 @@ namespace T3o\T3omy\Hooks;
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\Imaging\IconFactory;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\SignalSlot\Dispatcher;
......@@ -101,7 +100,9 @@ class RecordListWorkflowOldUsers implements RecordListHookInterface
],
];
$href = BackendUtility::getModuleUrl('web_list', $urlParameters);
$uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
$href = $uriBuilder->buildUriFromRoute('web_list', $urlParameters);
$class = 'btn btn-default';
return '<a class="' . $class . '" href="' . $href . '">'
......
......@@ -8,10 +8,10 @@ $EM_CONF[$_EXTKEY] = [
'category' => 'extension',
'constraints' => [
'depends' => [
'typo3' => '8.7.0-8.99.99',
'typo3' => '8.7.0',
't3olayout' => '0.1.0-',
't3o_slack' => '0.1.0-',
'fluid_styled_content' => '7.6.0-8.99.99',
'fluid_styled_content' => '8.7.0',
'userprofile' => '0.0.1-',
'femanager' => '4.0.0-'
],
......
......@@ -31,7 +31,7 @@ config.tx_extbase {
}
}
[applicationContext = Production/Live]
[applicationContext = Production]
config.additionalHeaders {
10.header = X-Powered-By: nothing
20.header = Content-Security-Policy: default-src 'self' *.typo3.org; script-src 'unsafe-inline' *.typo3.org; font-src 'self' fonts.googleapis.com fonts.gstatic.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com; img-src 'self' data: *.typo3.org www.gravatar.com
......
......@@ -25,3 +25,4 @@ $GLOBALS['TYPO3_CONF_VARS']['MAIL'] = [
];
$GLOBALS['TYPO3_CONF_VARS']['BE']['installToolPassword'] = '$P$CZqeoYBTHC0kXKny4tpTvBSzzV5wVY0'; /* joh316 */
$GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'] = ' LOCAL: ' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'];
......@@ -5,6 +5,10 @@ return [
'explicitADmode' => 'explicitAllow',
'installToolPassword' => '$pbkdf2-sha256$25000$oRS5QrY6LY0VQWgAxx5hcQ$mM7JqvMgnEfY1FtIW6Ngcj7mJqUNto4kBNJmRv0gUFk',
'loginSecurityLevel' => 'normal',
'passwordHashing' => [
'className' => 'TYPO3\\CMS\\Core\\Crypto\\PasswordHashing\\Argon2iPasswordHash',
'options' => [],
],
],
'DB' => [
'Connections' => [
......@@ -21,47 +25,101 @@ return [
],
'EXT' => [
'extConf' => [
'backend' => 'a:5:{s:9:"loginLogo";s:0:"";s:19:"loginHighlightColor";s:0:"";s:20:"loginBackgroundImage";s:0:"";s:11:"backendLogo";s:0:"";s:14:"backendFavicon";s:0:"";}',
'belog' => 'a:0:{}',
'beuser' => 'a:0:{}',