29 lines
1.6 KiB
PHP
Executable File
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;
|
|
}
|
|
}
|