From 8c3b05bf4daf06e79bfe5d9f58cb71170d3e2a79 Mon Sep 17 00:00:00 2001 From: xiaomlove <353856593@qq.com> Date: Sat, 6 Apr 2024 03:13:23 +0800 Subject: [PATCH] fix oauth user info response --- app/Http/Controllers/OauthController.php | 43 ++++++++++++++---------- routes/web.php | 4 +-- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/app/Http/Controllers/OauthController.php b/app/Http/Controllers/OauthController.php index b44c560f..26c72433 100644 --- a/app/Http/Controllers/OauthController.php +++ b/app/Http/Controllers/OauthController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; use App\Http\Resources\UserResource; +use App\Models\OauthClient; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Str; @@ -10,31 +11,35 @@ use Laravel\Passport\Client; class OauthController extends Controller { - private int $clientId = 3; + private int $clientId = 8; private string $baseUri; - public function __construct() + private ?OauthClient $client = null; + +// public function __construct() +// { +// $this->baseUri = getSchemeAndHttpHost(); +// +// $this->client = OauthClient::query()->find($this->clientId); +// } + public function redirect(Request $request) { - $this->baseUri = getSchemeAndHttpHost(); - } - public function Redirect(Request $request) - { - $request->session()->put('state', $state = Str::random(40)); +// $request->session()->put('state', $state = Str::random(40)); $query = http_build_query([ - 'client_id' => $this->clientId, - 'redirect_uri' => $this->baseUri."/oauth/callback", + 'client_id' => $this->client->id, + 'redirect_uri' => $this->client->redirect, 'response_type' => 'code', 'scope' => '', - 'state' => $state, - 'prompt' => 'none', // "none", "consent", or "login" +// 'state' => $state, +// 'prompt' => 'none', // "none", "consent", or "login" ]); return redirect($this->baseUri.'/oauth/authorize?'.$query); } - public function Callback(Request $request) + public function callback(Request $request) { // $state = $request->session()->pull('state'); // @@ -43,23 +48,27 @@ class OauthController extends Controller // \InvalidArgumentException::class // ); - $clientInfo = Client::query()->findOrFail($this->clientId); $response = Http::asForm()->post($this->baseUri.'/oauth/token', [ 'grant_type' => 'authorization_code', - 'client_id' => $this->clientId, - 'client_secret' => $clientInfo->secret, - 'redirect_uri' => $this->baseUri.'/oauth/callback', + 'client_id' => $this->client->id, + 'client_secret' => $this->client->secret, + 'redirect_uri' => $this->client->redirect, 'code' => $request->code, ]); return $response->json(); } + public function debug(Request $request) + { + dd($request->all()); + } + public function userInfo(): array { $user = Auth::user(); $resource = new UserResource($user); - return $resource->response()->getData(true); + return $resource->response()->getData(true)['data']; } } diff --git a/routes/web.php b/routes/web.php index f6d17512..4f7e4585 100644 --- a/routes/web.php +++ b/routes/web.php @@ -34,6 +34,6 @@ Route::get('test', [\App\Http\Controllers\ToolController::class, 'test'])->middl Route::group(['prefix' => 'oauth'], function () { Route::get("user-info", [\App\Http\Controllers\OauthController::class, 'userInfo'])->name("oauth.user_info")->middleware('auth:api'); -// Route::get('redirect', [\App\Http\Controllers\OauthController::class, 'Redirect']); -// Route::get('callback', [\App\Http\Controllers\OauthController::class, 'Callback']); +// Route::get('redirect', [\App\Http\Controllers\OauthController::class, 'redirect']); +// Route::get('callback', [\App\Http\Controllers\OauthController::class, 'callback']); });