Path: blob/master/src/applications/auth/provider/PhabricatorAsanaAuthProvider.php
12256 views
<?php12final class PhabricatorAsanaAuthProvider3extends PhabricatorOAuth2AuthProvider4implements DoorkeeperRemarkupURIInterface {56public function getProviderName() {7return pht('Asana');8}910protected function getProviderConfigurationHelp() {11$app_uri = PhabricatorEnv::getProductionURI('/');12$login_uri = PhabricatorEnv::getURI($this->getLoginURI());1314return pht(15"To configure Asana OAuth, create a new application here:".16"\n\n".17"https://app.asana.com/-/account_api".18"\n\n".19"When creating your application, use these settings:".20"\n\n".21" - **App URL:** Set this to: `%s`\n".22" - **Redirect URL:** Set this to: `%s`".23"\n\n".24"After completing configuration, copy the **Client ID** and ".25"**Client Secret** to the fields above.",26$app_uri,27$login_uri);28}2930protected function newOAuthAdapter() {31return new PhutilAsanaAuthAdapter();32}3334protected function getLoginIcon() {35return 'Asana';36}3738public static function getAsanaProvider() {39$providers = self::getAllEnabledProviders();4041foreach ($providers as $provider) {42if ($provider instanceof PhabricatorAsanaAuthProvider) {43return $provider;44}45}4647return null;48}4950/* -( DoorkeeperRemarkupURIInterface )------------------------------------- */5152public function getDoorkeeperURIRef(PhutilURI $uri) {53$uri_string = phutil_string_cast($uri);5455$pattern = '(https://app\\.asana\\.com/0/(\\d+)/(\\d+))';56$matches = null;57if (!preg_match($pattern, $uri_string, $matches)) {58return null;59}6061if (strlen($uri->getFragment())) {62return null;63}6465if ($uri->getQueryParamsAsPairList()) {66return null;67}6869$context_id = $matches[1];70$task_id = $matches[2];7172return id(new DoorkeeperURIRef())73->setURI($uri)74->setApplicationType(DoorkeeperBridgeAsana::APPTYPE_ASANA)75->setApplicationDomain(DoorkeeperBridgeAsana::APPDOMAIN_ASANA)76->setObjectType(DoorkeeperBridgeAsana::OBJTYPE_TASK)77->setObjectID($task_id);78}7980}818283