/** * Register the authorization server. * * @return void */ protected function registerAuthorizationServer() { $this->app['microweber.oauth.authorization'] = $this->app->share(function ($app) { $server = new Authorization($app['microweber.oauth.storage'], $app['request']); // Set the access token and refresh token expirations on the server. $server->setAccessTokenExpiration($app['config']['oauth.expirations.access']); $server->setRefreshTokenExpiration($app['config']['oauth.expirations.refresh']); // Spin through each of the grants listed in the configuration file and // build an array of grants since some grants can be given options. foreach ($app['config']['oauth.grants'] as $key => $value) { if (!is_string($key)) { list($key, $value) = [$value, []]; } elseif (!is_array($value)) { $value = [$value]; } $grants[$key] = $value; } // We'll create an array of mappings to each of the grants class so that // users can use the shorthand name of the grant in the configuration // file. $mappings = ['password' => 'Microweber\\OAuth2\\Grant\\Password', 'client' => 'Microweber\\OAuth2\\Grant\\ClientCredentials', 'authorization' => 'Microweber\\OAuth2\\Grant\\AuthorizationCode', 'implicit' => 'Microweber\\OAuth2\\Grant\\Implicit', 'refresh' => 'Microweber\\OAuth2\\Grant\\RefreshToken']; // Spin through each of the grants and if it isn't set in the mappings // then we'll error out. Otherwise we'll get an instance of the // grant and register it on the server. foreach ($grants as $grant => $options) { if (!isset($mappings[$grant])) { throw new RuntimeException("Supplied grant [{$grant}] is invalid."); } $instance = new $mappings[$grant](); if ($grant == 'password') { $instance->setAuthenticationCallback(array_pop($options)); } elseif ($grant == 'authorization' and !empty($options)) { $instance->setAuthorizedCallback(array_pop($options)); } $server->registerGrant($instance); } return $server; }); }
public function testMakeRedirectUriWithFragment() { $authorization = new Authorization($this->getStorageMock(), Request::create('test', 'GET', ['redirect_uri' => 'foo.com/bar', 'response_type' => 'token'])); $this->assertEquals('foo.com/bar#access_token=12345&scope=foo', $authorization->makeRedirectUri(['access_token' => '12345', 'scope' => 'foo'])); }