Do not set a spiderID for legacy sessions of registered users
authorTim Düsterhus <duesterhus@woltlab.com>
Fri, 12 Mar 2021 09:36:06 +0000 (10:36 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Fri, 12 Mar 2021 09:36:06 +0000 (10:36 +0100)
This is the correct version of 0d262d1080533b952de104f45df7cf5a360d8892 which
was reverted in 7476740c8a03adc20f2d5f0380b47556f61edd8a.

During user change the guest legacy session is destroyed together with the
actual guest session and a new session with a matching legacy session is
created. At no point will a legacy session of a guest magically turn into a
legacy session of a user and thus an `UPDATE` is never required.

see #4067

wcfsetup/install/files/lib/system/session/SessionHandler.class.php

index ee482a15797d2432142a41b4054d8d3ee481081b..db3fb09f4e27c885202b3a2b8e2deb7eaacbceb0 100644 (file)
@@ -723,7 +723,10 @@ final class SessionHandler extends SingletonFactory
 
     private function createLegacySession(): LegacySession
     {
-        $spiderID = $this->getSpiderID(UserUtil::getUserAgent());
+        $spiderID = null;
+        if (!$this->user->userID) {
+            $spiderID = $this->getSpiderID(UserUtil::getUserAgent());
+        }
 
         // save session
         $sessionData = [