@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator

Add session and request hooks to PhabricatorAuthSessionEngine

Summary: This supports doing a bunch of sales funnel tracking on Phacility.

Test Plan: See next diff.

Reviewers: chad

Reviewed By: chad

Differential Revision: https://secure.phabricator.com/D16890

+61
+2
src/__phutil_library_map__.php
··· 1943 1943 'PhabricatorAuthSessionEngineExtension' => 'applications/auth/engine/PhabricatorAuthSessionEngineExtension.php', 1944 1944 'PhabricatorAuthSessionEngineExtensionModule' => 'applications/auth/engine/PhabricatorAuthSessionEngineExtensionModule.php', 1945 1945 'PhabricatorAuthSessionGarbageCollector' => 'applications/auth/garbagecollector/PhabricatorAuthSessionGarbageCollector.php', 1946 + 'PhabricatorAuthSessionInfo' => 'applications/auth/data/PhabricatorAuthSessionInfo.php', 1946 1947 'PhabricatorAuthSessionQuery' => 'applications/auth/query/PhabricatorAuthSessionQuery.php', 1947 1948 'PhabricatorAuthSetupCheck' => 'applications/config/check/PhabricatorAuthSetupCheck.php', 1948 1949 'PhabricatorAuthStartController' => 'applications/auth/controller/PhabricatorAuthStartController.php', ··· 6776 6777 'PhabricatorAuthSessionEngineExtension' => 'Phobject', 6777 6778 'PhabricatorAuthSessionEngineExtensionModule' => 'PhabricatorConfigModule', 6778 6779 'PhabricatorAuthSessionGarbageCollector' => 'PhabricatorGarbageCollector', 6780 + 'PhabricatorAuthSessionInfo' => 'Phobject', 6779 6781 'PhabricatorAuthSessionQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 6780 6782 'PhabricatorAuthSetupCheck' => 'PhabricatorSetupCheck', 6781 6783 'PhabricatorAuthStartController' => 'PhabricatorAuthController',
+36
src/applications/auth/data/PhabricatorAuthSessionInfo.php
··· 1 + <?php 2 + 3 + final class PhabricatorAuthSessionInfo extends Phobject { 4 + 5 + private $sessionType; 6 + private $identityPHID; 7 + private $isPartial; 8 + 9 + public function setSessionType($session_type) { 10 + $this->sessionType = $session_type; 11 + return $this; 12 + } 13 + 14 + public function getSessionType() { 15 + return $this->sessionType; 16 + } 17 + 18 + public function setIdentityPHID($identity_phid) { 19 + $this->identityPHID = $identity_phid; 20 + return $this; 21 + } 22 + 23 + public function getIdentityPHID() { 24 + return $this->identityPHID; 25 + } 26 + 27 + public function setIsPartial($is_partial) { 28 + $this->isPartial = $is_partial; 29 + return $this; 30 + } 31 + 32 + public function getIsPartial() { 33 + return $this->isPartial; 34 + } 35 + 36 + }
+15
src/applications/auth/engine/PhabricatorAuthSessionEngine.php
··· 270 270 $log->save(); 271 271 unset($unguarded); 272 272 273 + $info = id(new PhabricatorAuthSessionInfo()) 274 + ->setSessionType($session_type) 275 + ->setIdentityPHID($identity_phid) 276 + ->setIsPartial($partial); 277 + 278 + $extensions = PhabricatorAuthSessionEngineExtension::getAllExtensions(); 279 + foreach ($extensions as $extension) { 280 + $extension->didEstablishSession($info); 281 + } 282 + 273 283 return $session_key; 274 284 } 275 285 ··· 837 847 838 848 // Switch to the user's translation. 839 849 PhabricatorEnv::setLocaleCode($user->getTranslation()); 850 + 851 + $extensions = PhabricatorAuthSessionEngineExtension::getAllExtensions(); 852 + foreach ($extensions as $extension) { 853 + $extension->willServeRequestForUser($user); 854 + } 840 855 } 841 856 842 857 }
+8
src/applications/auth/engine/PhabricatorAuthSessionEngineExtension.php
··· 16 16 17 17 abstract public function getExtensionName(); 18 18 19 + public function didEstablishSession(PhabricatorAuthSessionInfo $info) { 20 + return; 21 + } 22 + 23 + public function willServeRequestForUser(PhabricatorUser $user) { 24 + return; 25 + } 26 + 19 27 public function didLogout(PhabricatorUser $user, array $sessions) { 20 28 return; 21 29 }