2017-10-10 94 views
0

我正在创建一个使用API​​调用的包,这需要使用auth中间件来保护。我正在寻找使用Laravel Passport来实现这一点。Laravel 5:使用默认值覆盖/组合包配置

我正在开发这个作为一个包,ergo,我想尽可能保持一切,尽可能从主要Laravel安装unobtrusive。

我面临的问题是设置相关的配置文件。也就是说,在config/auth.php我需要设置

'guards' => [ 
    'web' => [ 
     'driver' => 'session', 
     'provider' => 'users', 
    ], 

    'api' => [ 
     'driver' => 'passport', // change "token" -> "passport" 
     'provider' => 'users', 
    ], 
], 

现在,我怎么能的方式,将只适用于我的包做到这一点?

谢谢。

回答

0

如果您希望您的软件包使用不同的配置集,而不受安装可能定义的内容的限制,您可以在拨打电话之前暂时更改配置。在这种情况下,我包起来的可重复使用的类方法:

use Config; 

class ApiCalls { 

    public static function usingPackageConfig(callable $callback) 
    { 
     // Fetch original config. 
     $originalDriver = Config::get('auth.api.driver'); 

     // Set custom config. 
     Config::set('auth.api.driver', 'passport'); 

     // Execute callback with custom config. 
     $result = $callback(); 

     // Reset config. 
     Config::set('auth.api.driver', $originalDriver); 

     return $result; 
    } 

} 

然后,您可以这样调用它:

ApiCalls::usingPackageConfig(function() { 
    // Make your Passport call here and it will use your package's configuration. 
});