From 90372dba455ad2832ae5f823efb410c83d8a2334 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Sat, 28 Sep 2019 14:57:21 +0530 Subject: [PATCH] fix: corrected path in OAuth docs --- app/config/providers.php | 4 +- docker-compose.yml | 12 ++-- docs/AddOAuthProvider.md | 4 +- public/images/oauth/gitlab.png | Bin 0 -> 8905 bytes public/images/oauth/google.png | Bin 0 -> 4085 bytes src/Auth/OAuth/Gitlab.php | 121 +++++++++++++++++++++++++++++++++ src/Auth/OAuth/Google.php | 121 +++++++++++++++++++++++++++++++++ 7 files changed, 252 insertions(+), 10 deletions(-) create mode 100644 public/images/oauth/gitlab.png create mode 100644 public/images/oauth/google.png create mode 100644 src/Auth/OAuth/Gitlab.php create mode 100644 src/Auth/OAuth/Google.php diff --git a/app/config/providers.php b/app/config/providers.php index 7dc70c92fd..9e5f329ebb 100644 --- a/app/config/providers.php +++ b/app/config/providers.php @@ -19,12 +19,12 @@ return [ 'gitlab' => [ 'developers' => 'https://docs.gitlab.com/ee/api/', 'icon' => 'icon-gitlab', - 'enabled' => false, + 'enabled' => true, ], 'google' => [ 'developers' => 'https://developers.google.com/', 'icon' => 'icon-google', - 'enabled' => false, + 'enabled' => true, ], 'instagram' => [ 'developers' => 'https://www.instagram.com/developer/', diff --git a/docker-compose.yml b/docker-compose.yml index 2cd1d9bb4d..c45a3294f7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,12 +16,12 @@ services: - "80:80" - "443:443" depends_on: - - mariadb - - redis - - smtp - - clamav - - influxdb - - telegraf + - mariadb + - redis + - smtp + - clamav + - influxdb + - telegraf environment: - _APP_ENV=development - _APP_OPENSSL_KEY_V1=your-secret-key diff --git a/docs/AddOAuthProvider.md b/docs/AddOAuthProvider.md index d35278d879..b25e25195b 100644 --- a/docs/AddOAuthProvider.md +++ b/docs/AddOAuthProvider.md @@ -30,8 +30,8 @@ Once finished setting all the metadata for the new provider you need to start co Create a new class that extends the basic OAuth provider abstract class in this location: -``` -\Auth\OAuth\ProviderName +```bash +src/Auth/OAuth/ProviderName ``` Note that the class name should start with a capital letter as PHP FIG standards suggest. diff --git a/public/images/oauth/gitlab.png b/public/images/oauth/gitlab.png new file mode 100644 index 0000000000000000000000000000000000000000..35cb5e9dab01596bc9363aac8b2a4110e3599eef GIT binary patch literal 8905 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 z@zfAa7l052version.'/dialog/oauth?client_id='.urlencode($this->appID).'&redirect_uri='.urlencode($this->callback).'&scope=email&state='.urlencode(json_encode($this->state)); + } + + /** + * @param string $code + * + * @return string + */ + public function getAccessToken(string $code):string + { + $accessToken = $this->request('GET', 'https://graph.google.com/'.$this->version.'/oauth/access_token?'. + 'client_id='.urlencode($this->appID). + '&redirect_uri='.urlencode($this->callback). + '&client_secret='.urlencode($this->appSecret). + '&code='.urlencode($code) + ); + + $accessToken = json_decode($accessToken, true); // + + if (isset($accessToken['access_token'])) { + 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['email'])) { + return $user['email']; + } + + 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 + { + if (empty($this->user)) { + $user = $this->request('GET', 'https://graph.google.com/'.$this->version.'/me?fields=email,name&access_token='.urlencode($accessToken)); + + $this->user = json_decode($user, true); + } + + return $this->user; + } +} diff --git a/src/Auth/OAuth/Google.php b/src/Auth/OAuth/Google.php new file mode 100644 index 0000000000..de4cd546ae --- /dev/null +++ b/src/Auth/OAuth/Google.php @@ -0,0 +1,121 @@ +version.'/dialog/oauth?client_id='.urlencode($this->appID).'&redirect_uri='.urlencode($this->callback).'&scope=email&state='.urlencode(json_encode($this->state)); + } + + /** + * @param string $code + * + * @return string + */ + public function getAccessToken(string $code):string + { + $accessToken = $this->request('GET', 'https://graph.google.com/'.$this->version.'/oauth/access_token?'. + 'client_id='.urlencode($this->appID). + '&redirect_uri='.urlencode($this->callback). + '&client_secret='.urlencode($this->appSecret). + '&code='.urlencode($code) + ); + + $accessToken = json_decode($accessToken, true); // + + if (isset($accessToken['access_token'])) { + 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['email'])) { + return $user['email']; + } + + 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 + { + if (empty($this->user)) { + $user = $this->request('GET', 'https://graph.google.com/'.$this->version.'/me?fields=email,name&access_token='.urlencode($accessToken)); + + $this->user = json_decode($user, true); + } + + return $this->user; + } +}