feat: implement JWT-based authentication system with repository, service, and middleware layers

This commit is contained in:
2026-09-09 20:02:55 -03:00
parent f6d7d42f10
commit 14b85d28a1
11 changed files with 975 additions and 2 deletions
+43
View File
@@ -0,0 +1,43 @@
<?php
namespace WorkbloomERP\Middleware;
use Throwable;
use KrothiumAPI\Utils\HttpUtil;
use WorkbloomERP\Security\JwtService;
use WorkbloomERP\Security\AuthContext;
class AuthMiddleware {
private JwtService $jwtService;
public function __construct(?JwtService $jwtService = null) {
$this->jwtService = $jwtService ?? new JwtService();
}
/**
* Executa a validação de autenticação Bearer Token.
* Retorna true em caso de sucesso ou array estruturado de bloqueio (401).
*/
public function handle(): array|bool {
$token = HttpUtil::getBearerToken();
if (empty($token)) {
return [
'block' => true,
'response_code' => 401,
'message' => 'Token de autenticação não fornecido.',
];
}
try {
$payload = $this->jwtService->validateToken($token);
AuthContext::setUser($payload);
return true;
} catch (Throwable) {
return [
'block' => true,
'response_code' => 401,
'message' => 'Token inválido ou expirado.',
];
}
}
}