初始化本地仓库
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace app\api\event;
|
||||
|
||||
use Webman\Event\Event;
|
||||
|
||||
/**
|
||||
* 会员用户信息获取事件
|
||||
*
|
||||
* 当获取用户信息时触发,允许监听器动态添加权限、自定义字段等
|
||||
*/
|
||||
class MemberInfoFetchedEvent
|
||||
{
|
||||
/**
|
||||
* 会员ID
|
||||
*/
|
||||
public int $memberId;
|
||||
|
||||
/**
|
||||
* 用户数据(允许监听器修改)
|
||||
*/
|
||||
public array $userData = [];
|
||||
|
||||
/**
|
||||
* 权限数组(允许监听器追加)
|
||||
*/
|
||||
public array $permissions = [];
|
||||
|
||||
/**
|
||||
* 额外数据(允许插件等追加自定义字段)
|
||||
*/
|
||||
public array $extra = [];
|
||||
|
||||
/**
|
||||
* 构造函数
|
||||
*/
|
||||
public function __construct(int $memberId, array $userData = [], array $permissions = [], array $extra = [])
|
||||
{
|
||||
$this->memberId = $memberId;
|
||||
$this->userData = $userData;
|
||||
$this->permissions = $permissions;
|
||||
$this->extra = $extra;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户数据
|
||||
*/
|
||||
public function getUserData(): array
|
||||
{
|
||||
return $this->userData;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取权限数组
|
||||
*/
|
||||
public function getPermissions(): array
|
||||
{
|
||||
return $this->permissions;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取额外数据
|
||||
*/
|
||||
public function getExtra(): array
|
||||
{
|
||||
return $this->extra;
|
||||
}
|
||||
|
||||
/**
|
||||
* 触发事件
|
||||
*/
|
||||
public function dispatch(): void
|
||||
{
|
||||
Event::emit('member.info.fetched', $this);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加权限
|
||||
*/
|
||||
public function addPermission(string $permission): void
|
||||
{
|
||||
if (!in_array($permission, $this->permissions)) {
|
||||
$this->permissions[] = $permission;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量添加权限
|
||||
*/
|
||||
public function addPermissions(array $permissions): void
|
||||
{
|
||||
foreach ($permissions as $permission) {
|
||||
$this->addPermission($permission);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加额外字段
|
||||
*/
|
||||
public function addExtra(string $key, mixed $value): void
|
||||
{
|
||||
$this->extra[$key] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加用户数据字段
|
||||
*/
|
||||
public function addUserData(string $key, mixed $value): void
|
||||
{
|
||||
$this->userData[$key] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查是否有某个权限
|
||||
*/
|
||||
public function hasPermission(string $permission): bool
|
||||
{
|
||||
return in_array($permission, $this->permissions);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user