[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
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 }
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 |