public function __construct()
 {
     $oldInfoHeaders = ApiClient::getInfoHeadersData();
     if ($oldInfoHeaders) {
         $infoHeaders = InformationHeaders::Extend($oldInfoHeaders);
         $infoHeaders->setEnvironment('Symfony', Kernel::VERSION);
         $infoHeaders->setPackage('jwt-auth-bundle', self::SDK_VERSION);
         ApiClient::setInfoHeadersData($infoHeaders);
     }
 }
 /**
  * Bootstrap the application events.
  *
  * @return void
  */
 public function boot()
 {
     \Auth::provider('auth0', function ($app, array $config) {
         $userRepository = \App::make(\Auth0\Login\Contract\Auth0UserRepository::class);
         return new Auth0UserProvider($userRepository);
     });
     $this->publishes([__DIR__ . '/../../config/config.php' => config_path('laravel-auth0.php')]);
     $laravel = app();
     $oldInfoHeaders = ApiClient::getInfoHeadersData();
     if ($oldInfoHeaders) {
         $infoHeaders = InformationHeaders::Extend($oldInfoHeaders);
         $infoHeaders->setEnvironment('Laravel', $laravel::VERSION);
         $infoHeaders->setPackage('laravel-auth0', self::SDK_VERSION);
         ApiClient::setInfoHeadersData($infoHeaders);
     }
 }
示例#3
0
 /**
  * Exchanges the code from the URI parameters for an access token, id token and user info
  * @return Boolean Whether it exchanged the code or not correctly
  */
 private function exchangeCode()
 {
     if (!isset($_REQUEST['code'])) {
         return false;
     }
     $code = $_REQUEST['code'];
     $this->debugInfo("Code: " . $code);
     // Generate the url to the API that will give us the access token and id token
     $auth_url = $this->generateUrl('token');
     // Make the call
     $response = $this->oauth_client->getAccessToken($auth_url, "authorization_code", array("code" => $code, "redirect_uri" => $this->redirect_uri), array('Auth0-Client' => ApiClient::getInfoHeadersData()->build()));
     $auth0_response = $response['result'];
     if ($response['code'] !== 200) {
         throw new ApiException($auth0_response['error'] . ': ' . $auth0_response['error_description']);
     }
     $this->debugInfo(json_encode($auth0_response));
     $access_token = isset($auth0_response['access_token']) ? $auth0_response['access_token'] : false;
     $id_token = isset($auth0_response['id_token']) ? $auth0_response['id_token'] : false;
     if (!$access_token) {
         throw new ApiException('Invalid access_token - Retry login.');
     }
     if (!$id_token) {
         // id_token is not mandatory anymore. There is no need to force openid connect
         $this->debugInfo('Missing id_token after code exchange. Remember to ask for openid scope.');
     }
     // Set the access token in the oauth client for future calls to the Auth0 API
     $this->oauth_client->setAccessToken($access_token);
     $this->oauth_client->setAccessTokenType(Client::ACCESS_TOKEN_BEARER);
     // Set it and persist it, if needed
     $this->setAccessToken($access_token);
     $this->setIdToken($id_token);
     $userinfo_url = $this->generateUrl('user_info');
     $user = $this->oauth_client->fetch($userinfo_url);
     $this->setUser($user["result"]);
     return true;
 }