1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-03-28 12:08:14 +01:00

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
This commit is contained in:
epriestley 2016-11-17 09:26:39 -08:00
parent 79132311f4
commit 2befd239a8
4 changed files with 61 additions and 0 deletions

View file

@ -1943,6 +1943,7 @@ phutil_register_library_map(array(
'PhabricatorAuthSessionEngineExtension' => 'applications/auth/engine/PhabricatorAuthSessionEngineExtension.php',
'PhabricatorAuthSessionEngineExtensionModule' => 'applications/auth/engine/PhabricatorAuthSessionEngineExtensionModule.php',
'PhabricatorAuthSessionGarbageCollector' => 'applications/auth/garbagecollector/PhabricatorAuthSessionGarbageCollector.php',
'PhabricatorAuthSessionInfo' => 'applications/auth/data/PhabricatorAuthSessionInfo.php',
'PhabricatorAuthSessionQuery' => 'applications/auth/query/PhabricatorAuthSessionQuery.php',
'PhabricatorAuthSetupCheck' => 'applications/config/check/PhabricatorAuthSetupCheck.php',
'PhabricatorAuthStartController' => 'applications/auth/controller/PhabricatorAuthStartController.php',
@ -6776,6 +6777,7 @@ phutil_register_library_map(array(
'PhabricatorAuthSessionEngineExtension' => 'Phobject',
'PhabricatorAuthSessionEngineExtensionModule' => 'PhabricatorConfigModule',
'PhabricatorAuthSessionGarbageCollector' => 'PhabricatorGarbageCollector',
'PhabricatorAuthSessionInfo' => 'Phobject',
'PhabricatorAuthSessionQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'PhabricatorAuthSetupCheck' => 'PhabricatorSetupCheck',
'PhabricatorAuthStartController' => 'PhabricatorAuthController',

View file

@ -0,0 +1,36 @@
<?php
final class PhabricatorAuthSessionInfo extends Phobject {
private $sessionType;
private $identityPHID;
private $isPartial;
public function setSessionType($session_type) {
$this->sessionType = $session_type;
return $this;
}
public function getSessionType() {
return $this->sessionType;
}
public function setIdentityPHID($identity_phid) {
$this->identityPHID = $identity_phid;
return $this;
}
public function getIdentityPHID() {
return $this->identityPHID;
}
public function setIsPartial($is_partial) {
$this->isPartial = $is_partial;
return $this;
}
public function getIsPartial() {
return $this->isPartial;
}
}

View file

@ -270,6 +270,16 @@ final class PhabricatorAuthSessionEngine extends Phobject {
$log->save();
unset($unguarded);
$info = id(new PhabricatorAuthSessionInfo())
->setSessionType($session_type)
->setIdentityPHID($identity_phid)
->setIsPartial($partial);
$extensions = PhabricatorAuthSessionEngineExtension::getAllExtensions();
foreach ($extensions as $extension) {
$extension->didEstablishSession($info);
}
return $session_key;
}
@ -837,6 +847,11 @@ final class PhabricatorAuthSessionEngine extends Phobject {
// Switch to the user's translation.
PhabricatorEnv::setLocaleCode($user->getTranslation());
$extensions = PhabricatorAuthSessionEngineExtension::getAllExtensions();
foreach ($extensions as $extension) {
$extension->willServeRequestForUser($user);
}
}
}

View file

@ -16,6 +16,14 @@ abstract class PhabricatorAuthSessionEngineExtension
abstract public function getExtensionName();
public function didEstablishSession(PhabricatorAuthSessionInfo $info) {
return;
}
public function willServeRequestForUser(PhabricatorUser $user) {
return;
}
public function didLogout(PhabricatorUser $user, array $sessions) {
return;
}