Files
Verde-Web/app/Http/Controllers/Api/V1/Auth/RefreshTokenController.php
admin dc297d4cd7 feat(backend): complete Module 1 auth (register/login/OTP/reset)
Closes Module 1: 9 auth endpoints under /api/v1/auth, OTP via SMS
(Semaphore + log + fake drivers), role middleware, role + admin seeders,
27 feature tests passing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 21:46:53 +08:00

35 lines
935 B
PHP

<?php
namespace App\Http\Controllers\Api\V1\Auth;
use App\Http\Controllers\Api\V1\ApiController;
use App\Http\Resources\UserResource;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Laravel\Sanctum\PersonalAccessToken;
class RefreshTokenController extends ApiController
{
public function __invoke(Request $request): JsonResponse
{
$user = $request->user();
$current = $user->currentAccessToken();
$deviceName = $current instanceof PersonalAccessToken
? $current->name
: ($request->userAgent() ?? 'unknown');
if ($current instanceof PersonalAccessToken) {
$current->delete();
}
$token = $user->createToken($deviceName);
return $this->ok([
'user' => new UserResource($user),
'token' => $token->plainTextToken,
'token_type' => 'Bearer',
], 'Token refreshed');
}
}