From 0722f34347ff0151419d19749493be86b1e59f2a Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Sun, 16 Jan 2022 02:47:49 +0400 Subject: [PATCH 1/2] feat: add notion oauth provider --- app/config/providers.php | 10 ++ public/images/users/notion.png | Bin 0 -> 1919 bytes src/Appwrite/Auth/OAuth2/Notion.php | 148 ++++++++++++++++++++++++++++ 3 files changed, 158 insertions(+) create mode 100644 public/images/users/notion.png create mode 100644 src/Appwrite/Auth/OAuth2/Notion.php diff --git a/app/config/providers.php b/app/config/providers.php index bb823c9ab0..3aabbf60c2 100644 --- a/app/config/providers.php +++ b/app/config/providers.php @@ -131,6 +131,16 @@ return [ // Ordered by ABC. 'beta' => false, 'mock' => false, ], + 'notion' => [ + 'name' => 'Notion', + 'developers' => 'https://developers.notion.com/docs', + 'icon' => 'icon-notion', + 'enabled' => true, + 'sandbox' => false, + 'form' => false, + 'beta' => false, + 'mock' => false, + ], 'paypal' => [ 'name' => 'PayPal', 'developers' => 'https://developer.paypal.com/docs/api/overview/', diff --git a/public/images/users/notion.png b/public/images/users/notion.png new file mode 100644 index 0000000000000000000000000000000000000000..4eff411a429ef2362ff3116b06360de2c56c6561 GIT binary patch literal 1919 zcmV-_2Y~pAP)JyO5BOcXxMTVPR2GQ9?pO zGBPqGBqSOd8WIu`3JMAX0|P%lKi}Wqo}QkEhlhB0cxY&7R#sL%K0YZaDG(443kwUG znVI^iSXggwZ-aw_k&%&(j*f6}a3Ufi0s;bVZf*nw z1QQbzF)=YfKtNDXP+wnPetv$Flas2ds=>j**VotNFMeA_V)1b@W#f*Qc_YUCnwU<($LV*!^6Y4xVVy% zl7)qZ5fKr~%ggKQ>)F}av$M0Ip`nzNlzV%7RaI3CdAy}g!}mIw$44-XF^At6IULrzXkT3T9WW@dkXe~XKYrKP2}x3|j5%J1**CMG63 zJ3Eh$kDQ#GsHmv4w6ws$z|73do12?sV`Jgr;nmgEwY9Y~Gc)@7`f_q|WMpJWNJu(5 zIxH+KU|?WnWo4|atl;3_A0Hn#H#cWzXDux)E-o&BfPi&%bJ6%~Pjf#&AsL_|dD>guqtuv1f0(b3V~ z-rinbUPeYnIXO8A2?;bbG`YFC;^N|KYimqQOc)p#H8nM_udmwL+BP;eY;0`j=jVBO zd77G<2_=)H000D9NklrLCi@r!R{Q$Qc-tVK$$Uv5Bdf zxrL=1Rzop?m9-6tRxsJh5Hi%x-oepH)7iz<&E3P(3n<{Fp+uS`-dN4`@%8lc4+wM# z3JwVk3s;IzgekXCi3G_@az~M1N3MQuyG>{Cnp%=^^)Crq5wHhIcas#qd7ZTgIvvu5|tnLBab`~|EF z(bBmIS(Z#)w0Nd^zw45v%a*TL86RFjpscYb$CA{Qq!g|U46DeoWHm`vkZFm@NU}tM zdCl5Pm336LB#K!9!Esyfs0UFfX+yas8zybsl(>1z)?Q0}*=_K=u@sSg%&6d#?MPyF zJ78*E^Sr5C}ks z`b?&SC9=B`=wONLc6wMM0}C)(S|YobnRb@!gUf8Boh7QJFc~iu+F2521(RCOOEXIt z_QM)TatCNL~&VS6GMq5 z#a={N!f<>l1(u*Tv2a_$aDoC$q6&z#0H!Bv`_5R1!1d zi2|x5Si+#JOO_=?GfA<8As8}b-cO|RD5f&jYsFU}y*{EXVT7nJ#U)>U`Fc&|{CU9_ zTyALGytU6W`~0-q(Bz^oK&&MU$#=k+;x3fSd#{$Ad#S3c+Wo)>i!C1F8@==8Bia%M zLtl^%x$4D_EF7B%4GAIxoW92f9+P4+0ysS(#gZr!(gq*pnj)W;KHIT@6gz-W$QxOo;;5r zZM+R9DB@Rr5hwC8YeCq(qtS>tlTk1VM!_f;1)~5B008X2D^0-mgvtN_002ovPDHLk FV1hRVcJ=@O literal 0 HcmV?d00001 diff --git a/src/Appwrite/Auth/OAuth2/Notion.php b/src/Appwrite/Auth/OAuth2/Notion.php new file mode 100644 index 0000000000..748e7958ed --- /dev/null +++ b/src/Appwrite/Auth/OAuth2/Notion.php @@ -0,0 +1,148 @@ +endpoint . '/oauth/authorize?'. \http_build_query([ + 'client_id' => $this->appID, + 'redirect_uri' => $this->callback, + 'response_type' => 'code', + 'state' => \json_encode($this->state), + 'owner' => 'user' + ]); + } + + /** + * @param string $code + * + * @return string + */ + public function getAccessToken(string $code):string + { + $headers = [ + "Authorization: Basic " . \base64_encode($this->appID . ":" . $this->appSecret), + ]; + + $response = $this->request( + 'POST', + $this->endpoint . '/oauth/token', + $headers, + \http_build_query([ + 'grant_type' => 'authorization_code', + 'redirect_uri' => $this->callback, + 'code' => $code + ]) + ); + + $response = \json_decode($response, true); + + if (isset($response['access_token'])) { + return $response['access_token']; + } + + return ''; + } + + /** + * @param $accessToken + * + * @return string + */ + public function getUserID(string $accessToken):string + { + $response = $this->getUser($accessToken); + + if (isset($response['bot']['owner']['user']['id'])) { + return $response['bot']['owner']['user']['id']; + } + + return ''; + } + + /** + * @param $accessToken + * + * @return string + */ + public function getUserEmail(string $accessToken):string + { + $response = $this->getUser($accessToken); + + if(isset($response['bot']['owner']['user']['person']['email'])){ + return $response['bot']['owner']['user']['person']['email']; + } + + return ''; + } + + /** + * @param $accessToken + * + * @return string + */ + public function getUserName(string $accessToken):string + { + $response = $this->getUser($accessToken); + + if (isset($response['bot']['owner']['user']['name'])) { + return $response['bot']['owner']['user']['name']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return array + */ + protected function getUser(string $accessToken) + { + $headers = [ + 'Notion-Version: ' . $this->version, + 'Authorization: Bearer '.\urlencode($accessToken) + ]; + + if (empty($this->user)) { + $this->user = \json_decode($this->request('GET', $this->endpoint . '/users/me', $headers), true); + } + + return $this->user; + } +} From f6b6673bc98b6feac6f99766bff9731c8295b2cc Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Sun, 16 Jan 2022 16:03:29 +0400 Subject: [PATCH 2/2] feat: update notion image --- public/images/users/notion.png | Bin 1919 -> 1834 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/public/images/users/notion.png b/public/images/users/notion.png index 4eff411a429ef2362ff3116b06360de2c56c6561..a8694653ca070a5a48f8fd801fb7ec9a00a6afbc 100644 GIT binary patch delta 1798 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