$permissions, 'tree' => $tree ], '获取权限配置成功'); } catch (\Exception $e) { return json_error([], '获取权限配置失败:' . $e->getMessage()); } } /** * 获取权限组配置 */ public function getGroups() { $loginInfo = checkUserLogin(); if (!$loginInfo) { return json_error([], '请先登录'); } if (!checkPermission($loginInfo, 'Permission', 'list')) { return json_error([], '没有查看权限配置的权限'); } try { $groups = PermissionService::getPermissionGroups(); return json_success($groups, '获取权限组配置成功'); } catch (\Exception $e) { return json_error([], '获取权限组配置失败:' . $e->getMessage()); } } /** * 根据权限组获取权限 */ public function getPermissionsByGroup() { $loginInfo = checkUserLogin(); if (!$loginInfo) { return json_error([], '请先登录'); } if (!checkPermission($loginInfo, 'Permission', 'list')) { return json_error([], '没有查看权限配置的权限'); } $groupName = Request::get('group', '', 'trim'); if (empty($groupName)) { return json_error([], '权限组名称不能为空'); } try { $permissions = PermissionService::getPermissionsByGroup($groupName); $formatted = PermissionService::formatUserPermissions($permissions); return json_success([ 'permissions' => $permissions, 'formatted' => $formatted ], '获取权限组权限成功'); } catch (\Exception $e) { return json_error([], '获取权限组权限失败:' . $e->getMessage()); } } /** * 验证权限格式 */ public function validatePermissions() { $loginInfo = checkUserLogin(); if (!$loginInfo) { return json_error([], '请先登录'); } if (!checkPermission($loginInfo, 'Permission', 'assign')) { return json_error([], '没有分配权限的权限'); } $permissions = Request::post('permissions', []); // 如果是前端格式的权限,先转换 if (isset($permissions[0]) && is_string($permissions[0])) { $permissions = PermissionService::parsePermissionsFromFrontend($permissions); } try { $isValid = PermissionService::validatePermissions($permissions); return json_success([ 'valid' => $isValid, 'permissions' => $permissions ], $isValid ? '权限格式正确' : '权限格式错误'); } catch (\Exception $e) { return json_error([], '验证权限格式失败:' . $e->getMessage()); } } /** * 格式化权限(前端格式转后端格式) */ public function formatPermissions() { $loginInfo = checkUserLogin(); if (!$loginInfo) { return json_error([], '请先登录'); } $permissions = Request::post('permissions', []); $format = Request::post('format', 'backend'); // frontend 或 backend try { if ($format === 'frontend') { // 后端格式转前端格式 $formatted = PermissionService::formatUserPermissions($permissions); } else { // 前端格式转后端格式 $formatted = PermissionService::parsePermissionsFromFrontend($permissions); } return json_success([ 'original' => $permissions, 'formatted' => $formatted ], '权限格式转换成功'); } catch (\Exception $e) { return json_error([], '权限格式转换失败:' . $e->getMessage()); } } }