40 lines
1.3 KiB
PHP
40 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\OAuth;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\OAuthAuthorizationEvent;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Validation\Rule;
|
|
|
|
class AuthorizationEventController extends Controller
|
|
{
|
|
/**
|
|
* Registra un paso del funnel de autorización OAuth (intento, aprobación
|
|
* o denegación) desde la pantalla de consentimiento (Authorize.vue).
|
|
* Es solo para analíticas: no participa en el flujo real de OAuth, que
|
|
* sigue resuelto enteramente por las rutas nativas de Passport.
|
|
*/
|
|
public function store(Request $request)
|
|
{
|
|
$data = $request->validate([
|
|
'client_id' => ['required', 'string', Rule::exists('oauth_clients', 'id')],
|
|
'outcome' => ['required', Rule::in(['attempted', 'approved', 'denied'])],
|
|
'scopes' => ['array'],
|
|
'scopes.*' => ['string'],
|
|
]);
|
|
|
|
OAuthAuthorizationEvent::create([
|
|
'user_id' => $request->user()->id,
|
|
'client_id' => $data['client_id'],
|
|
'outcome' => $data['outcome'],
|
|
'scopes' => $data['scopes'] ?? [],
|
|
'ip_address' => $request->ip(),
|
|
'user_agent' => $request->userAgent(),
|
|
'created_at' => now(),
|
|
]);
|
|
|
|
return response()->noContent();
|
|
}
|
|
}
|