Skip to content

Commit e889959

Browse files
committed
TDP-1887 Provide a default middleware to set the toggle key.
1 parent cc3c8d8 commit e889959

File tree

2 files changed

+39
-6
lines changed

2 files changed

+39
-6
lines changed

src/FeatureToggleClientProvider.php

+1-6
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,11 @@ public function register()
4444
*
4545
* @return void
4646
*/
47-
public function boot(?FeatureToggleClient $client = null, ?Request $request = null)
47+
public function boot()
4848
{
4949
$this->publishes([
5050
__DIR__.'/../config/feature-toggle.php' => config_path('feature-toggle.php'),
5151
]);
52-
53-
if ($client) {
54-
// The SplitIO SDK doesn't allow empty keys.
55-
$client->setKey(optional($request->user())->email ?? "__dummy_key__");
56-
}
5752
}
5853

5954
private static $splitIOFactory;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
namespace PartechGSS\Laravel\FeatureToggle\Middleware;
4+
5+
use Closure;
6+
use PartechGSS\Laravel\FeatureToggle\Contracts\FeatureToggleClient;
7+
8+
class SetFeatureToggleKeyFromUserEmail
9+
{
10+
private $featureToggleClient;
11+
12+
/**
13+
* Create a new middleware instance.
14+
*
15+
* @param ApiManager $auth
16+
* @return void
17+
*/
18+
public function __construct(FeatureToggleClient $featureToggleClient)
19+
{
20+
$this->featureToggleClient = $featureToggleClient;
21+
}
22+
23+
/**
24+
* Handle an incoming request. Sets the feature toggle client key to $request->user()->email
25+
* when found, and to "__no_user__" otherwise.
26+
*
27+
* @param \Illuminate\Http\Request $request
28+
* @param \Closure $next
29+
* @return mixed
30+
*/
31+
public function handle($request, Closure $next)
32+
{
33+
// After authentication, set the feature toggle key to the user's email.
34+
$this->featureToggleClient->setKey(optional($request->user())->email ?? "__no_user__");
35+
36+
return $next($request);
37+
}
38+
}

0 commit comments

Comments
 (0)