[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/oauthserver/controller/client/ -> PhabricatorOAuthClientEditController.php (source)

   1  <?php
   2  
   3  final class PhabricatorOAuthClientEditController
   4    extends PhabricatorOAuthClientController {
   5  
   6    public function processRequest() {
   7      $request = $this->getRequest();
   8      $viewer = $request->getUser();
   9  
  10      $phid = $this->getClientPHID();
  11      if ($phid) {
  12        $client = id(new PhabricatorOAuthServerClientQuery())
  13          ->setViewer($viewer)
  14          ->withPHIDs(array($phid))
  15          ->requireCapabilities(
  16            array(
  17              PhabricatorPolicyCapability::CAN_VIEW,
  18              PhabricatorPolicyCapability::CAN_EDIT,
  19            ))
  20          ->executeOne();
  21        if (!$client) {
  22          return new Aphront404Response();
  23        }
  24  
  25        $title = pht('Edit OAuth Application: %s', $client->getName());
  26        $submit_button = pht('Save Application');
  27        $crumb_text = pht('Edit');
  28        $cancel_uri = $client->getViewURI();
  29        $is_new = false;
  30      } else {
  31        $this->requireApplicationCapability(
  32          PhabricatorOAuthServerCreateClientsCapability::CAPABILITY);
  33  
  34        $client = PhabricatorOAuthServerClient::initializeNewClient($viewer);
  35  
  36        $title = pht('Create OAuth Application');
  37        $submit_button = pht('Create Application');
  38        $crumb_text = pht('Create Application');
  39        $cancel_uri = $this->getApplicationURI();
  40        $is_new = true;
  41      }
  42  
  43      $errors = array();
  44      $e_redirect = true;
  45      $e_name = true;
  46      if ($request->isFormPost()) {
  47        $redirect_uri = $request->getStr('redirect_uri');
  48        $client->setName($request->getStr('name'));
  49        $client->setRedirectURI($redirect_uri);
  50  
  51        if (!strlen($client->getName())) {
  52          $errors[] = pht('You must choose a name for this OAuth application.');
  53          $e_name = pht('Required');
  54        }
  55  
  56        $server = new PhabricatorOAuthServer();
  57        $uri = new PhutilURI($redirect_uri);
  58        if (!$server->validateRedirectURI($uri)) {
  59          $errors[] = pht(
  60            'Redirect URI must be a fully qualified domain name '.
  61            'with no fragments. See %s for more information on the correct '.
  62            'format.',
  63            'http://tools.ietf.org/html/draft-ietf-oauth-v2-23#section-3.1.2');
  64          $e_redirect = pht('Invalid');
  65        }
  66  
  67        if (!$errors) {
  68          $client->save();
  69          $view_uri = $client->getViewURI();
  70          return id(new AphrontRedirectResponse())->setURI($view_uri);
  71        }
  72      }
  73  
  74      $form = id(new AphrontFormView())
  75        ->setUser($viewer)
  76        ->appendChild(
  77          id(new AphrontFormTextControl())
  78            ->setLabel('Name')
  79            ->setName('name')
  80            ->setValue($client->getName())
  81            ->setError($e_name))
  82        ->appendChild(
  83          id(new AphrontFormTextControl())
  84            ->setLabel('Redirect URI')
  85            ->setName('redirect_uri')
  86            ->setValue($client->getRedirectURI())
  87            ->setError($e_redirect))
  88        ->appendChild(
  89          id(new AphrontFormSubmitControl())
  90            ->addCancelButton($cancel_uri)
  91            ->setValue($submit_button));
  92  
  93      $crumbs = $this->buildApplicationCrumbs();
  94      if (!$is_new) {
  95        $crumbs->addTextCrumb(
  96          $client->getName(),
  97          $client->getViewURI());
  98      }
  99      $crumbs->addTextCrumb($crumb_text);
 100  
 101      $box = id(new PHUIObjectBoxView())
 102        ->setHeaderText($title)
 103        ->setFormErrors($errors)
 104        ->setForm($form);
 105  
 106      return $this->buildApplicationPage(
 107        array(
 108          $crumbs,
 109          $box,
 110        ),
 111        array(
 112          'title' => $title,
 113        ));
 114    }
 115  
 116  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1