|
|
@@ -0,0 +1,156 @@
|
|
|
+<?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());
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|