From d737294acb2b438fce08d13cf656566f9296a310 Mon Sep 17 00:00:00 2001 From: AmreshSinha Date: Wed, 20 Oct 2021 11:09:02 +0530 Subject: [PATCH] Added Yammer OAuth2 Provider --- app/config/providers.php | 10 ++ public/images/users/yammer.png | Bin 0 -> 4840 bytes src/Appwrite/Auth/OAuth2/Yammer.php | 137 ++++++++++++++++++++++++++++ 3 files changed, 147 insertions(+) create mode 100644 public/images/users/yammer.png create mode 100644 src/Appwrite/Auth/OAuth2/Yammer.php diff --git a/app/config/providers.php b/app/config/providers.php index 8525a4216a..bb823c9ab0 100644 --- a/app/config/providers.php +++ b/app/config/providers.php @@ -231,6 +231,16 @@ return [ // Ordered by ABC. 'beta' => false, 'mock' => false, ], + 'yammer' => [ + 'name' => 'Yammer', + 'developers' => 'https://developer.yammer.com/docs/oauth-2', + 'icon' => 'icon-yammer', + 'enabled' => true, + 'sandbox' => false, + 'form' => false, + 'beta' => false, + 'mock' => false, + ], 'yandex' => [ 'name' => 'Yandex', 'developers' => 'https://tech.yandex.com/oauth/', diff --git a/public/images/users/yammer.png b/public/images/users/yammer.png new file mode 100644 index 0000000000000000000000000000000000000000..2949d82c1bac19f13233a7bc15d4d4a6a502f782 GIT binary patch literal 4840 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 JN2}UI{12{eH4y*+ literal 0 HcmV?d00001 diff --git a/src/Appwrite/Auth/OAuth2/Yammer.php b/src/Appwrite/Auth/OAuth2/Yammer.php new file mode 100644 index 0000000000..832d886ee9 --- /dev/null +++ b/src/Appwrite/Auth/OAuth2/Yammer.php @@ -0,0 +1,137 @@ +endpoint . 'oauth2/authorize?'. + \http_build_query([ + 'client_id' => $this->appID, + 'response_type' => 'code', + 'redirect_uri' => $this->callback, + 'state' => \json_encode($this->state) + ]); + } + + /** + * @param string $code + * + * @return string + */ + public function getAccessToken(string $code): string + { + $headers = ['Content-Type: application/x-www-form-urlencoded']; + + $accessToken = $this->request( + 'POST', + $this->endpoint . 'access_token?', + $headers, + \http_build_query([ + 'client_id' => $this->appID, + 'client_secret' => $this->appSecret, + 'code' => $code, + 'grant_type' => 'authorization_code' + ]) + ); + + $accessToken = \json_decode($accessToken, true); + + if (isset($accessToken['access_token']['token'])) { + return $accessToken['access_token']['token']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserID(string $accessToken): string + { + $user = $this->getUser($accessToken); + + if (isset($user['id'])) { + return $user['id']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserEmail(string $accessToken): string + { + $user = $this->getUser($accessToken); + + if (isset($user['email'])) { + return $user['email']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserName(string $accessToken): string + { + $user = $this->getUser($accessToken); + + if (isset($user['full_name'])) { + return $user['full_name']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return array + */ + protected function getUser(string $accessToken): array + { + if (empty($this->user)) { + $headers = ['Authorization: Bearer '. \urlencode($accessToken)]; + $user = $this->request('GET', 'https://www.yammer.com/api/v1/users/current.json', $headers); + $this->user = \json_decode($user, true); + } + + return $this->user; + } +}