refactor(用户组和权限): 权限显示

This commit is contained in:
shiziyuan9527 2021-05-14 18:33:11 +08:00 committed by 刘瑞斌
parent e320523eb7
commit 859c67cf98
14 changed files with 985 additions and 13 deletions

View File

@ -4,6 +4,7 @@ import io.metersphere.base.domain.Group;
import io.metersphere.commons.utils.Pager; import io.metersphere.commons.utils.Pager;
import io.metersphere.controller.request.group.EditGroupRequest; import io.metersphere.controller.request.group.EditGroupRequest;
import io.metersphere.dto.GroupDTO; import io.metersphere.dto.GroupDTO;
import io.metersphere.dto.GroupPermissionDTO;
import io.metersphere.service.GroupService; import io.metersphere.service.GroupService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -40,4 +41,9 @@ public class GroupController {
groupService.deleteGroup(id); groupService.deleteGroup(id);
} }
@GetMapping("/permission")
public GroupPermissionDTO getGroupResource() {
return groupService.getGroupResource();
}
} }

View File

@ -0,0 +1,12 @@
package io.metersphere.dto;
import lombok.Data;
import java.util.List;
@Data
public class GroupJson {
private List<GroupResource> resource;
private List<GroupPermission> permissions;
}

View File

@ -0,0 +1,10 @@
package io.metersphere.dto;
import lombok.Data;
@Data
public class GroupPermission {
private String id;
private String name;
private String resourceId;
}

View File

@ -0,0 +1,13 @@
package io.metersphere.dto;
import lombok.Data;
import java.util.List;
@Data
public class GroupPermissionDTO {
private List<GroupResourceDTO> system;
private List<GroupResourceDTO> organization;
private List<GroupResourceDTO> workspace;
private List<GroupResourceDTO> project;
}

View File

@ -0,0 +1,9 @@
package io.metersphere.dto;
import lombok.Data;
@Data
public class GroupResource {
private String id;
private String name;
}

View File

@ -0,0 +1,11 @@
package io.metersphere.dto;
import lombok.Data;
import java.util.List;
@Data
public class GroupResourceDTO {
private GroupResource resource;
private List<GroupPermission> permissions;
}

View File

@ -1,5 +1,7 @@
package io.metersphere.service; package io.metersphere.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.Page; import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import io.metersphere.base.domain.*; import io.metersphere.base.domain.*;
@ -13,18 +15,16 @@ import io.metersphere.commons.utils.PageUtils;
import io.metersphere.commons.utils.Pager; import io.metersphere.commons.utils.Pager;
import io.metersphere.commons.utils.SessionUtils; import io.metersphere.commons.utils.SessionUtils;
import io.metersphere.controller.request.group.EditGroupRequest; import io.metersphere.controller.request.group.EditGroupRequest;
import io.metersphere.dto.GroupDTO; import io.metersphere.dto.*;
import io.metersphere.dto.UserGroupDTO;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.io.IOException;
import java.util.Arrays; import java.io.InputStream;
import java.util.List; import java.util.*;
import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
@ -78,8 +78,43 @@ public class GroupService {
// todo use_group 关系 // todo use_group 关系
} }
public GroupPermissionDTO getGroupResource() {
GroupPermissionDTO dto = new GroupPermissionDTO();
InputStream permission = getClass().getResourceAsStream("/permission.json");
if (permission == null) {
throw new RuntimeException("读取文件失败");
} else {
GroupJson group = null;
try {
group = JSON.parseObject(permission, GroupJson.class);
List<GroupResource> resource = group.getResource();
List<GroupPermission> permissions = group.getPermissions();
dto.setSystem(getResourcePermission(resource, permissions, "SYSTEM"));
dto.setOrganization(getResourcePermission(resource, permissions, "ORGANIZATION"));
dto.setWorkspace(getResourcePermission(resource, permissions, "WORKSPACE"));
dto.setProject(getResourcePermission(resource, permissions, "PROJECT"));
} catch (IOException e) {
e.printStackTrace();
}
}
return dto;
}
private List<GroupResourceDTO> getResourcePermission(List<GroupResource> resource, List<GroupPermission> permissions, String type) {
List<GroupResourceDTO> dto = new ArrayList<>();
List<GroupResource> resources = resource.stream().filter(g -> g.getId().startsWith(type)).collect(Collectors.toList());
for (GroupResource r : resources) {
GroupResourceDTO resourceDTO = new GroupResourceDTO();
resourceDTO.setResource(r);
List<GroupPermission> collect = permissions
.stream()
.filter(p -> StringUtils.equals(r.getId(), p.getResourceId()))
.collect(Collectors.toList());
resourceDTO.setPermissions(collect);
dto.add(resourceDTO);
}
return dto;
}
private Pager<List<GroupDTO>> getGroups(List<String> groupTypeList, EditGroupRequest request) { private Pager<List<GroupDTO>> getGroups(List<String> groupTypeList, EditGroupRequest request) {
if (groupTypeList.contains(UserGroupType.SYSTEM)) { if (groupTypeList.contains(UserGroupType.SYSTEM)) {
@ -131,5 +166,4 @@ public class GroupService {
return PageUtils.setPageInfo(page, groups); return PageUtils.setPageInfo(page, groups);
} }
} }

View File

@ -0,0 +1,730 @@
{
"permissions": [
{
"id": "SYSTEM_USER:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_USER"
},
{
"id": "SYSTEM_USER:READ+CREATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_USER"
},
{
"id": "SYSTEM_USER:READ+IMPORT",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_USER"
},
{
"id": "SYSTEM_USER:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_USER"
}, {
"id": "SYSTEM_USER:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_USER"
},
{
"id": "SYSTEM_USER:READ+EDIT_PASSWORD",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_USER"
},
{
"id": "SYSTEM_ORGANIZATION:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_ORGANIZATION"
},
{
"id": "SYSTEM_ORGANIZATION:READ+CREATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_ORGANIZATION"
},
{
"id": "SYSTEM_ORGANIZATION:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_ORGANIZATION"
},
{
"id": "SYSTEM_ORGANIZATION:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_ORGANIZATION"
},
{
"id": "SYSTEM_WORKSPACE:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_WORKSPACE"
},
{
"id": "SYSTEM_WORKSPACE:READ+CREATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_WORKSPACE"
},
{
"id": "SYSTEM_WORKSPACE:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_WORKSPACE"
},
{
"id": "SYSTEM_WORKSPACE:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_WORKSPACE"
},
{
"id": "SYSTEM_GROUP:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_GROUP"
},
{
"id": "SYSTEM_GROUP:READ+CREATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_GROUP"
},
{
"id": "SYSTEM_GROUP:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_GROUP"
},
{
"id": "SYSTEM_GROUP:READ+SETTING_PERMISSION",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_GROUP"
},
{
"id": "SYSTEM_GROUP:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_GROUP"
},
{
"id": "SYSTEM_SETTING:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_SETTING"
},
{
"id": "SYSTEM_SETTING:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_SETTING"
},
{
"id": "SYSTEM_SETTING:READ+AUTH_MANAGE",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_SETTING"
},
{
"id": "SYSTEM_QUOTA:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_QUOTA"
},
{
"id": "SYSTEM_QUOTA:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_QUOTA"
},
{
"id": "SYSTEM_AUTH:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_AUTH"
},
{
"id": "SYSTEM_AUTH:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "SYSTEM_AUTH"
},
{
"id": "ORGANIZATION_USER:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "ORGANIZATION_USER"
},
{
"id": "ORGANIZATION_USER:READ+CREATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "ORGANIZATION_USER"
},
{
"id": "ORGANIZATION_USER:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "ORGANIZATION_USER"
},
{
"id": "ORGANIZATION_USER:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "ORGANIZATION_USER"
},
{
"id": "ORGANIZATION_WORKSPACE:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "ORGANIZATION_WORKSPACE"
},
{
"id": "ORGANIZATION_WORKSPACE:READ+CREATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "ORGANIZATION_WORKSPACE"
},
{
"id": "ORGANIZATION_WORKSPACE:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "ORGANIZATION_WORKSPACE"
},
{
"id": "ORGANIZATION_WORKSPACE:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "ORGANIZATION_WORKSPACE"
},
{
"id": "ORGANIZATION_GROUP:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "ORGANIZATION_GROUP"
},
{
"id": "ORGANIZATION_GROUP:READ+CREATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "ORGANIZATION_GROUP"
},
{
"id": "ORGANIZATION_GROUP:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "ORGANIZATION_GROUP"
},
{
"id": "ORGANIZATION_GROUP:READ+SETTING_PERMISSION",
"name": "$[{i18n_view_overview}]",
"resourceId": "ORGANIZATION_GROUP"
},
{
"id": "ORGANIZATION_GROUP:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "ORGANIZATION_GROUP"
},
{
"id": "ORGANIZATION_SERVICE:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "ORGANIZATION_SERVICE"
},
{
"id": "ORGANIZATION_SERVICE:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "ORGANIZATION_SERVICE"
},
{
"id": "ORGANIZATION_MESSAGE:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "ORGANIZATION_MESSAGE"
},
{
"id": "ORGANIZATION_MESSAGE:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "ORGANIZATION_MESSAGE"
},
{
"id": "WORKSPACE_USER:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "WORKSPACE_USER"
},
{
"id": "WORKSPACE_USER:READ+CREATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "WORKSPACE_USER"
},
{
"id": "WORKSPACE_USER:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "WORKSPACE_USER"
},
{
"id": "WORKSPACE_USER:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "WORKSPACE_USER"
},
{
"id": "WORKSPACE_TEMPLATE:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "WORKSPACE_TEMPLATE"
},
{
"id": "WORKSPACE_TEMPLATE:READ+CUSTOM",
"name": "$[{i18n_view_overview}]",
"resourceId": "WORKSPACE_TEMPLATE"
},
{
"id": "WORKSPACE_TEMPLATE:READ+CASE_TEMPLATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "WORKSPACE_TEMPLATE"
},
{
"id": "WORKSPACE_TEMPLATE:READ+ISSUE_TEMPLATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "WORKSPACE_TEMPLATE"
},
{
"id": "WORKSPACE_TEMPLATE:READ+REPORT_TEMPLATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "WORKSPACE_TEMPLATE"
},
{
"id": "PROJECT_USER:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_USER"
},
{
"id": "PROJECT_USER:READ+CREATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_USER"
},
{
"id": "PROJECT_USER:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_USER"
},
{
"id": "PROJECT_USER:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_USER"
},
{
"id": "PROJECT_MANAGER:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_MANAGER"
},
{
"id": "PROJECT_MANAGER:READ+CREATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_MANAGER"
},
{
"id": "PROJECT_MANAGER:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_MANAGER"
},
{
"id": "PROJECT_MANAGER:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_MANAGER"
},
{
"id": "PROJECT_ENVIRONMENT:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_ENVIRONMENT"
},
{
"id": "PROJECT_ENVIRONMENT:READ+CREATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_ENVIRONMENT"
},
{
"id": "PROJECT_ENVIRONMENT:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_ENVIRONMENT"
},
{
"id": "PROJECT_ENVIRONMENT:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_ENVIRONMENT"
},
{
"id": "PROJECT_ENVIRONMENT:READ+COPY",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_ENVIRONMENT"
},
{
"id": "PROJECT_ENVIRONMENT:READ+IMPORT",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_ENVIRONMENT"
},
{
"id": "PROJECT_ENVIRONMENT:READ+EXPORT",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_ENVIRONMENT"
},
{
"id": "PROJECT_TRACK_CASE:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_CASE"
},
{
"id": "PROJECT_TRACK_CASE:READ+CREATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_CASE"
},
{
"id": "PROJECT_TRACK_CASE:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_CASE"
},
{
"id": "PROJECT_TRACK_CASE:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_CASE"
},
{
"id": "PROJECT_TRACK_CASE:READ+COPY",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_CASE"
},
{
"id": "PROJECT_TRACK_CASE:READ+IMPORT",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_CASE"
},
{
"id": "PROJECT_TRACK_CASE:READ+EXPORT",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_CASE"
},
{
"id": "PROJECT_TRACK_REVIEW:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_REVIEW"
},
{
"id": "PROJECT_TRACK_REVIEW:READ+CREATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_REVIEW"
},
{
"id": "PROJECT_TRACK_REVIEW:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_REVIEW"
},
{
"id": "PROJECT_TRACK_REVIEW:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_REVIEW"
},
{
"id": "PROJECT_TRACK_REVIEW:READ+RELEVANCE_OR_CANCEL",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_REVIEW"
},
{
"id": "PROJECT_TRACK_REVIEW:READ+REVIEW",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_REVIEW"
},
{
"id": "PROJECT_TRACK_REVIEW:READ+COMMENT",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_REVIEW"
},
{
"id": "PROJECT_TRACK_PLAN:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_PLAN"
},
{
"id": "PROJECT_TRACK_PLAN:READ+CREATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_PLAN"
},
{
"id": "PROJECT_TRACK_PLAN:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_PLAN"
},
{
"id": "PROJECT_TRACK_PLAN:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_PLAN"
},
{
"id": "PROJECT_TRACK_PLAN:READ+SCHEDULE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_PLAN"
},
{
"id": "PROJECT_TRACK_PLAN:READ+RELEVANCE_OR_CANCEL",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_TRACK_PLAN"
},
{
"id": "PROJECT_API_DEFINITION:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_DEFINITION"
},
{
"id": "PROJECT_API_DEFINITION:READ+CREATE_API",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_DEFINITION"
},
{
"id": "PROJECT_API_DEFINITION:READ+EDIT_API",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_DEFINITION"
},
{
"id": "PROJECT_API_DEFINITION:READ+DELETE_API",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_DEFINITION"
},
{
"id": "PROJECT_API_DEFINITION:READ+CREATE_CASE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_DEFINITION"
},
{
"id": "PROJECT_API_DEFINITION:READ+EDIT_CASE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_DEFINITION"
},
{
"id": "PROJECT_API_DEFINITION:READ+DELETE_CASE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_DEFINITION"
},
{
"id": "PROJECT_API_DEFINITION:READ+COPY_CASE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_DEFINITION"
},
{
"id": "PROJECT_API_DEFINITION:READ+CREATE_PERFORMANCE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_DEFINITION"
},
{
"id": "PROJECT_API_DEFINITION:READ+CREATE_PERFORMANCE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_DEFINITION"
},
{
"id": "PROJECT_API_DEFINITION:READ+RUN",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_DEFINITION"
},
{
"id": "PROJECT_API_DEFINITION:READ+DEBUG",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_DEFINITION"
},
{
"id": "PROJECT_API_DEFINITION:READ+MOCK",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_DEFINITION"
},
{
"id": "PROJECT_API_DEFINITION:READ+IMPORT_API",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_DEFINITION"
},
{
"id": "PROJECT_API_DEFINITION:READ+EXPORT_API",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_DEFINITION"
},
{
"id": "PROJECT_API_SCENARIO:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_SCENARIO"
},
{
"id": "PROJECT_API_SCENARIO:READ+CREATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_SCENARIO"
},
{
"id": "PROJECT_API_SCENARIO:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_SCENARIO"
},
{
"id": "PROJECT_API_SCENARIO:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_SCENARIO"
},
{
"id": "PROJECT_API_SCENARIO:READ+COPY",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_SCENARIO"
},
{
"id": "PROJECT_API_SCENARIO:READ+RUN",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_SCENARIO"
},
{
"id": "PROJECT_API_SCENARIO:READ+DEBUG",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_SCENARIO"
},
{
"id": "PROJECT_API_SCENARIO:READ+SCHEDULE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_SCENARIO"
},
{
"id": "PROJECT_API_SCENARIO:READ+CREATE_PERFORMANCE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_SCENARIO"
},
{
"id": "PROJECT_API_SCENARIO:READ+IMPORT_SCENARIO",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_SCENARIO"
},
{
"id": "PROJECT_API_SCENARIO:READ+EXPORT_SCENARIO",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_SCENARIO"
},
{
"id": "PROJECT_API_SCENARIO:READ+MOVE_BATCH",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_SCENARIO"
},
{
"id": "PROJECT_API_REPORT:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_REPORT"
},
{
"id": "PROJECT_API_REPORT:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_API_REPORT"
},
{
"id": "PROJECT_PERFORMANCE_TEST:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_PERFORMANCE_TEST"
},
{
"id": "PROJECT_PERFORMANCE_TEST:READ+CREATE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_PERFORMANCE_TEST"
},
{
"id": "PROJECT_PERFORMANCE_TEST:READ+EDIT",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_PERFORMANCE_TEST"
},
{
"id": "PROJECT_PERFORMANCE_TEST:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_PERFORMANCE_TEST"
},
{
"id": "PROJECT_PERFORMANCE_TEST:READ+COPY",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_PERFORMANCE_TEST"
},
{
"id": "PROJECT_PERFORMANCE_TEST:READ+RUN",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_PERFORMANCE_TEST"
},
{
"id": "PROJECT_PERFORMANCE_TEST:READ+SCHEDULE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_PERFORMANCE_TEST"
},
{
"id": "PROJECT_PERFORMANCE_REPORT:READ",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_PERFORMANCE_REPORT"
},
{
"id": "PROJECT_PERFORMANCE_REPORT:READ+DELETE",
"name": "$[{i18n_view_overview}]",
"resourceId": "PROJECT_PERFORMANCE_REPORT"
}
],
"resource": [
{
"id": "SYSTEM_USER",
"name": "用户"
},
{
"id": "SYSTEM_ORGANIZATION",
"name": "组织"
},
{
"id": "SYSTEM_WORKSPACE",
"name": "工作空间"
},
{
"id": "SYSTEM_GROUP",
"name": "用户组与权限"
},
{
"id": "SYSTEM_SETTING",
"name": "系统参数设置"
},
{
"id": "SYSTEM_QUOTA",
"name": "配额管理"
},
{
"id": "SYSTEM_AUTH",
"name": "授权管理"
},
{
"id": "ORGANIZATION_USER",
"name": "成员"
},
{
"id": "ORGANIZATION_WORKSPACE",
"name": "工作空间"
},
{
"id": "ORGANIZATION_GROUP",
"name": "用户组与权限"
},
{
"id": "ORGANIZATION_SERVICE",
"name": "服务集成"
},
{
"id": "ORGANIZATION_MESSAGE",
"name": "消息设置"
},
{
"id": "WORKSPACE_USER",
"name": "成员"
},
{
"id": "WORKSPACE_TEMPLATE",
"name": "模版设置"
},
{
"id": "PROJECT_USER",
"name": "成员"
},
{
"id": "PROJECT_MANAGER",
"name": "项目管理"
},
{
"id": "PROJECT_ENVIRONMENT",
"name": "环境设置"
},
{
"id": "PROJECT_TRACK_CASE",
"name": "测试用例"
},
{
"id": "PROJECT_TRACK_REVIEW",
"name": "测试评审"
},
{
"id": "PROJECT_TRACK_PLAN",
"name": "测试计划"
},
{
"id": "PROJECT_API_DEFINITION",
"name": "接口定义"
},
{
"id": "PROJECT_API_SCENARIO",
"name": "接口自动化"
},
{
"id": "PROJECT_API_REPORT",
"name": "测试报告"
},
{
"id": "PROJECT_PERFORMANCE_TEST",
"name": "测试"
},
{
"id": "PROJECT_PERFORMANCE_REPORT",
"name": "报告"
}
]
}

View File

@ -19,7 +19,7 @@ export default {
}, },
{ {
path: 'usergroup', path: 'usergroup',
component: () => import('@/business/components/settings/system/UserGroup'), component: () => import('@/business/components/settings/system/group/UserGroup'),
meta: {system: true, title: '用户组与权限'} meta: {system: true, title: '用户组与权限'}
}, },
{ {

View File

@ -0,0 +1,79 @@
<template>
<el-dialog :close-on-click-modal="false" :visible.sync="dialogVisible" width="50%"
title="设置权限"
:destroy-on-close="true">
<el-table
:data="tableData"
style="width: 100%">
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column
prop="func"
label="功能菜单"
width="180">
</el-table-column>
<!-- <el-table-column-->
<!-- prop="operators"-->
<!-- label="操作对象"-->
<!-- width="180">-->
<!-- <template v-slot:default="scope">-->
<!-- <group-operator :operators="scope.row.operators"/>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column-->
<!-- prop="permission"-->
<!-- label="权限">-->
<!-- <template v-slot:default="scope">-->
<!-- {{scope.row.permissions}}-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
</el-dialog>
</template>
<script>
import GroupOperator from "@/business/components/settings/system/group/GroupOperator";
export default {
name: "GroupPermission",
data() {
return {
dialogVisible: false,
tableData: []
}
},
components: {
GroupOperator
},
methods: {
open() {
this.dialogVisible = true;
this.getGroupJson();
},
getGroupJson() {
this.$get("/user/group/permission", result => {
let data = result.data;
let arr = [];
this._getData("系统", data.system, arr);
this._getData("组织", data.organization, arr);
this._getData("工作空间", data.workspace, arr);
this._getData("项目", data.project, arr);
this.tableData = arr;
})
},
_getData(type, data, arr) {
let obj = {};
obj.func = type;
obj.operators = data.map(s => s.resource);
obj.permissions = data.map(s => s.permissions);
arr.push(obj);
}
}
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,30 @@
<template>
<div>
<div v-for="(operator, index) in operators" :key="index" style="margin-top: 5px;">
{{ operator.name }}
</div>
</div>
</template>
<script>
export default {
name: "GroupOperator",
props: {
operators: {
type: Array,
default() {
return {}
}
}
},
data() {
return {
checked: false
}
}
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,13 @@
<template>
</template>
<script>
export default {
name: "GroupPermission"
}
</script>
<style scoped>
</style>

View File

@ -28,7 +28,12 @@
<el-table-column prop="description" label="描述"/> <el-table-column prop="description" label="描述"/>
<el-table-column :label="$t('commons.operating')"> <el-table-column :label="$t('commons.operating')">
<template v-slot:default="scope"> <template v-slot:default="scope">
<ms-table-operator @editClick="edit(scope.row)" @deleteClick="del(scope.row)"/> <ms-table-operator @editClick="edit(scope.row)" @deleteClick="del(scope.row)">
<template v-slot:behind>
<ms-table-operator-button tip="复制" icon="el-icon-document-copy" @exec="copy(scope.row)"/>
<ms-table-operator-button tip="设置权限" icon="el-icon-s-tools" @exec="setPermission(scope.row)"/>
</template>
</ms-table-operator>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -38,6 +43,8 @@
</el-card> </el-card>
<edit-user-group ref="editUserGroup" @refresh="initData"/> <edit-user-group ref="editUserGroup" @refresh="initData"/>
<edit-permission ref="editPermission"/>
</div> </div>
</template> </template>
@ -46,13 +53,19 @@ import MsTableHeader from "@/business/components/common/components/MsTableHeader
import MsTableOperator from "@/business/components/common/components/MsTableOperator"; import MsTableOperator from "@/business/components/common/components/MsTableOperator";
import MsTablePagination from "@/business/components/common/pagination/TablePagination"; import MsTablePagination from "@/business/components/common/pagination/TablePagination";
import {USER_GROUP_SCOPE} from "@/common/js/table-constants"; import {USER_GROUP_SCOPE} from "@/common/js/table-constants";
import EditUserGroup from "@/business/components/settings/system/EditUserGroup"; import EditUserGroup from "@/business/components/settings/system/group/EditUserGroup";
import MsTableOperatorButton from "@/business/components/common/components/MsTableOperatorButton";
import EditPermission from "@/business/components/settings/system/group/EditPermission";
export default { export default {
name: "UserGroup", name: "UserGroup",
components: { components: {
EditUserGroup, EditUserGroup,
MsTableHeader, MsTableOperator, MsTablePagination MsTableHeader,
MsTableOperator,
MsTablePagination,
MsTableOperatorButton,
EditPermission
}, },
data() { data() {
return { return {
@ -66,6 +79,7 @@ export default {
}, },
created() { created() {
this.initData(); this.initData();
this.getGroupJson();
}, },
computed: { computed: {
userGroupType() { userGroupType() {
@ -93,6 +107,17 @@ export default {
this.$success(this.$t('commons.delete_success')); this.$success(this.$t('commons.delete_success'));
this.initData(); this.initData();
}) })
},
copy(row) {
console.log(row)
},
setPermission(row) {
this.$refs.editPermission.open();
},
getGroupJson() {
this.$get("/user/group/permission", result => {
let data = result.data;
})
} }
} }
} }