Files
voltcerto/app/Http/Controllers/Api/AuthController.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

66 lines
2.2 KiB
PHP

<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Services\AuthService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
use Laravel\Sanctum\PersonalAccessToken;
class AuthController extends Controller
{
public function __construct(private AuthService $authentication)
{
}
public function login(Request $request)
{
$credentials = $request->validate(['email' => 'required|email', 'password' => 'required|string']);
return response()->json($this->authentication->issueToken($this->authentication->authenticate($credentials)));
}
private function token(Request $request): PersonalAccessToken
{
$token = $request->user()->currentAccessToken();
abort_unless($token instanceof PersonalAccessToken, 401, 'Token necessario.');
return $token;
}
public function refresh(Request $request)
{
return response()->json($this->authentication->refresh($this->token($request)));
}
public function checkToken(Request $request)
{
return response()->json($this->authentication->check($this->token($request)));
}
public function logout(Request $request)
{
$this->authentication->revoke($this->token($request));
return response()->json(['message' => 'Logout realizado com sucesso', 'revoked' => true]);
}
public function user(Request $request)
{
return response()->json($request->user()->load('roles.permissions'));
}
public function sendResetLink(Request $request)
{
$credentials = $request->validate(['email' => 'required|email']);
$status = $this->authentication->sendResetLink($credentials);
return response()->json(['message' => __($status)], $status === Password::RESET_LINK_SENT ? 200 : 422);
}
public function resetPassword(Request $request)
{
$credentials = $request->validate([
'token' => 'required|string', 'email' => 'required|email', 'password' => 'required|string|min:3|confirmed',
]);
$status = $this->authentication->resetPassword($credentials);
return response()->json(['message' => __($status)], $status === Password::PASSWORD_RESET ? 200 : 422);
}
}