Laravel Spark 1.0 (Laravel 5.2) でアプリケーションを作成しています。エージェント (api) 認証用のカスタム ミドルウェアを作成しました。これはコードです:
<?php
namespace App\Http\Middleware;
use App\Agent;
use Closure;
use Illuminate\Http\Request;
class AgentAuth
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if( isset($request->token) && !empty($request->token) )
{
$agent = Agent::where('token', '=', $request->token)->first();
if( $agent != NULL )
{
$team = $agent->Team()->first();
$user = $team->User()->first();
$request->merge(['team' => $team ]);
$request->merge(['user' => $user ]);
return $next($request);
}
else {
return response('Unauthorized 2.', 401);
}
}
else {
return response('Unauthorized 1.', 401);
}
}
}
デフォルトの laravel 認証では、ユーザー オブジェクトがリクエストに挿入されます (laravel ドキュメントを参照): https://laravel.com/docs/5.2/authentication#retrifying-the-authenticated-user
したがって、次を使用してユーザーを取得できます。
$request->user();
Spark は明らかにこのメソッドを使用して、ユーザーのサブスクリプションが有効かどうかを確認します (laravel\spark\src\Http\Middleware\VerifyUserIsSubscribe):
if ($this->subscribed($request->user(), $subscription, $plan, func_num_args() === 2)) {
return $next($request);
}
私のミドルウェアでは、次を使用してユーザーを取得できますが$request->user;
、laravelのデフォルトでは取得できないため、機能していません$request->user();
ユーザーオブジェクトをリクエストに挿入するにはどうすればよいですか?
前もって感謝します
編集:
サービスプロバイダーの Laravel (Illuminate\Auth\AuthServiceProvider@registerRequestRebindHandler)
このコードを使用して、オブジェクト ユーザーをリクエストにバインドします。
/**
* Register a resolver for the authenticated user.
*
* @return void
*/
protected function registerRequestRebindHandler()
{
$this->app->rebinding('request', function ($app, $request) {
$request->setUserResolver(function ($guard = null) use ($app) {
return call_user_func($app['auth']->userResolver(), $guard);
});
});
}
このコードを適切な修正を加えてミドルウェアに挿入しようとしましたが、それを機能させる方法がわかりません。