public function processRequest()
 {
     $request = $this->getRequest();
     $this->pages = array('account' => 'Account', 'profile' => 'Profile', 'email' => 'Email', 'password' => 'Password', 'preferences' => 'Preferences', 'conduit' => 'Conduit Certificate');
     if (!PhabricatorEnv::getEnvConfig('account.editable') || !PhabricatorEnv::getEnvConfig('auth.password-auth-enabled')) {
         unset($this->pages['password']);
     }
     if (PhabricatorUserSSHKeysSettingsPanelController::isEnabled()) {
         $this->pages['sshkeys'] = 'SSH Public Keys';
     }
     $oauth_providers = PhabricatorOAuthProvider::getAllProviders();
     foreach ($oauth_providers as $provider) {
         if (!$provider->isProviderEnabled()) {
             continue;
         }
         $key = $provider->getProviderKey();
         $name = $provider->getProviderName();
         $this->pages[$key] = $name . ' Account';
     }
     if (empty($this->pages[$this->page])) {
         $this->page = key($this->pages);
     }
     switch ($this->page) {
         case 'account':
             $delegate = new PhabricatorUserAccountSettingsPanelController($request);
             break;
         case 'profile':
             $delegate = new PhabricatorUserProfileSettingsPanelController($request);
             break;
         case 'email':
             $delegate = new PhabricatorUserEmailSettingsPanelController($request);
             break;
         case 'password':
             $delegate = new PhabricatorUserPasswordSettingsPanelController($request);
             break;
         case 'conduit':
             $delegate = new PhabricatorUserConduitSettingsPanelController($request);
             break;
         case 'sshkeys':
             $delegate = new PhabricatorUserSSHKeysSettingsPanelController($request);
             break;
         case 'preferences':
             $delegate = new PhabricatorUserPreferenceSettingsPanelController($request);
             break;
         default:
             if (empty($this->pages[$this->page])) {
                 return new Aphront404Response();
             }
             $delegate = new PhabricatorUserOAuthSettingsPanelController($request);
             $delegate->setOAuthProvider($oauth_providers[$this->page]);
     }
     $response = $this->delegateToController($delegate);
     if ($response instanceof AphrontView) {
         $sidenav = $this->renderSideNav();
         $sidenav->appendChild($response);
         return $this->buildStandardPageResponse($sidenav, array('title' => 'Account Settings'));
     } else {
         return $response;
     }
 }
 public function processRequest()
 {
     $request = $this->getRequest();
     $oauth_providers = PhabricatorOAuthProvider::getAllProviders();
     $sidenav = $this->renderSideNav($oauth_providers);
     $this->page = $sidenav->selectFilter($this->page, 'account');
     switch ($this->page) {
         case 'account':
             $delegate = new PhabricatorUserAccountSettingsPanelController($request);
             break;
         case 'profile':
             $delegate = new PhabricatorUserProfileSettingsPanelController($request);
             break;
         case 'email':
             $delegate = new PhabricatorUserEmailSettingsPanelController($request);
             break;
         case 'emailpref':
             $delegate = new PhabricatorUserEmailPreferenceSettingsPanelController($request);
             break;
         case 'password':
             $delegate = new PhabricatorUserPasswordSettingsPanelController($request);
             break;
         case 'conduit':
             $delegate = new PhabricatorUserConduitSettingsPanelController($request);
             break;
         case 'sshkeys':
             $delegate = new PhabricatorUserSSHKeysSettingsPanelController($request);
             break;
         case 'preferences':
             $delegate = new PhabricatorUserPreferenceSettingsPanelController($request);
             break;
         case 'search':
             $delegate = new PhabricatorUserSearchSettingsPanelController($request);
             break;
         case 'ldap':
             $delegate = new PhabricatorUserLDAPSettingsPanelController($request);
             break;
         default:
             $delegate = new PhabricatorUserOAuthSettingsPanelController($request);
             $delegate->setOAuthProvider($oauth_providers[$this->page]);
             break;
     }
     $response = $this->delegateToController($delegate);
     if ($response instanceof AphrontView) {
         $sidenav->appendChild($response);
         return $this->buildStandardPageResponse($sidenav, array('title' => 'Account Settings'));
     } else {
         return $response;
     }
 }