taravel/app/Http/Controllers/Api/Frontend/LoginController.php
2024-11-13 16:26:27 +08:00

45 lines
1.2 KiB
PHP

<?php
namespace App\Http\Controllers\Api\Frontend;
use App\Http\Controllers\Controller;
use App\Http\Requests\LoginRequest;
use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Hash;
class LoginController extends Controller
{
public function login(LoginRequest $request): JsonResponse
{
$user = User::where('email', $request->email)->first();
if (!$user || !Hash::check($request->password, $user->password)) {
return response()->json([
'error' => '無效的憑證或帳戶未激活。'
], 401);
}
if ($user->status !== User::STATUS_ACTIVE) {
return response()->json([
'error' => '帳戶尚未激活。'
], 401);
}
$token = $user->createToken('auth_token')->plainTextToken;
return response()->json([
'token' => $token,
'expires_in' => config('sanctum.expiration') * 60 // 轉換為秒
]);
}
public function logout(): JsonResponse
{
auth()->user()->currentAccessToken()->delete();
return response()->json([
'message' => '已成功登出。'
]);
}
}