Files
zyt/server/app/adminapi/service/CoreAccountPermissionPolicy.php
2026-11-06 13:37:12 +08:00

29 lines
1.6 KiB
PHP
Executable File

<?php
declare(strict_types=1);
namespace app\adminapi\service;
/** 核心账号管理接口独立于可编辑菜单的URI登记,删除菜单也不能变成免鉴权接口。 */
final class CoreAccountPermissionPolicy
{
/** null=非核心接口;[]为已登录账号自己的资料或导航接口;其余为允许的原权限别名。 */
public static function aliases(string $uri): ?array
{
[$controller, $action] = array_pad(explode('/', strtolower($uri), 2), 2, '');
if (!in_array($controller, ['auth.admin', 'auth.role', 'auth.menu', 'dept.dept'], true)) { return null; }
if (($controller === 'auth.admin' && in_array($action, ['myself', 'editself', 'bindworkwechat', 'unbindworkwechat'], true))
|| ($controller === 'auth.menu' && $action === 'route')) { return []; }
$aliases = [$uri];
if ($action === 'detail') { $aliases = array_merge($aliases, [$controller . '/lists', $controller . '/edit']); }
if ($action === 'all' || ($controller === 'dept.dept' && $action === 'leaderdept')) {
$aliases = array_merge($aliases, [$controller . '/lists', $controller . '/add', $controller . '/edit']);
if (in_array($controller, ['auth.role', 'dept.dept'], true)) {
$aliases = array_merge($aliases, ['auth.admin/add', 'auth.admin/edit']);
}
if ($controller === 'auth.menu') { $aliases = array_merge($aliases, ['auth.role/add', 'auth.role/edit']); }
}
if ($controller === 'auth.menu' && $action === 'updatestatus') { $aliases[] = 'auth.menu/edit'; }
return $aliases;
}
}