fix oauth user info response

This commit is contained in:
xiaomlove
2024-04-06 03:13:23 +08:00
parent ff1b88a25f
commit 8c3b05bf4d
2 changed files with 28 additions and 19 deletions

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Http\Resources\UserResource; use App\Http\Resources\UserResource;
use App\Models\OauthClient;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str; use Illuminate\Support\Str;
@@ -10,31 +11,35 @@ use Laravel\Passport\Client;
class OauthController extends Controller class OauthController extends Controller
{ {
private int $clientId = 3; private int $clientId = 8;
private string $baseUri; 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(); // $request->session()->put('state', $state = Str::random(40));
}
public function Redirect(Request $request)
{
$request->session()->put('state', $state = Str::random(40));
$query = http_build_query([ $query = http_build_query([
'client_id' => $this->clientId, 'client_id' => $this->client->id,
'redirect_uri' => $this->baseUri."/oauth/callback", 'redirect_uri' => $this->client->redirect,
'response_type' => 'code', 'response_type' => 'code',
'scope' => '', 'scope' => '',
'state' => $state, // 'state' => $state,
'prompt' => 'none', // "none", "consent", or "login" // 'prompt' => 'none', // "none", "consent", or "login"
]); ]);
return redirect($this->baseUri.'/oauth/authorize?'.$query); return redirect($this->baseUri.'/oauth/authorize?'.$query);
} }
public function Callback(Request $request) public function callback(Request $request)
{ {
// $state = $request->session()->pull('state'); // $state = $request->session()->pull('state');
// //
@@ -43,23 +48,27 @@ class OauthController extends Controller
// \InvalidArgumentException::class // \InvalidArgumentException::class
// ); // );
$clientInfo = Client::query()->findOrFail($this->clientId);
$response = Http::asForm()->post($this->baseUri.'/oauth/token', [ $response = Http::asForm()->post($this->baseUri.'/oauth/token', [
'grant_type' => 'authorization_code', 'grant_type' => 'authorization_code',
'client_id' => $this->clientId, 'client_id' => $this->client->id,
'client_secret' => $clientInfo->secret, 'client_secret' => $this->client->secret,
'redirect_uri' => $this->baseUri.'/oauth/callback', 'redirect_uri' => $this->client->redirect,
'code' => $request->code, 'code' => $request->code,
]); ]);
return $response->json(); return $response->json();
} }
public function debug(Request $request)
{
dd($request->all());
}
public function userInfo(): array public function userInfo(): array
{ {
$user = Auth::user(); $user = Auth::user();
$resource = new UserResource($user); $resource = new UserResource($user);
return $resource->response()->getData(true); return $resource->response()->getData(true)['data'];
} }
} }

View File

@@ -34,6 +34,6 @@ Route::get('test', [\App\Http\Controllers\ToolController::class, 'test'])->middl
Route::group(['prefix' => 'oauth'], function () { Route::group(['prefix' => 'oauth'], function () {
Route::get("user-info", [\App\Http\Controllers\OauthController::class, 'userInfo'])->name("oauth.user_info")->middleware('auth:api'); 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('redirect', [\App\Http\Controllers\OauthController::class, 'redirect']);
// Route::get('callback', [\App\Http\Controllers\OauthController::class, 'Callback']); // Route::get('callback', [\App\Http\Controllers\OauthController::class, 'callback']);
}); });