Add com.woltlab.wcf_5.4_session_3_migrate_session.php
authorTim Düsterhus <duesterhus@woltlab.com>
Thu, 21 Jan 2021 10:03:58 +0000 (11:03 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Thu, 21 Jan 2021 10:11:27 +0000 (11:11 +0100)
com.woltlab.wcf/package.xml
wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_3_drop_virtual.php [deleted file]
wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_3_migrate_session.php [new file with mode: 0644]
wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_4_drop_acp.php [deleted file]
wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_4_drop_virtual.php [new file with mode: 0644]
wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_5_clean_session.php [deleted file]
wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_5_drop_acp.php [new file with mode: 0644]
wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_6_clean_session.php [new file with mode: 0644]

index 9b472776af754782bbca8c8af59b0aea229e5e7f..7b8513903674463502b1045a3307e1feec472e73 100644 (file)
@@ -56,6 +56,7 @@ tar cvf com.woltlab.wcf/files_pre.tar -C wcfsetup/install/files/ \
        acp/update_com.woltlab.wcf_5.4_checkOwnerGroup.php \
        acp/update_com.woltlab.wcf_5.4_session_1_cookies.php \
        acp/update_com.woltlab.wcf_5.4_session_2_user_session.php \
+       acp/update_com.woltlab.wcf_5.4_session_3_migrate_session.php \
        lib/util/HeaderUtil.class.php \
        lib/system/package/plugin/AbstractPackageInstallationPlugin.class.php \
        lib/system/package/plugin/ScriptPackageInstallationPlugin.class.php \
@@ -69,7 +70,7 @@ tar cvf com.woltlab.wcf/files_pre.tar -C wcfsetup/install/files/ \
                <!-- Preparations for the new session system. -->
                <instruction type="script" run="standalone">acp/update_com.woltlab.wcf_5.4_session_1_cookies.php</instruction>
                <instruction type="script" run="standalone">acp/update_com.woltlab.wcf_5.4_session_2_user_session.php</instruction>
-               <!-- TODO: Copy the current ACP session into a frontend session. -->
+               <instruction type="script" run="standalone">acp/update_com.woltlab.wcf_5.4_session_3_migrate_session.php</instruction>
                
                <!-- New application code. -->
                <instruction type="file" skipStyleUpdate="true" />
@@ -80,9 +81,9 @@ tar cvf com.woltlab.wcf/files_pre.tar -C wcfsetup/install/files/ \
                <instruction type="option" run="standalone" />
                
                <!-- Cleanup for the new session system. -->
-               <instruction type="script" run="standalone">acp/update_com.woltlab.wcf_5.4_session_3_drop_virtual.php</instruction>
-               <instruction type="script" run="standalone">acp/update_com.woltlab.wcf_5.4_session_4_drop_acp.php</instruction>
-               <instruction type="script" run="standalone">acp/update_com.woltlab.wcf_5.4_session_5_clean_session.php</instruction>
+               <instruction type="script" run="standalone">acp/update_com.woltlab.wcf_5.4_session_4_drop_virtual.php</instruction>
+               <instruction type="script" run="standalone">acp/update_com.woltlab.wcf_5.4_session_5_drop_acp.php</instruction>
+               <instruction type="script" run="standalone">acp/update_com.woltlab.wcf_5.4_session_6_clean_session.php</instruction>
                
                <!-- Non-critical database adjustments. -->
                <instruction type="script" run="standalone">acp/update_com.woltlab.wcf_5.4_db.php</instruction>
diff --git a/wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_3_drop_virtual.php b/wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_3_drop_virtual.php
deleted file mode 100644 (file)
index 6c6a678..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-use wcf\system\database\table\DatabaseTableChangeProcessor;
-use wcf\system\database\table\PartialDatabaseTable;
-use wcf\system\WCF;
-
-/**
- * Removes the *_session_virtual tables.
- * 
- * @author     Tim Duesterhus
- * @copyright  2001-2020 WoltLab GmbH
- * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package    WoltLabSuite\Core
- */
-
-$tables = [
-       PartialDatabaseTable::create('wcf1_session_virtual')
-               ->drop(),
-       PartialDatabaseTable::create('wcf1_acp_session_virtual')
-               ->drop(),
-];
-
-(new DatabaseTableChangeProcessor(
-/** @var ScriptPackageInstallationPlugin $this */
-       $this->installation->getPackage(),
-       $tables,
-       WCF::getDB()->getEditor())
-)->process();
diff --git a/wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_3_migrate_session.php b/wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_3_migrate_session.php
new file mode 100644 (file)
index 0000000..d762ffb
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+use wcf\system\session\SessionHandler;
+use wcf\system\WCF;
+
+$sql = "INSERT INTO    wcf" . WCF_N . "_user_session
+                       (sessionID, userID, userAgent, ipAddress, lastActivityTime, sessionVariables)
+       VALUES          (?, ?, ?, ?, ?, ?)";
+$statement = WCF::getDB()->prepareStatement($sql);
+
+$klass = new \ReflectionClass(SessionHandler::getInstance());
+$property = $klass->getProperty('variables');
+$property->setAccessible(true);
+$variables = $property->getValue(SessionHandler::getInstance());
+
+$variables[SessionHandler::class . "\0__reauthentication__"] = [
+       'lastAuthentication' => TIME_NOW,
+       'lastCheck' => TIME_NOW,
+];
+
+$statement->execute([
+       SessionHandler::getInstance()->sessionID,
+       SessionHandler::getInstance()->userID,
+       SessionHandler::getInstance()->userAgent,
+       SessionHandler::getInstance()->ipAddress,
+       SessionHandler::getInstance()->lastActivityTime,
+       \serialize([
+               'acp' => $variables,
+               'frontend' => []
+       ]),
+]);
diff --git a/wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_4_drop_acp.php b/wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_4_drop_acp.php
deleted file mode 100644 (file)
index ced6934..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-use wcf\system\database\table\DatabaseTableChangeProcessor;
-use wcf\system\database\table\PartialDatabaseTable;
-use wcf\system\WCF;
-
-/**
- * Removes the wcf1_acp_session table.
- * 
- * @author     Tim Duesterhus
- * @copyright  2001-2020 WoltLab GmbH
- * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package    WoltLabSuite\Core
- */
-
-$tables = [
-       PartialDatabaseTable::create('wcf1_acp_session')
-               ->drop(),
-];
-
-(new DatabaseTableChangeProcessor(
-/** @var ScriptPackageInstallationPlugin $this */
-       $this->installation->getPackage(),
-       $tables,
-       WCF::getDB()->getEditor())
-)->process();
diff --git a/wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_4_drop_virtual.php b/wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_4_drop_virtual.php
new file mode 100644 (file)
index 0000000..6c6a678
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+
+use wcf\system\database\table\DatabaseTableChangeProcessor;
+use wcf\system\database\table\PartialDatabaseTable;
+use wcf\system\WCF;
+
+/**
+ * Removes the *_session_virtual tables.
+ * 
+ * @author     Tim Duesterhus
+ * @copyright  2001-2020 WoltLab GmbH
+ * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @package    WoltLabSuite\Core
+ */
+
+$tables = [
+       PartialDatabaseTable::create('wcf1_session_virtual')
+               ->drop(),
+       PartialDatabaseTable::create('wcf1_acp_session_virtual')
+               ->drop(),
+];
+
+(new DatabaseTableChangeProcessor(
+/** @var ScriptPackageInstallationPlugin $this */
+       $this->installation->getPackage(),
+       $tables,
+       WCF::getDB()->getEditor())
+)->process();
diff --git a/wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_5_clean_session.php b/wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_5_clean_session.php
deleted file mode 100644 (file)
index e1f3e45..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-use wcf\system\database\table\column\MediumblobDatabaseTableColumn;
-use wcf\system\database\table\column\NotNullVarchar255DatabaseTableColumn;
-use wcf\system\database\table\column\VarcharDatabaseTableColumn;
-use wcf\system\database\table\DatabaseTableChangeProcessor;
-use wcf\system\database\table\index\DatabaseTableIndex;
-use wcf\system\database\table\PartialDatabaseTable;
-use wcf\system\WCF;
-
-/**
- * Adjusts wcf1_acp_session_access_log and wcf1_session.
- * 
- * @author     Tim Duesterhus
- * @copyright  2001-2020 WoltLab GmbH
- * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package    WoltLabSuite\Core
- */
-
-$tables = [
-       PartialDatabaseTable::create('wcf1_acp_session_access_log')
-               ->columns([
-                       NotNullVarchar255DatabaseTableColumn::create('requestMethod')
-                               ->defaultValue(''),
-               ]),
-       PartialDatabaseTable::create('wcf1_session')
-               ->columns([
-                       MediumblobDatabaseTableColumn::create('sessionVariables')->drop(),
-               ]),
-];
-
-(new DatabaseTableChangeProcessor(
-/** @var ScriptPackageInstallationPlugin $this */
-       $this->installation->getPackage(),
-       $tables,
-       WCF::getDB()->getEditor())
-)->process();
diff --git a/wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_5_drop_acp.php b/wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_5_drop_acp.php
new file mode 100644 (file)
index 0000000..ced6934
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+
+use wcf\system\database\table\DatabaseTableChangeProcessor;
+use wcf\system\database\table\PartialDatabaseTable;
+use wcf\system\WCF;
+
+/**
+ * Removes the wcf1_acp_session table.
+ * 
+ * @author     Tim Duesterhus
+ * @copyright  2001-2020 WoltLab GmbH
+ * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @package    WoltLabSuite\Core
+ */
+
+$tables = [
+       PartialDatabaseTable::create('wcf1_acp_session')
+               ->drop(),
+];
+
+(new DatabaseTableChangeProcessor(
+/** @var ScriptPackageInstallationPlugin $this */
+       $this->installation->getPackage(),
+       $tables,
+       WCF::getDB()->getEditor())
+)->process();
diff --git a/wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_6_clean_session.php b/wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_6_clean_session.php
new file mode 100644 (file)
index 0000000..e1f3e45
--- /dev/null
@@ -0,0 +1,37 @@
+<?php
+
+use wcf\system\database\table\column\MediumblobDatabaseTableColumn;
+use wcf\system\database\table\column\NotNullVarchar255DatabaseTableColumn;
+use wcf\system\database\table\column\VarcharDatabaseTableColumn;
+use wcf\system\database\table\DatabaseTableChangeProcessor;
+use wcf\system\database\table\index\DatabaseTableIndex;
+use wcf\system\database\table\PartialDatabaseTable;
+use wcf\system\WCF;
+
+/**
+ * Adjusts wcf1_acp_session_access_log and wcf1_session.
+ * 
+ * @author     Tim Duesterhus
+ * @copyright  2001-2020 WoltLab GmbH
+ * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @package    WoltLabSuite\Core
+ */
+
+$tables = [
+       PartialDatabaseTable::create('wcf1_acp_session_access_log')
+               ->columns([
+                       NotNullVarchar255DatabaseTableColumn::create('requestMethod')
+                               ->defaultValue(''),
+               ]),
+       PartialDatabaseTable::create('wcf1_session')
+               ->columns([
+                       MediumblobDatabaseTableColumn::create('sessionVariables')->drop(),
+               ]),
+];
+
+(new DatabaseTableChangeProcessor(
+/** @var ScriptPackageInstallationPlugin $this */
+       $this->installation->getPackage(),
+       $tables,
+       WCF::getDB()->getEditor())
+)->process();