lundi 6 février 2017

Get overridden config with Middleware from Service Provider

I have a problem when binding Class in service container. this is my route.

Route::group(['middleware' => 'partner', 'domain' => '{partner}.example.com'], function() {
    $firebaseClient = app('App\Services\FirebaseClient');
    $firebaseClient->pushData('users.json', ['name' => 'Risal Ganteng']);
});

this is my custom service provider for binding FirebaseClient.

class FirebaseClientServiceProvider extends ServiceProvider 
{

    /**
    * Register FirebaseClient class with the Laravel IoC container.
    *
    * @return void
    */
    public function register()
    {
        $this->app->bind(\App\Services\FirebaseClient::class, function($app)
        {
            $config = $app['config'];

            $options = [
                'api_version' => $config['services.firebase.api_version']
            ];

            return new \App\Services\FirebaseClient($config['services.firebase.database_url'], $options);
        });
    }
}

and this is my custom route middleware to overide config services.firebase based on subdomain.

class PartnerMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $partner_id = $request->route('partner');

        $partner = Partner::findOrFail($partner_id);

        // set config
        config([
            'services.firebase.api_key' => $partner->firebase_api_key,
            'services.firebase.auth_domain' => $partner->firebase_auth_domain,
            'services.firebase.database_url' => $partner->firebase_database_url,
        ]);

        return $next($request);
    }
}

The problem is, when I try to get config in FirebaseServiceProvider the config services.firebase.* value is null because ServiceProvider registered before Route Middleware.

and how to resolve this?

Thank you.



from Newest questions tagged laravel-5 - Stack Overflow http://ift.tt/2ligpih
via IFTTT

Aucun commentaire:

Enregistrer un commentaire