cms-frontend/app/Http/Controllers/Auth/LoginController.php

70 lines
2.5 KiB
PHP

<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use GuzzleHttp\Client;
use Illuminate\Http\Request;
use GuzzleHttp\Exception\RequestException;
class LoginController extends Controller
{
public function login(Request $request)
{
$username = $request->input('username');
$password = $request->input('password');
$client = new Client([
'base_uri' => env('API_URL', 'http://localhost:8080'),
'timeout' => 5.0,
]);
try {
// Step 1: Validate username
$usernameResponse = $client->request('POST', '/api/cms/login_username', [
'json' => ['username' => $username]
]);
$usernameData = json_decode($usernameResponse->getBody()->getContents(), true);
if ($usernameData['code'] !== 200 || $usernameData['message'] !== 'Success') {
return response()->json([
'success' => false,
'message' => $usernameData['message'] ?? 'Invalid username'
], 401);
}
// Step 2: Validate password
$passwordResponse = $client->request('POST', '/api/cms/login_password', [
'json' => ['username' => $username, 'password' => $password]
]);
$passwordData = json_decode($passwordResponse->getBody()->getContents(), true);
if ($passwordData['code'] !== 200 || $passwordData['message'] !== 'Success') {
return response()->json([
'success' => false,
'message' => $passwordData['message'] ?? 'Invalid password'
], 401);
}
// Success: Return token to frontend
return response()->json([
'success' => true,
'token' => $passwordData['data']['token'] ?? null,
'message' => 'Login successful! Redirecting...'
]);
} catch (RequestException $e) {
\Log::error('Guzzle error: ' . $e->getMessage());
return response()->json([
'success' => false,
'message' => $e->getMessage() ?: 'Login failed. Please try again.'
], 500);
} catch (\Exception $e) {
\Log::error('Unexpected error: ' . $e->getMessage());
return response()->json([
'success' => false,
'message' => 'An unexpected error occurred. Please try again.'
], 500);
}
}
}