| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- <?php
- declare (strict_types=1);
- namespace app\controller;
- use app\BaseController;
- use app\service\PermissionService;
- use think\facade\Request;
- class Permission extends BaseController
- {
- /**
- * 获取所有权限配置
- */
- public function list()
- {
- $loginInfo = checkUserLogin();
- if (!$loginInfo) {
- return json_error([], '请先登录');
- }
-
- if (!checkPermission($loginInfo, 'Permission', 'list')) {
- return json_error([], '没有查看权限配置的权限');
- }
-
- try {
- $permissions = PermissionService::getAllPermissions();
- $tree = PermissionService::formatPermissionsToTree();
-
- return json_success([
- 'permissions' => $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());
- }
- }
- }
|