Laravel-based OAuth/IAM service with Passport, Vue 3 frontend, and Docker Compose setup for local and production deployment. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
37 lines
934 B
PHP
37 lines
934 B
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\OAuth;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
|
|
class AuthorizedAppController extends Controller
|
|
{
|
|
/**
|
|
* List third-party apps (non first-party clients) the user has granted access to.
|
|
*/
|
|
public function index(Request $request)
|
|
{
|
|
$tokens = $request->user()->tokens()
|
|
->where('revoked', false)
|
|
->with('client')
|
|
->get()
|
|
->reject(fn ($token) => $token->client->revoked || $token->client->hasGrantType('personal_access'))
|
|
->values();
|
|
|
|
return response()->json($tokens);
|
|
}
|
|
|
|
public function destroy(Request $request, string $tokenId)
|
|
{
|
|
$token = $request->user()->tokens()->where('id', $tokenId)->first();
|
|
|
|
abort_unless($token, 404);
|
|
|
|
$token->revoke();
|
|
$token->refreshToken?->revoke();
|
|
|
|
return response()->noContent();
|
|
}
|
|
}
|