mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-14 12:30:49 +08:00
fix oauth user info response
This commit is contained in:
@@ -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'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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']);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user