From becf8b9ba4a67d4974b13e0655d6280417574c8c Mon Sep 17 00:00:00 2001 From: Armino Popp Date: Sat, 4 Jul 2020 15:26:43 +0300 Subject: [PATCH 1/3] Initial files for box.com OAuth2 provider --- app/config/providers.php | 8 ++++++++ public/images/oauth2/box.png | Bin 0 -> 2814 bytes src/Appwrite/Auth/OAuth2/Box.php | 1 + 3 files changed, 9 insertions(+) create mode 100644 public/images/oauth2/box.png create mode 100644 src/Appwrite/Auth/OAuth2/Box.php diff --git a/app/config/providers.php b/app/config/providers.php index 505c2898c4..c65e7a80cd 100644 --- a/app/config/providers.php +++ b/app/config/providers.php @@ -33,6 +33,14 @@ return [ // Ordered by ABC. 'beta' => false, 'mock' => false ], + 'box' => [ + 'developers' => 'https://developer.box.com/reference/', + 'icon' => 'icon-box', + 'enabled' => true, + 'form' => false, + 'beta' => false, + 'mock' => false + ], 'discord' => [ 'developers' => 'https://discordapp.com/developers/docs/topics/oauth2', 'icon' => 'icon-discord', diff --git a/public/images/oauth2/box.png b/public/images/oauth2/box.png new file mode 100644 index 0000000000000000000000000000000000000000..e2c5249b98b3f5e600d8097bcf3c44eb5b519ace GIT binary patch literal 2814 zcmZuzX*|=910FWHEyu4i@s&zrRANyKbIgi~QItDZ?u5$C+`=d+N3P|}Btn~7jxzk* zBv<4&cPw)sXX-Y`L>E3114pbDlXeH~QA3>etjJ2)I)XU}Z0 zLB-31tNZ_KvfEeo^M3BomiA86{H~hWr7Y}i?jInis~Hp9xG(G9*VwZ4t5<2Puy0$? zM)uvmHxfp+sVsKHBwM?a4K%UkTG;qLcE&8bdxITE9PkE#_|&j^I_8gZmUD&c3z4F6 z1uo5YIy!~%y!^{`K6`AfDOlqzEWjI8Kin|$5NFauvC55eI;%?ux3TpZjiV7&{d|tu zH=$#-QQwQjTalWecRhx$=CapjRi|m8Lo1+z_ASkZjO^rT)wN-})skYe2*juZ_?EoY{+evXQ4*9|f4dQ9}H!btvun#Y}(l1UL zJi$$=q!NhDQj^E|YZyAj@#^*fi)L4f-@z#NpxAq_<} zwutrfXCw%buy$VK2$@0-?EKYaL>rb%kj~s5D((`MR{_Eshw0O&kEqgnwj``H{wdD@ z#CZva;cmZ5zdCGVI;F%;-aB=E=^plaY>aa96!_aN2A3h`dIbv*ya zI#lAZ{2=Isb^Si^wYX2~QaHei2Xv?J_-Sh5NZPH*d+R_f^-Pi^1uM9>&bQ;`Jil)_lsPI*~ z*soho;SwszqGnCW5`8_>V+|IOAkXPk+HmG|MF_US(`~dQbPoOFs~}u$A$ zs{*ZVW=;eiPcRYuJ)ftLWgDBOhFaS(E0@|_DM*Urt5%f`u+vCgr(qWpGisf>49MFi z+tIhK=e5Qm8<2vdMtmSS)JML~YU{B(7V>H>IEjNOhN59_As4f#@!iii@{bbMG?prrhLEa0IfB-m)s{AHf^4{35J<(T$(6br{Y9P zKH=dO<*wYAaK6(8W%44N60z3gYa`}SWU7*GvKWOFVPR}8ro^2vC>|!Ggdr#lTVEI3 z9GD{OLfljnUWOTj|K(J2vf5IqV-{~*=8=UA&9sIkm-L$CI+Rnw;PJ(}Io%0IY|}k* z2Zi_O8%OUPwUF}Bdv>rb4pcX7*c0tlcijkkV_6S&AD<9&@Y(u&@e;p|vhF!ar?c2H zpDgZ&P}V&KvVr%sG5C$Ew*SEx7KeOP=ioLf-0~~1C^Acit{VqNfYo6^;1_N&!3Y84 zg-~F51uk%}skcW-x{@)QK_ zNf&y{^3?Q|8C+%WPAfwlG+T;-L{!u`+b*c|hxN(Ox@Bbw6N_eqcCU`>11SS0)MVtd zd`I8C*Qvfh$WM%N40?uTiee)i|BAnG)T8a@3nZ7qCZ!f(6axzg?0QcOg5YUp6al># z@e|s)S!+Tkl2>mJ1Wyt7wnBSPO|aZWjEv9LXy1@l+yNJNV+Mk99NlnMO%{g%*$S95 zw$V>Rsx*v!pUQ-OY-}yxIw7*Fw4AyC>yR+Ov3@cPqp&iE<7d zcXtQ7`C@!6gnrJqR$a*$mO_r|e}w=k=l7o+ zNl=%tbPZ8(LXvmM^F)(Tkb2~I>HdCMhyE;n)=M`=8ug01UY=V2lBFoEng5f!O~q4x zie-*IaHs@Zi-NEJBW^*2fk0kP+wS_pys}IjeB!AdSs<-0BD}F_Q zITlP~mz?LyrzWLho%Kk;R5fi@)U}Xym;~zutpDufwSvl-A9A_%FUFNnhD-9tbjixc zq9?uRYkI%VP-WXU+kqhuOs~zra-?Kkf*fXk0mQmDbbWxjq7E^|pTr5+UBHuBZ&M?&vjfNsWuq&I5u-jzq? zOM=HNzc_2Ko2NvG-og=0jiHLd$<|sTAG-p+Tnp(Alb8hJm#*8fa%`Z5mBn}sGa2Z4 zI3MifM!}9Xmq_|i{bnIHS6>4=v4q0Pyd>U{04^FbmUbhd+fN0-ezRqf&IUuS4t6!i zoPRIlPMkbbmHJRo!MvMCn_&IwPht6J{CZmTqxV4!?fbbn$3m0YOoIPrjPpRcjbGwZ zujiN?bhbM|myq?V?$y%rC9@;`ZwVaDr{VaBd_;rRP&o-_=zEm6 z)m+N4sNax_Wgiov$XT{&z}feWb_c$bQ7aPfF&^le&9KQ)rt6(7wm`F}wa!p{LZ-9C zw|zlv|u1?6A? z){T1$9x(QFQnH@VOI8XOcr?mu;-aPFyc>RrC}bO<14U-}{= ze*W0hgdK4xHL Date: Sat, 4 Jul 2020 16:59:17 +0300 Subject: [PATCH 2/3] work done --- src/Appwrite/Auth/OAuth2/Box.php | 153 ++++++++++++++++++++++++++++++- 1 file changed, 152 insertions(+), 1 deletion(-) diff --git a/src/Appwrite/Auth/OAuth2/Box.php b/src/Appwrite/Auth/OAuth2/Box.php index a81436628e..dc4713492f 100644 --- a/src/Appwrite/Auth/OAuth2/Box.php +++ b/src/Appwrite/Auth/OAuth2/Box.php @@ -1 +1,152 @@ -endpoint . 'authorize?'. + \http_build_query([ + 'response_type' => 'code', + 'client_id' => $this->appID, + 'scope' => \implode(',', $this->getScopes()), + 'redirect_uri' => $this->callback, + 'state' => \json_encode($this->state), + ]); + + return $url; + } + + /** + * @param string $code + * + * @return string + */ + public function getAccessToken(string $code): string + { + $header = "Content-Type: application/x-www-form-urlencoded"; + $accessToken = $this->request( + 'POST', + $this->endpoint . 'token', + [$header], + \http_build_query([ + "client_id" => $this->appID, + "client_secret" => $this->appSecret, + "code" => $code, + "grant_type" => "authorization_code", + "scope" => 'manage_app_users', + "redirect_uri" => $this->callback + ]) + ); + + $accessToken = \json_decode($accessToken, true); + + if (array_key_exists('access_token', $accessToken)) { + return $accessToken['access_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['login'])) { + return $user['login']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserName(string $accessToken): string + { + $user = $this->getUser($accessToken); + + if (isset($user['name'])) { + return $user['name']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return array + */ + protected function getUser(string $accessToken): array + { + $header = [ + 'Authorization: Bearer '.\urlencode($accessToken), + ]; + if (empty($this->user)) { + $user = $this->request( + 'GET', + $this->resourceEndpoint . 'me', + $header + ); + $this->user = \json_decode($user, true); + } + + return $this->user; + } + +} \ No newline at end of file From 56e28e91bb3c3583082b4676763a4d04dcb7e4a6 Mon Sep 17 00:00:00 2001 From: Armino Popp Date: Sat, 4 Jul 2020 17:04:25 +0300 Subject: [PATCH 3/3] Correcting scope in getAccessToken --- src/Appwrite/Auth/OAuth2/Box.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Appwrite/Auth/OAuth2/Box.php b/src/Appwrite/Auth/OAuth2/Box.php index dc4713492f..48e2a387a6 100644 --- a/src/Appwrite/Auth/OAuth2/Box.php +++ b/src/Appwrite/Auth/OAuth2/Box.php @@ -65,7 +65,7 @@ class Box extends OAuth2 "client_secret" => $this->appSecret, "code" => $code, "grant_type" => "authorization_code", - "scope" => 'manage_app_users', + "scope" => \implode(',', $this->getScopes()), "redirect_uri" => $this->callback ]) );