update backend p20.1 p20.2

This commit is contained in:
2026-04-16 13:16:43 +08:00
parent a870793704
commit ff9951bb43
11 changed files with 440 additions and 21 deletions
@@ -12,10 +12,12 @@ declare(strict_types=1);
namespace App\Controller;
use App\Model\User;
use Hyperf\Di\Annotation\Inject;
use Hyperf\HttpServer\Contract\RequestInterface;
use Hyperf\HttpServer\Contract\ResponseInterface;
use Psr\Container\ContainerInterface;
use Qbhy\HyperfAuth\AuthManager;
abstract class AbstractController
{
@@ -27,4 +29,27 @@ abstract class AbstractController
#[Inject]
protected ResponseInterface $response;
/**
* 统一获取当前认证用户
*
* 优先从 request attribute 获取(JWT/API Key 中间件统一设置),
* 兜底通过 JWT guard 获取(过渡期兼容)。
*/
protected function getAuthUser(): ?User
{
$user = $this->request->getAttribute('auth_user');
if ($user instanceof User) {
return $user;
}
// 兜底:直接通过 JWT guard 获取
try {
$auth = $this->container->get(AuthManager::class);
$user = $auth->guard('jwt')->user();
return $user instanceof User ? $user : null;
} catch (\Throwable) {
return null;
}
}
}