feat: #10000 菜单展示修改

This commit is contained in:
赵世界 2023-04-06 02:32:01 +08:00
parent c976ca77d4
commit c8d979c67a

View File

@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
use App\Models\Log as LogModel; use App\Models\Log as LogModel;
use App\Models\Menu; use App\Models\Menu;
use App\Http\Resources\MenusResource; use App\Http\Resources\MenusResource;
use App\Utils\ArrayUtils;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
@ -25,11 +26,29 @@ class MenusController extends Controller
public function index(Request $request) public function index(Request $request)
{ {
$permissions = $request->user()->getPermissionsViaRoles()->toArray(); $permissions = $request->user()->getPermissionsViaRoles()->toArray();
$permissions = array_column($permissions, 'name'); $names = array_column($permissions, 'name');
$routes = include(resource_path('lang/zh-CN/permission.php'));
$routesIndexWithId = [];
foreach ($routes as $code => $route) {
$route['code'] = $code;
$routesIndexWithId[$route['id']] = $route;
}
$permissionCodes = $names;
foreach ($routes as $code => $route) {
if (empty($route['parent_id']) || !in_array($code, $names, true)) {
continue;
}
$parent = $routesIndexWithId[$route['parent_id']];
$permissionCodes[] = $parent['code'];
if ($parent['parent_id']) {
$permissionCodes[] = $routesIndexWithId[$parent['parent_id']]['code'];
}
}
$permissionCodes = array_unique($permissionCodes);
$menus = Menu::query()->orderBy('parent_id')->orderBy('seq')->get()->toArray(); $menus = Menu::query()->orderBy('parent_id')->orderBy('seq')->get()->toArray();
$hasPermissionMenus = []; $hasPermissionMenus = [];
foreach ($menus as $menu) { foreach ($menus as $menu) {
if (in_array($menu['code'], $permissions, true)) { if (in_array($menu['code'], $permissionCodes, true)) {
$hasPermissionMenus[] = $menu; $hasPermissionMenus[] = $menu;
} }
} }