Path: blob/master/src/applications/oauthserver/panel/PhabricatorOAuthServerAuthorizationsSettingsPanel.php
13450 views
<?php12final class PhabricatorOAuthServerAuthorizationsSettingsPanel3extends PhabricatorSettingsPanel {45public function getPanelKey() {6return 'oauthorizations';7}89public function getPanelName() {10return pht('OAuth Authorizations');11}1213public function getPanelMenuIcon() {14return 'fa-exchange';15}1617public function getPanelGroupKey() {18return PhabricatorSettingsLogsPanelGroup::PANELGROUPKEY;19}2021public function isEnabled() {22return PhabricatorApplication::isClassInstalled(23'PhabricatorOAuthServerApplication');24}2526public function processRequest(AphrontRequest $request) {27$viewer = $request->getUser();2829// TODO: It would be nice to simply disable this panel, but we can't do30// viewer-based checks for enabled panels right now.3132$app_class = 'PhabricatorOAuthServerApplication';33$installed = PhabricatorApplication::isClassInstalledForViewer(34$app_class,35$viewer);36if (!$installed) {37$dialog = id(new AphrontDialogView())38->setUser($viewer)39->setTitle(pht('OAuth Not Available'))40->appendParagraph(41pht('You do not have access to OAuth authorizations.'))42->addCancelButton('/settings/');43return id(new AphrontDialogResponse())->setDialog($dialog);44}4546$authorizations = id(new PhabricatorOAuthClientAuthorizationQuery())47->setViewer($viewer)48->withUserPHIDs(array($viewer->getPHID()))49->execute();50$authorizations = mpull($authorizations, null, 'getID');5152$panel_uri = $this->getPanelURI();5354$revoke = $request->getInt('revoke');55if ($revoke) {56if (empty($authorizations[$revoke])) {57return new Aphront404Response();58}5960if ($request->isFormPost()) {61$authorizations[$revoke]->delete();62return id(new AphrontRedirectResponse())->setURI($panel_uri);63}6465$dialog = id(new AphrontDialogView())66->setUser($viewer)67->setTitle(pht('Revoke Authorization?'))68->appendParagraph(69pht(70'This application will no longer be able to access this server '.71'on your behalf.'))72->addSubmitButton(pht('Revoke Authorization'))73->addCancelButton($panel_uri);7475return id(new AphrontDialogResponse())->setDialog($dialog);76}7778$highlight = $request->getInt('id');7980$rows = array();81$rowc = array();82foreach ($authorizations as $authorization) {83if ($highlight == $authorization->getID()) {84$rowc[] = 'highlighted';85} else {86$rowc[] = null;87}8889$button = javelin_tag(90'a',91array(92'href' => $this->getPanelURI('?revoke='.$authorization->getID()),93'class' => 'small button button-grey',94'sigil' => 'workflow',95),96pht('Revoke'));9798$rows[] = array(99phutil_tag(100'a',101array(102'href' => $authorization->getClient()->getViewURI(),103),104$authorization->getClient()->getName()),105$authorization->getScopeString(),106phabricator_datetime($authorization->getDateCreated(), $viewer),107phabricator_datetime($authorization->getDateModified(), $viewer),108$button,109);110}111112$table = new AphrontTableView($rows);113$table->setNoDataString(114pht("You haven't authorized any OAuth applications."));115116$table->setRowClasses($rowc);117$table->setHeaders(118array(119pht('Application'),120pht('Scope'),121pht('Created'),122pht('Updated'),123null,124));125126$table->setColumnClasses(127array(128'pri',129'wide',130'right',131'right',132'action',133));134135$header = id(new PHUIHeaderView())136->setHeader(pht('OAuth Application Authorizations'));137138$panel = id(new PHUIObjectBoxView())139->setHeader($header)140->setBackground(PHUIObjectBoxView::WHITE_CONFIG)141->appendChild($table);142143return $panel;144}145146}147148149