fix(测试跟踪): 用例编辑页版本相关权限

--bug=1027392 --user=陈建星 【测试跟踪】只读用户-功能用例开启查看权限-用例详情页-点击版本无反应 https://www.tapd.cn/55049933/s/1387112
--bug=1027389 --user=陈建星 【测试跟踪】项目成员未开启创建用例权限-功能用例页面-点击版本下拉-新建成功 https://www.tapd.cn/55049933/s/1387002
This commit is contained in:
jianxing 2023-06-27 17:37:20 +08:00 committed by 刘瑞斌
parent f180fbf884
commit 88fe1b6f5f
3 changed files with 27 additions and 6 deletions

View File

@ -26,6 +26,7 @@ import io.metersphere.service.TestCaseService;
import io.metersphere.service.wapper.CheckPermissionService;
import io.metersphere.xpack.track.dto.EditTestCaseRequest;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
@ -245,7 +246,7 @@ public class TestCaseController {
@MsAuditLog(module = OperLogModule.TRACK_TEST_CASE, type = OperLogConstants.UPDATE, beforeEvent = "#msClass.getLogDetails(#request.id)", title = "#request.name", content = "#msClass.getLogDetails(#request.id)", msClass = TestCaseService.class)
@SendNotice(taskType = NoticeConstants.TaskType.TRACK_TEST_CASE_TASK, target = "#targetClass.getTestCase(#request.id)", targetClass = TestCaseService.class,
event = NoticeConstants.Event.UPDATE, subject = "测试用例通知")
@RequiresPermissions(PermissionConstants.PROJECT_TRACK_CASE_READ_EDIT)
@RequiresPermissions(value = {PermissionConstants.PROJECT_TRACK_CASE_READ_EDIT, PermissionConstants.PROJECT_TRACK_CASE_READ_CREATE}, logical = Logical.OR)
public TestCase editTestCase(@RequestPart("request") EditTestCaseRequest request) {
return testCaseService.edit(request);
}

View File

@ -29,8 +29,8 @@
v-show="versionEnable"
ref="versionHistory"
:current-id="currentTestCaseInfo.id"
:is-read="readOnly"
:is-public-show="isPublicShow || hasReadonlyPermission"
:is-read="versionReadOnly"
:is-public-show="isPublicShow"
:current-version-id="form.versionId"
@confirmOtherInfo="confirmOtherInfo"
:current-project-id="projectId"
@ -632,6 +632,16 @@ export default {
!hasPermission("PROJECT_TRACK_CASE:READ+EDIT")
);
},
versionReadOnly() {
if (this.isPublicShow || this.hasReadonlyPermission) {
return true;
}
const { rowClickHasPermission } = this.currentTestCaseInfo;
if (rowClickHasPermission !== undefined) {
return !rowClickHasPermission;
}
return hasPermission('PROJECT_TRACK_CASE:READ');
},
caseId() {
return !this.isPublicShow ? this.$route.params.caseId : this.publicCaseId;
},

View File

@ -54,7 +54,7 @@
<div
class="create opt-row"
v-if="!caseVersionMap.has(item.id)
&& !isRead"
&& hasCreatePermission"
@click.stop="create(item)"
>
{{ $t("commons.create") }}
@ -64,7 +64,7 @@
@click.stop="del(item)"
v-if="caseVersionMap.has(item.id)
&& !(item.id === currentVersionId)
&& !isRead"
&& hasDeletePermission"
>
{{ $t("commons.delete") }}
</div>
@ -157,7 +157,7 @@
<script>
import {getCurrentProjectID} from "metersphere-frontend/src/utils/token";
import {hasLicense} from "metersphere-frontend/src/utils/permission";
import {hasLicense, hasPermission} from "metersphere-frontend/src/utils/permission";
import {
getProjectMembers,
getProjectVersions,
@ -218,6 +218,15 @@ export default {
},
compareDisable() {
return !this.versionCompareOptions || this.versionCompareOptions.length < 2;
},
hasCreatePermission() {
return hasPermission("PROJECT_TRACK_CASE:READ+CREATE")
},
hasEditPermission() {
return hasPermission("PROJECT_TRACK_CASE:READ+EDIT")
},
hasDeletePermission() {
return hasPermission("PROJECT_TRACK_CASE:READ+DELETE");
}
},
beforeDestroy() {
@ -320,6 +329,7 @@ export default {
return hasVersionCase //
&& latestVersionCondition //
&& !this.isRead //
&& this.hasEditPermission
&& !isNotDataLatestVersionCase //
},
handleVersionOptions() {