122 lines
2.3 KiB
PHP
122 lines
2.3 KiB
PHP
<?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);
|
||
|
|
}
|
||
|
|
}
|