Files
wh-api/app/Context/UserContext.php
ykxiao 8a3ab17b25
Some checks failed
Build Docker / build (push) Has been cancelled
增加基础配置
2025-07-12 11:59:33 +08:00

86 lines
1.9 KiB
PHP

<?php
/**
* Author: ykxiao
* Date: 2025/6/3
* Time: 下午10:38
* Description:
*
* (c) ykxiao <yk_9001@hotmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
declare(strict_types=1);
namespace App\Context;
use App\Repository\Company\FirstCompanyRepository;
use Exception;
use Hyperf\Context\Context;
use function Hyperf\Support\make;
class UserContext
{
private const string USER_KEY = 'user';
private const string TOKEN_KEY = 'token';
/**
* 设置当前用户信息到 Context
*
* @param array|string|int $user 用户信息数组
* @throws Exception
*/
public static function setCurrentUser(array|string|int $user): void
{
$companyRepository = make(FirstCompanyRepository::class);
if (!empty($companyInfo = $companyRepository->getCompanyByFullName($user['full_name'], false))) {
$user['company'] = $companyInfo;
}
Context::set(self::USER_KEY, $user);
}
/**
* 从 Context 获取当前用户信息
*
* @return array|null 返回用户信息数组或 null 如果未找到
*/
public static function getCurrentUser(): ?array
{
return Context::get(self::USER_KEY);
}
public static function hasCurrentUser(): bool
{
return Context::has(self::USER_KEY);
}
/**
* 设置当前用户令牌
* @param string $token
* @return void
*/
public static function setCurrentToken(string $token): void
{
Context::set(self::TOKEN_KEY, $token);
}
/**
* 从 Context 获取当前用户令牌
* @return string|null
*/
public static function getCurrentToken(): ?string
{
return Context::get(self::TOKEN_KEY);
}
/**
* 清除当前用户信息
*/
public static function clearCurrentUser(): void
{
Context::set(self::USER_KEY, null);
}
}