[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/auth/provider/ -> PhabricatorFacebookAuthProvider.php (source)

   1  <?php
   2  
   3  final class PhabricatorFacebookAuthProvider
   4    extends PhabricatorOAuth2AuthProvider {
   5  
   6    const KEY_REQUIRE_SECURE = 'oauth:facebook:require-secure';
   7  
   8    public function getProviderName() {
   9      return pht('Facebook');
  10    }
  11  
  12    protected function getProviderConfigurationHelp() {
  13      $uri = PhabricatorEnv::getProductionURI($this->getLoginURI());
  14      return pht(
  15        'To configure Facebook OAuth, create a new Facebook Application here:'.
  16        "\n\n".
  17        'https://developers.facebook.com/apps'.
  18        "\n\n".
  19        'You should use these settings in your application:'.
  20        "\n\n".
  21        "  - **Site URL**: Set this to `%s`\n".
  22        "  - **Valid OAuth redirect URIs**: You should also set this to `%s`\n".
  23        "  - **Client OAuth Login**: Set this to **OFF**.\n".
  24        "  - **Embedded browser OAuth Login**: Set this to **OFF**.\n".
  25        "\n\n".
  26        "Some of these settings may be in the **Advanced** tab.\n\n".
  27        "After creating your new application, copy the **App ID** and ".
  28        "**App Secret** to the fields above.",
  29        (string)$uri,
  30        (string)$uri);
  31    }
  32  
  33    public function getDefaultProviderConfig() {
  34      return parent::getDefaultProviderConfig()
  35        ->setProperty(self::KEY_REQUIRE_SECURE, 1);
  36    }
  37  
  38    protected function newOAuthAdapter() {
  39      $require_secure = $this->getProviderConfig()->getProperty(
  40        self::KEY_REQUIRE_SECURE);
  41  
  42      return id(new PhutilFacebookAuthAdapter())
  43        ->setRequireSecureBrowsing($require_secure);
  44    }
  45  
  46    protected function getLoginIcon() {
  47      return 'Facebook';
  48    }
  49  
  50    public function readFormValuesFromProvider() {
  51      $require_secure = $this->getProviderConfig()->getProperty(
  52        self::KEY_REQUIRE_SECURE);
  53  
  54      return parent::readFormValuesFromProvider() + array(
  55        self::KEY_REQUIRE_SECURE => $require_secure,
  56      );
  57    }
  58  
  59    public function readFormValuesFromRequest(AphrontRequest $request) {
  60      return parent::readFormValuesFromRequest($request) + array(
  61        self::KEY_REQUIRE_SECURE => $request->getBool(self::KEY_REQUIRE_SECURE),
  62      );
  63    }
  64  
  65    public function extendEditForm(
  66      AphrontRequest $request,
  67      AphrontFormView $form,
  68      array $values,
  69      array $issues) {
  70  
  71      parent::extendEditForm($request, $form, $values, $issues);
  72  
  73      $key_require = self::KEY_REQUIRE_SECURE;
  74      $v_require = idx($values, $key_require);
  75  
  76      $form
  77        ->appendChild(
  78          id(new AphrontFormCheckboxControl())
  79            ->addCheckbox(
  80              $key_require,
  81              $v_require,
  82              pht(
  83                "%s ".
  84                "Require users to enable 'secure browsing' on Facebook in order ".
  85                "to use Facebook to authenticate with Phabricator. This ".
  86                "improves security by preventing an attacker from capturing ".
  87                "an insecure Facebook session and escalating it into a ".
  88                "Phabricator session. Enabling it is recommended.",
  89                phutil_tag('strong', array(), pht('Require Secure Browsing:')))));
  90    }
  91  
  92    public function renderConfigPropertyTransactionTitle(
  93      PhabricatorAuthProviderConfigTransaction $xaction) {
  94  
  95      $author_phid = $xaction->getAuthorPHID();
  96      $old = $xaction->getOldValue();
  97      $new = $xaction->getNewValue();
  98      $key = $xaction->getMetadataValue(
  99        PhabricatorAuthProviderConfigTransaction::PROPERTY_KEY);
 100  
 101      switch ($key) {
 102        case self::KEY_REQUIRE_SECURE:
 103          if ($new) {
 104            return pht(
 105              '%s turned "Require Secure Browsing" on.',
 106              $xaction->renderHandleLink($author_phid));
 107          } else {
 108            return pht(
 109              '%s turned "Require Secure Browsing" off.',
 110              $xaction->renderHandleLink($author_phid));
 111          }
 112      }
 113  
 114      return parent::renderConfigPropertyTransactionTitle($xaction);
 115    }
 116  
 117    public static function getFacebookApplicationID() {
 118      $providers = PhabricatorAuthProvider::getAllProviders();
 119      $fb_provider = idx($providers, 'facebook:facebook.com');
 120      if (!$fb_provider) {
 121        return null;
 122      }
 123  
 124      return $fb_provider->getProviderConfig()->getProperty(
 125        self::PROPERTY_APP_ID);
 126    }
 127  
 128  }


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