- 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.
78 lines
2.1 KiB
PHP
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');
|
|
}
|
|
}
|