Files
voltcerto/app/Http/Controllers/Auth/ApiLoginController.php
Luis Medon e488ae3342 Add feature tests, unit tests, and configuration for Laravel application
- Created ExampleTest and RoutesTest for basic application response and route testing.
- Implemented IsolatedDatabaseTestCase for isolated database testing.
- Added unit tests for various models and services including Contract, CPE, and LeadDetail.
- Developed request validation tests for CreateClientRequest, UpdateClientRequest, and ContractRequest.
- Introduced Vite configuration for asset management in the Laravel application.
2026-10-29 11:30:06 +00:00

78 lines
2.1 KiB
PHP

<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Services\AuthService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Symfony\Component\HttpKernel\Exception\HttpException;
class ApiLoginController extends Controller
{
public function __construct(private AuthService $authentication)
{
}
/**
* @author Luis Medon <luismedon@gmail.com>
* @since 2025/11
* @version 2025/11
*/
public function showLoginForm()
{
// Prevent proxies/CDN from caching a page with a CSRF token tied to another visitor's session
return response()->view('auth.login')
->header('Cache-Control', 'no-store, no-cache, must-revalidate, private')
->header('Pragma', 'no-cache');
}
/**
* @author Luis Medon <luismedon@gmail.com>
* @since 2025/11
* @version 2025/11
*/
public function login(Request $request)
{
$request->validate([
'email' => 'required|email',
'password' => 'required',
]);
try {
$user = $this->authentication->authenticate($request->only('email', 'password'));
} catch (HttpException $exception) {
return back()->withInput($request->only('email'))->with('error', 'Credenciais invalidas.');
}
$data = $this->authentication->issueToken($user);
Auth::login($user);
$request->session()->regenerate();
session([
'api_token' => $data['token'],
]);
return redirect()->route('home');
}
/**
* @author Luis Medon <luismedon@gmail.com>
* @since 2025/11
* @version 2025/11
*/
public function logout(Request $request)
{
if ($request->user() && session('api_token')) {
$this->authentication->revoke($this->authentication->sessionToken($request->user(), session('api_token')));
}
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect()->route('login');
}
}