[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhabricatorSettingsPanelSessions 4 extends PhabricatorSettingsPanel { 5 6 public function getPanelKey() { 7 return 'sessions'; 8 } 9 10 public function getPanelName() { 11 return pht('Sessions'); 12 } 13 14 public function getPanelGroup() { 15 return pht('Sessions and Logs'); 16 } 17 18 public function isEnabled() { 19 return true; 20 } 21 22 public function processRequest(AphrontRequest $request) { 23 $viewer = $request->getUser(); 24 25 $accounts = id(new PhabricatorExternalAccountQuery()) 26 ->setViewer($viewer) 27 ->withUserPHIDs(array($viewer->getPHID())) 28 ->requireCapabilities( 29 array( 30 PhabricatorPolicyCapability::CAN_VIEW, 31 PhabricatorPolicyCapability::CAN_EDIT, 32 )) 33 ->execute(); 34 35 $identity_phids = mpull($accounts, 'getPHID'); 36 $identity_phids[] = $viewer->getPHID(); 37 38 $sessions = id(new PhabricatorAuthSessionQuery()) 39 ->setViewer($viewer) 40 ->withIdentityPHIDs($identity_phids) 41 ->execute(); 42 43 $handles = id(new PhabricatorHandleQuery()) 44 ->setViewer($viewer) 45 ->withPHIDs($identity_phids) 46 ->execute(); 47 48 $current_key = PhabricatorHash::digest( 49 $request->getCookie(PhabricatorCookies::COOKIE_SESSION)); 50 51 $rows = array(); 52 $rowc = array(); 53 foreach ($sessions as $session) { 54 if ($session->getSessionKey() == $current_key) { 55 $rowc[] = 'highlighted'; 56 $button = phutil_tag( 57 'a', 58 array( 59 'class' => 'small grey button disabled', 60 ), 61 pht('Current')); 62 } else { 63 $rowc[] = null; 64 $button = javelin_tag( 65 'a', 66 array( 67 'href' => '/auth/session/terminate/'.$session->getID().'/', 68 'class' => 'small grey button', 69 'sigil' => 'workflow', 70 ), 71 pht('Terminate')); 72 } 73 74 $hisec = ($session->getHighSecurityUntil() - time()); 75 76 $rows[] = array( 77 $handles[$session->getUserPHID()]->renderLink(), 78 substr($session->getSessionKey(), 0, 6), 79 $session->getType(), 80 ($hisec > 0) 81 ? phutil_format_relative_time($hisec) 82 : null, 83 phabricator_datetime($session->getSessionStart(), $viewer), 84 phabricator_date($session->getSessionExpires(), $viewer), 85 $button, 86 ); 87 } 88 89 $table = new AphrontTableView($rows); 90 $table->setNoDataString(pht("You don't have any active sessions.")); 91 $table->setRowClasses($rowc); 92 $table->setHeaders( 93 array( 94 pht('Identity'), 95 pht('Session'), 96 pht('Type'), 97 pht('HiSec'), 98 pht('Created'), 99 pht('Expires'), 100 pht(''), 101 )); 102 $table->setColumnClasses( 103 array( 104 'wide', 105 'n', 106 '', 107 'right', 108 'right', 109 'right', 110 'action', 111 )); 112 113 114 $terminate_icon = id(new PHUIIconView()) 115 ->setIconFont('fa-exclamation-triangle'); 116 $terminate_button = id(new PHUIButtonView()) 117 ->setText(pht('Terminate All Sessions')) 118 ->setHref('/auth/session/terminate/all/') 119 ->setTag('a') 120 ->setWorkflow(true) 121 ->setIcon($terminate_icon); 122 123 $header = id(new PHUIHeaderView()) 124 ->setHeader(pht('Active Login Sessions')) 125 ->addActionLink($terminate_button); 126 127 $hisec = ($viewer->getSession()->getHighSecurityUntil() - time()); 128 if ($hisec > 0) { 129 $hisec_icon = id(new PHUIIconView()) 130 ->setIconFont('fa-lock'); 131 $hisec_button = id(new PHUIButtonView()) 132 ->setText(pht('Leave High Security')) 133 ->setHref('/auth/session/downgrade/') 134 ->setTag('a') 135 ->setWorkflow(true) 136 ->setIcon($hisec_icon); 137 $header->addActionLink($hisec_button); 138 } 139 140 $panel = id(new PHUIObjectBoxView()) 141 ->setHeader($header) 142 ->appendChild($table); 143 144 return $panel; 145 } 146 147 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |