- 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.
66 lines
2.2 KiB
PHP
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);
|
|
}
|
|
} |