3 final class PhabricatorAuthSessionQuery
4 extends PhabricatorCursorPagedPolicyAwareQuery
{
8 private $identityPHIDs;
10 private $sessionTypes;
12 public function withIdentityPHIDs(array $identity_phids) {
13 $this->identityPHIDs
= $identity_phids;
17 public function withSessionKeys(array $keys) {
18 $this->sessionKeys
= $keys;
22 public function withSessionTypes(array $types) {
23 $this->sessionTypes
= $types;
27 public function withIDs(array $ids) {
32 public function withPHIDs(array $phids) {
33 $this->phids
= $phids;
37 public function newResultObject() {
38 return new PhabricatorAuthSession();
41 protected function loadPage() {
42 return $this->loadStandardPage($this->newResultObject());
45 protected function willFilterPage(array $sessions) {
46 $identity_phids = mpull($sessions, 'getUserPHID');
48 $identity_objects = id(new PhabricatorObjectQuery())
49 ->setViewer($this->getViewer())
50 ->setParentQuery($this)
51 ->withPHIDs($identity_phids)
53 $identity_objects = mpull($identity_objects, null, 'getPHID');
55 foreach ($sessions as $key => $session) {
56 $identity_object = idx($identity_objects, $session->getUserPHID());
57 if (!$identity_object) {
58 unset($sessions[$key]);
60 $session->attachIdentityObject($identity_object);
67 protected function buildWhereClauseParts(AphrontDatabaseConnection
$conn) {
68 $where = parent
::buildWhereClauseParts($conn);
70 if ($this->ids
!== null) {
77 if ($this->phids
!== null) {
84 if ($this->identityPHIDs
!== null) {
88 $this->identityPHIDs
);
91 if ($this->sessionKeys
!== null) {
93 foreach ($this->sessionKeys
as $session_key) {
94 $hashes[] = PhabricatorAuthSession
::newSessionDigest(
95 new PhutilOpaqueEnvelope($session_key));
99 'sessionKey IN (%Ls)',
103 if ($this->sessionTypes
!== null) {
107 $this->sessionTypes
);
113 public function getQueryApplicationClass() {
114 return 'PhabricatorAuthApplication';