From fe824fd73383ca54ea85231e74f2ea507bf3d507 Mon Sep 17 00:00:00 2001 From: haimantika mitra Date: Wed, 22 Jun 2022 20:30:19 +0530 Subject: [PATCH 1/4] Autodesk adapter --- app/config/providers.php | 10 ++ public/images/users/autodesk.png | Bin 0 -> 22807 bytes src/Appwrite/Auth/OAuth2/Autodesk.php | 177 ++++++++++++++++++++++++++ 3 files changed, 187 insertions(+) create mode 100644 public/images/users/autodesk.png create mode 100644 src/Appwrite/Auth/OAuth2/Autodesk.php diff --git a/app/config/providers.php b/app/config/providers.php index 79c0a8efb7..7959efc10f 100644 --- a/app/config/providers.php +++ b/app/config/providers.php @@ -31,6 +31,16 @@ return [ // Ordered by ABC. 'beta' => false, 'mock' => false, ], + 'autodesk' => [ + 'name' => 'autodesk', + 'developers' => 'https://forge.autodesk.com/en/docs/oauth/v2/developers_guide/overview/', + 'icon' => 'icon-autodesk', + 'enabled' => true, + 'sandbox' => false, + 'form' => false, + 'beta' => false, + 'mock' => false, + ], 'bitbucket' => [ 'name' => 'BitBucket', 'developers' => 'https://developer.atlassian.com/bitbucket', diff --git a/public/images/users/autodesk.png b/public/images/users/autodesk.png new file mode 100644 index 0000000000000000000000000000000000000000..8ee8ab3259301530b5eedfad07e412816605dbe7 GIT binary patch literal 22807 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 H%i#Y5aa|s6 literal 0 HcmV?d00001 diff --git a/src/Appwrite/Auth/OAuth2/Autodesk.php b/src/Appwrite/Auth/OAuth2/Autodesk.php new file mode 100644 index 0000000000..7e0ca08d7e --- /dev/null +++ b/src/Appwrite/Auth/OAuth2/Autodesk.php @@ -0,0 +1,177 @@ + $this->appID, + 'redirect_uri' => $this->callback, + 'response_type' => 'code' + ]); + } + + /** + * @param string $code + * + * @return array + */ + protected function getTokens(string $code): array + { + if (empty($this->tokens)) { + $response = $this->request( + 'POST', + 'https://developer.api.autodesk.com/authentication/v1/gettoken', + [], + \http_build_query([ + 'client_id' => $this->appID, + 'redirect_uri' => $this->callback, + 'client_secret' => $this->appSecret, + 'code' => $code, + 'grant_type' => 'authorization_code' + ]) + ); + + $output = []; + \parse_str($response, $output); + $this->tokens = $output; + } + + return $this->tokens; + } + + /** + * @param string $refreshToken + * + * @return array + */ + public function refreshTokens(string $refreshToken): array + { + $response = $this->request( + 'POST', + 'https://developer.api.autodesk.com/authentication/v1/refreshtoken', + [], + \http_build_query([ + 'client_id' => $this->appID, + 'client_secret' => $this->appSecret, + 'grant_type' => 'refresh_token', + 'code' => $code, + 'redirect_uri' => $this->callback, + ]) + ); + + $output = []; + \parse_str($response, $output); + $this->tokens = $output; + + if (empty($this->tokens['refresh_token'])) { + $this->tokens['refresh_token'] = $refreshToken; + } + + return $this->tokens; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserID(string $accessToken): string + { + $user = $this->getUser($accessToken); + + return $user['userId'] ?? ''; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserEmail(string $accessToken): string + { + $user = $this->getUser($accessToken); + + return $user['emailId'] ?? ''; + } + + /** + * Check if the OAuth email is verified + * + * @link https://docs.github.com/en/rest/users/emails#list-email-addresses-for-the-authenticated-user + * + * @param string $accessToken + * + * @return bool + */ + public function isEmailVerified(string $accessToken): bool + { + $user = $this->getUser($accessToken); + + if ($user['emailVerified'] ?? false) { + return true; + } + + return false; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserName(string $accessToken): string + { + $user = $this->getUser($accessToken); + + return $user['userName'] ?? ''; + } + + /** + * @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://developer.api.autodesk.com/userprofile/v1/users/@me', $headers); + $this->user = \json_decode($user, true); + } + + return $this->user; + } +} From fbc86e29d4e4ee9b7226f8bc68fe70f6cd0156f0 Mon Sep 17 00:00:00 2001 From: haimantika mitra Date: Wed, 22 Jun 2022 21:05:35 +0530 Subject: [PATCH 2/4] Uppercase --- app/config/providers.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/config/providers.php b/app/config/providers.php index 7959efc10f..1a623faeb9 100644 --- a/app/config/providers.php +++ b/app/config/providers.php @@ -32,7 +32,7 @@ return [ // Ordered by ABC. 'mock' => false, ], 'autodesk' => [ - 'name' => 'autodesk', + 'name' => 'Autodesk', 'developers' => 'https://forge.autodesk.com/en/docs/oauth/v2/developers_guide/overview/', 'icon' => 'icon-autodesk', 'enabled' => true, From 148d46a2b1b0fdb833eebcc1f4c85f26e76ae965 Mon Sep 17 00:00:00 2001 From: haimantika mitra Date: Wed, 22 Jun 2022 21:54:47 +0530 Subject: [PATCH 3/4] New image updates --- public/images/users/autodesk.png | Bin 22807 -> 882 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/public/images/users/autodesk.png b/public/images/users/autodesk.png index 8ee8ab3259301530b5eedfad07e412816605dbe7..c7ad94f61acf7ad88f069dfbcede47b3d014efa3 100644 GIT binary patch delta 812 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 H%i#Y5aa|s6 From fdab2e28e9f4c75f495069ad820451668e277628 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Thu, 23 Jun 2022 08:48:59 +0000 Subject: [PATCH 4/4] Bug fixing --- src/Appwrite/Auth/OAuth2/Autodesk.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Appwrite/Auth/OAuth2/Autodesk.php b/src/Appwrite/Auth/OAuth2/Autodesk.php index 7e0ca08d7e..0b268ead3b 100644 --- a/src/Appwrite/Auth/OAuth2/Autodesk.php +++ b/src/Appwrite/Auth/OAuth2/Autodesk.php @@ -38,6 +38,8 @@ class Autodesk extends OAuth2 { return 'https://developer.api.autodesk.com/authentication/v1/authorize?' . \http_build_query([ 'client_id' => $this->appID, + 'scope' => \implode(' ', $this->getScopes()), + 'state' => \json_encode($this->state), 'redirect_uri' => $this->callback, 'response_type' => 'code' ]); @@ -51,10 +53,11 @@ class Autodesk extends OAuth2 protected function getTokens(string $code): array { if (empty($this->tokens)) { + $headers = ['Content-Type: application/x-www-form-urlencoded']; $response = $this->request( 'POST', 'https://developer.api.autodesk.com/authentication/v1/gettoken', - [], + $headers, \http_build_query([ 'client_id' => $this->appID, 'redirect_uri' => $this->callback, @@ -64,9 +67,7 @@ class Autodesk extends OAuth2 ]) ); - $output = []; - \parse_str($response, $output); - $this->tokens = $output; + $this->tokens = \json_decode($response, true); } return $this->tokens;