45 lines
1.2 KiB
PHP
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' => '已成功登出。'
|
|
]);
|
|
}
|
|
}
|