70 lines
2.5 KiB
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);
|
|
}
|
|
}
|
|
} |