| <?php | |
| /** | |
| * Copyright 2010-2014 baas-platform.com, Pty Ltd. or its affiliates. All Rights Reserved. | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"). | |
| * You may not use this file except in compliance with the License. | |
| * A copy of the License is located at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * or in the "license" file accompanying this file. This file is distributed | |
| * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either | |
| * express or implied. See the License for the specific language governing | |
| * permissions and limitations under the License. | |
| */ | |
| namespace Apache\Usergrid\Native; | |
| use Apache\Usergrid\Api\Usergrid; | |
| use Apache\Usergrid\Guzzle\Plugin\Oauth2\GrantType\ClientCredentials; | |
| use Apache\Usergrid\Guzzle\Plugin\Oauth2\GrantType\PasswordCredentials; | |
| use Apache\Usergrid\Guzzle\Plugin\Oauth2\GrantType\RefreshToken; | |
| use Apache\Usergrid\Guzzle\Plugin\Oauth2\Oauth2Plugin; | |
| use Guzzle\Http\Client; | |
| /** | |
| * Class UsergridBootstrapper | |
| * | |
| * @package Apache/Usergrid | |
| * @version 1.0.0 | |
| * @author Jason Kristian <jasonkristian@gmail.com> | |
| * @license Apache License, Version 2.0 | |
| * @copyright (c) 2008-2014, Baas Platform Pty. Ltd | |
| * @link http://baas-platform.com | |
| */ | |
| class UsergridBootstrapper | |
| { | |
| /** | |
| * The Usergrid configuration. | |
| * | |
| * @var array | |
| */ | |
| protected $config; | |
| /** | |
| * The Oauth2 Plugin. | |
| * | |
| * @var \Apache\Usergrid\Guzzle\Plugin\Oauth2\Oauth2Plugin | |
| */ | |
| protected $oauth2Plugin = null; | |
| /** | |
| * Constructor. | |
| * | |
| * @param mixed $config | |
| * @return \Apache\Usergrid\Native\UsergridBootstrapper | |
| */ | |
| public function __construct($config = null) | |
| { | |
| $this->config = $config ?: new ConfigRepository($config); | |
| } | |
| /** | |
| * Creates the Usergrid instance. | |
| * | |
| * @return \Apache\Usergrid\Api\Usergrid | |
| */ | |
| public function createUsergrid() | |
| { | |
| $baseUrl = array_get($this->config, 'usergrid.url'); | |
| $orgName = array_get($this->config, 'usergrid.orgName'); | |
| $appName = array_get($this->config, 'usergrid.appName'); | |
| $manifestPath = array_get($this->config, 'usergrid.manifestPath'); | |
| $version = array_get($this->config, 'usergrid.version'); | |
| $enable_oauth2_plugin = array_get($this->config, 'usergrid.enable_oauth2_plugin'); | |
| //check if user wants to manage there own Oauth 2 auth flow | |
| if ($enable_oauth2_plugin) { | |
| $this->createOauth2Plugin(); | |
| return new Usergrid($orgName, $appName, $manifestPath, $version, $baseUrl, $this->oauth2Plugin); | |
| } else { | |
| return new Usergrid($orgName, $appName, $manifestPath, $version, $baseUrl); | |
| } | |
| } | |
| private function createOauth2Plugin() | |
| { | |
| $base_url = array_get($this->config, 'usergrid.url'); | |
| $client_id = array_get($this->config, 'usergrid.clientId'); | |
| $client_secret = array_get($this->config, 'usergrid.clientSecret'); | |
| $grant_type = array_get($this->config, 'usergrid.grant_type'); | |
| $auth_type = array_get($this->config, 'usergrid.auth_type'); | |
| $username = array_get($this->config, 'usergrid.username'); | |
| $password = array_get($this->config, 'usergrid.password'); | |
| $org_name = array_get($this->config, 'usergrid.orgName'); | |
| $app_name = array_get($this->config, 'usergrid.appName'); | |
| if ($auth_type == 'organization') { | |
| $url = $base_url . '/management/token'; | |
| } elseif ($auth_type == 'application') { | |
| $url = $base_url . '/' . $org_name . '/' . $app_name . '/token'; | |
| } | |
| $oauth2Client = new Client($url); | |
| if ($grant_type == 'client_credentials') { | |
| $config = [ | |
| 'client_id' => $client_id, | |
| 'client_secret' => $client_secret, | |
| ]; | |
| $grantType = new ClientCredentials($oauth2Client, $config); | |
| $refreshTokenGrantType = new RefreshToken($oauth2Client, $config); | |
| $this->oauth2Plugin = new Oauth2Plugin($grantType, $refreshTokenGrantType); | |
| } elseif ($grant_type == 'password') { | |
| $config = [ | |
| 'username' => $username, | |
| 'password' => $password, | |
| 'client_id' => $client_id, | |
| 'client_secret' => $client_secret | |
| ]; | |
| $grantType = new PasswordCredentials($oauth2Client, $config); | |
| $refreshTokenGrantType = new RefreshToken($oauth2Client, $config); | |
| $this->oauth2Plugin = new Oauth2Plugin($grantType, $refreshTokenGrantType); | |
| } | |
| } | |
| } |