From cb9d96aa4de2d6e2418b0b20ddd1fe3980e6f608 Mon Sep 17 00:00:00 2001
From: wxg0103 <727495428@qq.com>
Date: Mon, 9 Jan 2023 17:51:06 +0800
Subject: [PATCH 1/7] =?UTF-8?q?fix(=E9=A1=B9=E7=9B=AE=E8=AE=BE=E7=BD=AE):?=
=?UTF-8?q?=20=E4=BF=AE=E5=A4=8D=E7=8E=AF=E5=A2=83=E6=89=B9=E9=87=8F?=
=?UTF-8?q?=E5=88=A0=E9=99=A4=E5=8F=98=E9=87=8F=E5=90=8E=E4=BB=8D=E6=98=BE?=
=?UTF-8?q?=E7=A4=BA=E6=89=B9=E9=87=8F=E6=93=8D=E4=BD=9C=E6=8C=89=E9=92=AE?=
=?UTF-8?q?=E7=9A=84=E7=BC=BA=E9=99=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
--bug=1021727 --user=王孝刚 【项目管理】项目环境-通用配置,批量删除环境变量后,还在显示批量操作按钮
https://www.tapd.cn/55049933/s/1324639
---
.../components/environment/commons/ApiScenarioVariables.vue | 3 +++
1 file changed, 3 insertions(+)
diff --git a/framework/sdk-parent/frontend/src/components/environment/commons/ApiScenarioVariables.vue b/framework/sdk-parent/frontend/src/components/environment/commons/ApiScenarioVariables.vue
index 17cc7ee859..42be470235 100644
--- a/framework/sdk-parent/frontend/src/components/environment/commons/ApiScenarioVariables.vue
+++ b/framework/sdk-parent/frontend/src/components/environment/commons/ApiScenarioVariables.vue
@@ -367,6 +367,9 @@ export default {
this.sortParameters();
this.$refs.variableTable.cancelCurrentRow();
this.$refs.variableTable.clear();
+ this.variables.forEach((item) => {
+ item.showMore = false;
+ });
}
);
},
From 2eec3377725ccaede46cf9377338316e4f8fab10 Mon Sep 17 00:00:00 2001
From: wxg0103 <727495428@qq.com>
Date: Mon, 9 Jan 2023 18:37:38 +0800
Subject: [PATCH 2/7] =?UTF-8?q?fix(=E6=8E=A5=E5=8F=A3=E5=AE=9A=E4=B9=89):?=
=?UTF-8?q?=20=E4=BF=AE=E5=A4=8D=E5=9C=BA=E6=99=AF=E5=88=97=E8=A1=A8?=
=?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=8E=AF=E5=A2=83=E5=90=8D=E7=A7=B0=E8=BF=87?=
=?UTF-8?q?=E9=95=BF=E6=97=B6=E7=8E=AF=E5=A2=83=E5=BC=B9=E6=A1=86=E4=B8=AD?=
=?UTF-8?q?=E4=B8=8D=E6=98=BE=E7=A4=BA=E7=8E=AF=E5=A2=83=E5=90=8D=E7=A7=B0?=
=?UTF-8?q?=E7=9A=84=E7=BC=BA=E9=99=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
--bug=1021740 --user=王孝刚 【UI测试】UI场景 和 指令,项目+环境名称过长时,环境弹框中不显示环境名称
https://www.tapd.cn/55049933/s/1324648
---
.../automation/scenario/ApiScenarioList.vue | 146 +++++++++---------
1 file changed, 74 insertions(+), 72 deletions(-)
diff --git a/api-test/frontend/src/business/automation/scenario/ApiScenarioList.vue b/api-test/frontend/src/business/automation/scenario/ApiScenarioList.vue
index 73a89bd2bf..11e1d5e7da 100644
--- a/api-test/frontend/src/business/automation/scenario/ApiScenarioList.vue
+++ b/api-test/frontend/src/business/automation/scenario/ApiScenarioList.vue
@@ -40,7 +40,7 @@
:fields-width="fieldsWidth"
v-if="this.trashEnable"
:label="$t('commons.delete_user')"
- min-width="120" />
+ min-width="120"/>
+ sortable/>
-
+
@@ -105,7 +105,7 @@
prop="status"
min-width="120px">
-
+
@@ -125,8 +125,8 @@
:content="itemName"
:show-tooltip="scope.row.tags.length === 1 && itemName.length * 12 <= 120"
:showTooltip="true"
- style="margin-left: 0px; margin-right: 2px" />
-
+ style="margin-left: 0px; margin-right: 2px"/>
+
@@ -148,7 +148,7 @@
:fields-width="fieldsWidth"
prop="principalName"
min-width="120px"
- sortable />
+ sortable/>
+ sortable="custom"/>
{{ v }}:
- {{ k }}
+ {{ k }}
-
+
- {{ v }}: {{ k }}
-
+ {{ v }}:
+
+ {{ k }}
+
+
+
-
+
@@ -217,7 +220,7 @@
:fields-width="fieldsWidth"
:label="$t('api_test.automation.step')"
prop="stepTotal"
- min-width="80px" />
+ min-width="80px"/>
-
+
@@ -238,7 +241,7 @@
:fields-width="fieldsWidth"
:label="$t('api_test.automation.passing_rate')"
prop="passRate"
- min-width="120px" />
+ min-width="120px"/>
@@ -249,7 +252,7 @@
icon="el-icon-video-play"
class="run-button"
style="margin-right: 10px"
- v-permission="['PROJECT_API_SCENARIO:READ+RUN']" />
+ v-permission="['PROJECT_API_SCENARIO:READ+RUN']"/>
+ style="display: contents"/>
-
+
@@ -295,7 +298,7 @@
:scenarioId="scenarioId"
:infoDb="infoDb"
:report-id="reportId"
- :currentProjectId="projectId" />
+ :currentProjectId="projectId"/>
+ :currentProjectId="projectId"/>
+ :row="selectRows"/>
@@ -336,14 +339,14 @@
@batchEdit="batchEdit"
:typeArr="typeArr"
:value-arr="valueArr"
- :dialog-title="$t('test_track.case.batch_edit_case')" />
-
+ :dialog-title="$t('test_track.case.batch_edit_case')"/>
+
+ ref="apiBatchRun"/>
-
-
+ ref="runTest"/>
+
+
-
+
+ ref="apiDeleteConfirm"/>
-
+
@@ -398,13 +401,13 @@ import {
scenarioRun,
updateScenarioEnv,
} from '@/api/scenario';
-import { getMaintainer, getProject } from '@/api/project';
-import { getProjectVersions, versionEnableByProjectId } from '@/api/xpack';
-import { getCurrentProjectID, getCurrentUserId } from 'metersphere-frontend/src/utils/token';
-import { downloadFile, getUUID, objToStrMap, strMapToObj } from 'metersphere-frontend/src/utils';
-import { hasLicense, hasPermission } from 'metersphere-frontend/src/utils/permission';
-import { API_SCENARIO_CONFIGS } from 'metersphere-frontend/src/components/search/search-components';
-import { API_SCENARIO_LIST } from 'metersphere-frontend/src/utils/constants';
+import {getMaintainer, getProject} from '@/api/project';
+import {getProjectVersions, versionEnableByProjectId} from '@/api/xpack';
+import {getCurrentProjectID, getCurrentUserId} from 'metersphere-frontend/src/utils/token';
+import {downloadFile, getUUID, objToStrMap, strMapToObj} from 'metersphere-frontend/src/utils';
+import {hasLicense, hasPermission} from 'metersphere-frontend/src/utils/permission';
+import {API_SCENARIO_CONFIGS} from 'metersphere-frontend/src/components/search/search-components';
+import {API_SCENARIO_LIST} from 'metersphere-frontend/src/utils/constants';
import {
buildBatchParam,
getCustomTableHeader,
@@ -412,24 +415,24 @@ import {
getLastTableSortField,
getSelectDataCounts,
} from 'metersphere-frontend/src/utils/tableUtils';
-import { API_SCENARIO_FILTERS } from 'metersphere-frontend/src/utils/table-constants';
+import {API_SCENARIO_FILTERS} from 'metersphere-frontend/src/utils/table-constants';
import MsTable from 'metersphere-frontend/src/components/table/MsTable';
import MsTableColumn from 'metersphere-frontend/src/components/table/MsTableColumn';
import HeaderLabelOperate from 'metersphere-frontend/src/components/head/HeaderLabelOperate';
-import { getGraphByCondition } from '@/api/graph';
-import { API_SCENARIO_CONFIGS_TRASH, TYPE_TO_C } from '@/business/automation/scenario/Setting';
+import {getGraphByCondition} from '@/api/graph';
+import {API_SCENARIO_CONFIGS_TRASH, TYPE_TO_C} from '@/business/automation/scenario/Setting';
import MsTableSearchBar from 'metersphere-frontend/src/components/MsTableSearchBar';
import MsTableAdvSearchBar from 'metersphere-frontend/src/components/search/MsTableAdvSearchBar';
import ListItemDeleteConfirm from 'metersphere-frontend/src/components/ListItemDeleteConfirm';
import ScenarioDeleteConfirm from '@/business/automation/scenario/ScenarioDeleteConfirm';
-import { $error } from 'metersphere-frontend/src/plugins/message';
+import {$error} from 'metersphere-frontend/src/plugins/message';
import MsSearch from 'metersphere-frontend/src/components/search/MsSearch';
-import { buildNodePath } from 'metersphere-frontend/src/model/NodeTree';
-import { getEnvironmentByProjectId } from 'metersphere-frontend/src/api/environment';
-import { REPORT_STATUS } from '@/business/commons/js/commons';
-import { usePerformanceStore } from '@/store';
-import { request } from 'metersphere-frontend/src/plugins/request';
-import { parseEnvironment } from '@/business/environment/model/EnvironmentModel';
+import {buildNodePath} from 'metersphere-frontend/src/model/NodeTree';
+import {getEnvironmentByProjectId} from 'metersphere-frontend/src/api/environment';
+import {REPORT_STATUS} from '@/business/commons/js/commons';
+import {usePerformanceStore} from '@/store';
+import {request} from 'metersphere-frontend/src/plugins/request';
+import {parseEnvironment} from '@/business/environment/model/EnvironmentModel';
import MsApiRunMode from '@/business/automation/scenario/common/ApiRunMode';
import ApiDeleteConfirm from '@/business/definition/components/list/ApiDeleteConfirm';
import MsShowReference from '@/business/definition/components/reference/ShowReference';
@@ -652,8 +655,8 @@ export default {
},
],
typeArr: [
- { id: 'level', name: this.$t('test_track.case.priority') },
- { id: 'status', name: this.$t('test_track.plan.plan_status') },
+ {id: 'level', name: this.$t('test_track.case.priority')},
+ {id: 'status', name: this.$t('test_track.plan.plan_status')},
{
id: 'principal',
name: this.$t('api_test.definition.request.responsible'),
@@ -664,14 +667,14 @@ export default {
id: 'projectEnv',
name: this.$t('api_test.definition.request.run_env'),
},
- { id: 'tags', name: this.$t('commons.tag') },
+ {id: 'tags', name: this.$t('commons.tag')},
],
valueArr: {
level: [
- { name: 'P0', id: 'P0' },
- { name: 'P1', id: 'P1' },
- { name: 'P2', id: 'P2' },
- { name: 'P3', id: 'P3' },
+ {name: 'P0', id: 'P0'},
+ {name: 'P1', id: 'P1'},
+ {name: 'P2', id: 'P2'},
+ {name: 'P3', id: 'P3'},
],
status: [
{
@@ -712,10 +715,10 @@ export default {
if (!this.projectName || this.projectName === '') {
this.getProjectName();
}
- this.condition.filters = { status: ['Prepare', 'Underway', 'Completed'] };
+ this.condition.filters = {status: ['Prepare', 'Underway', 'Completed']};
this.initEnvironment();
if (this.trashEnable) {
- this.condition.filters = { status: ['Trash'] };
+ this.condition.filters = {status: ['Trash']};
this.condition.moduleIds = [];
this.operators = this.trashOperators;
this.buttons = this.trashButtons;
@@ -730,7 +733,7 @@ export default {
}
if (this.trashEnable) {
- this.condition.orders = [{ name: 'delete_time', type: 'desc' }];
+ this.condition.orders = [{name: 'delete_time', type: 'desc'}];
} else {
this.condition.orders = getLastTableSortField(this.tableHeaderKey);
}
@@ -763,7 +766,7 @@ export default {
},
trashEnable() {
if (this.trashEnable) {
- this.condition.filters = { status: ['Trash'] };
+ this.condition.filters = {status: ['Trash']};
this.condition.moduleIds = [];
this.operators = this.trashOperators;
this.buttons = this.trashButtons;
@@ -792,7 +795,7 @@ export default {
moduleOptionsNew() {
let moduleOptions = [];
this.moduleOptions.forEach((node) => {
- buildNodePath(node, { path: '' }, moduleOptions);
+ buildNodePath(node, {path: ''}, moduleOptions);
});
return moduleOptions;
},
@@ -824,7 +827,7 @@ export default {
parseEnvironment(environment);
});
this.environmentsFilters = response.data.map((u) => {
- return { text: u.name, value: u.id };
+ return {text: u.name, value: u.id};
});
});
}
@@ -1011,7 +1014,7 @@ export default {
getMaintainer().then((response) => {
option.push(...response.data);
this.userFilters = response.data.map((u) => {
- return { text: u.name, value: u.id };
+ return {text: u.name, value: u.id};
});
});
},
@@ -1022,11 +1025,11 @@ export default {
this.versionFilters = response.data
.filter((u) => u.id === currentVersion)
.map((u) => {
- return { text: u.name, value: u.id };
+ return {text: u.name, value: u.id};
});
} else {
this.versionFilters = response.data.map((u) => {
- return { text: u.name, value: u.id };
+ return {text: u.name, value: u.id};
});
}
});
@@ -1117,7 +1120,7 @@ export default {
handleRunBatch(config) {
this.infoDb = false;
- let run = { config: config };
+ let run = {config: config};
run.id = getUUID();
//按照列表排序
let ids = this.orderBySelectRows();
@@ -1413,7 +1416,7 @@ export default {
this.search();
});
} else {
- let param = { ids: [api.id] };
+ let param = {ids: [api.id]};
removeScenarioToGcByBatch(param).then(() => {
this.$success(this.$t('commons.delete_success'));
this.$refs.apiDeleteConfirmVersion.close();
@@ -1452,7 +1455,7 @@ export default {
method: 'post',
data: param,
responseType: 'blob',
- headers: { 'Content-Type': 'application/json; charset=utf-8' },
+ headers: {'Content-Type': 'application/json; charset=utf-8'},
};
request(config).then(
(response) => {
@@ -1592,13 +1595,12 @@ export default {
.plan-case-env {
display: inline-block;
- padding: 0 0;
- max-width: 350px;
+ max-width: 250px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
- margin-top: 2px;
margin-left: 5px;
+ vertical-align: bottom;
}
.project-name {
From f158eba28992dbc06b1c6770625545fa622d230c Mon Sep 17 00:00:00 2001
From: chenjianxing
Date: Mon, 9 Jan 2023 17:48:21 +0800
Subject: [PATCH 3/7] =?UTF-8?q?fix(=E6=B5=8B=E8=AF=95=E8=B7=9F=E8=B8=AA):?=
=?UTF-8?q?=20=E6=B5=8B=E8=AF=95=E8=AE=A1=E5=88=92=E5=88=9B=E5=BB=BA?=
=?UTF-8?q?=E4=BA=BA=E4=BC=9A=E5=8F=98=E6=9B=B4=E4=B8=BA=E6=9C=80=E5=90=8E?=
=?UTF-8?q?=E5=BC=80=E5=90=AF=E4=BB=BB=E5=8A=A1=E7=9A=84=E4=BA=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
--bug=1021720 --user=陈建星 【测试跟踪】用户A创建测试计划a,开启定时任务然后又关闭了。用户B开启这个定时任务后创建人显示错误 https://www.tapd.cn/55049933/s/1324637
---
.../main/java/io/metersphere/service/BaseScheduleService.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/framework/sdk-parent/sdk/src/main/java/io/metersphere/service/BaseScheduleService.java b/framework/sdk-parent/sdk/src/main/java/io/metersphere/service/BaseScheduleService.java
index 6bc39ec6df..7f3f9b6079 100644
--- a/framework/sdk-parent/sdk/src/main/java/io/metersphere/service/BaseScheduleService.java
+++ b/framework/sdk-parent/sdk/src/main/java/io/metersphere/service/BaseScheduleService.java
@@ -59,6 +59,8 @@ public class BaseScheduleService {
public int editSchedule(Schedule schedule) {
schedule.setUpdateTime(System.currentTimeMillis());
+ schedule.setCreateTime(null);
+ schedule.setUserId(null);
return scheduleMapper.updateByPrimaryKeySelective(schedule);
}
From 7dc151e940a59010dd47ed2ac9b4d68810d75149 Mon Sep 17 00:00:00 2001
From: chenjianxing
Date: Mon, 9 Jan 2023 18:50:18 +0800
Subject: [PATCH 4/7] =?UTF-8?q?fix(=E6=B5=8B=E8=AF=95=E8=B7=9F=E8=B8=AA):?=
=?UTF-8?q?=20=E6=B5=8B=E8=AF=95=E8=AE=A1=E5=88=92=E5=8E=86=E5=8F=B2?=
=?UTF-8?q?=E6=8A=A5=E5=91=8A=E6=97=A0=E6=B3=95=E7=BC=96=E8=BE=91=E6=80=BB?=
=?UTF-8?q?=E7=BB=93?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
--bug=1021649 --user=陈建星 【测试跟踪】测试跟踪-报告-查看报告-报告总结-编辑-无法保存 https://www.tapd.cn/55049933/s/1324587
---
.../io/metersphere/plan/service/TestPlanReportService.java | 2 ++
.../view/comonents/report/detail/TestPlanSummaryReport.vue | 6 +++---
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/test-track/backend/src/main/java/io/metersphere/plan/service/TestPlanReportService.java b/test-track/backend/src/main/java/io/metersphere/plan/service/TestPlanReportService.java
index 6b96eb5b70..2cedb4fab7 100644
--- a/test-track/backend/src/main/java/io/metersphere/plan/service/TestPlanReportService.java
+++ b/test-track/backend/src/main/java/io/metersphere/plan/service/TestPlanReportService.java
@@ -750,7 +750,9 @@ public class TestPlanReportService {
if (testPlanReportContentWithBLOBs.getEndTime() != null) {
reportDTO.setEndTime(testPlanReportContentWithBLOBs.getEndTime());
}
+ String summary = testPlanReportContentWithBLOBs.getSummary();
BeanUtils.copyBean(testPlanReportContentWithBLOBs, reportDTO);
+ testPlanReportContentWithBLOBs.setSummary(summary);
testPlanReportContentWithBLOBs.setId(id);
testPlanReportContentWithBLOBs.setTestPlanReportId(testPlanReportId);
if (reportDTO.getFunctionResult() != null) {
diff --git a/test-track/frontend/src/business/plan/view/comonents/report/detail/TestPlanSummaryReport.vue b/test-track/frontend/src/business/plan/view/comonents/report/detail/TestPlanSummaryReport.vue
index 8a1317042a..204352bbd0 100644
--- a/test-track/frontend/src/business/plan/view/comonents/report/detail/TestPlanSummaryReport.vue
+++ b/test-track/frontend/src/business/plan/view/comonents/report/detail/TestPlanSummaryReport.vue
@@ -1,10 +1,10 @@
-
+
{{ $t('commons.edit') }}
-
+
{{ $t('commons.save') }}
@@ -44,7 +44,7 @@ export default {
},
computed: {
showEdit() {
- return !this.isTemplate && !this.isShare && !this.isEdit;
+ return !this.isTemplate && !this.isShare;
}
},
methods: {
From f71158e3277ebf55f830ede626043b6465658652 Mon Sep 17 00:00:00 2001
From: CaptainB
Date: Mon, 9 Jan 2023 19:58:14 +0800
Subject: [PATCH 5/7] =?UTF-8?q?refactor:=20=E5=90=8E=E5=8F=B0=E6=9C=8D?=
=?UTF-8?q?=E5=8A=A1=E9=97=B4=E8=B0=83=E7=94=A8=E5=8C=BA=E5=88=86sso=20tok?=
=?UTF-8?q?en?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../commons/constants/SessionConstants.java | 1 +
.../metersphere/commons/utils/HttpHeaderUtils.java | 1 +
.../java/io/metersphere/security/ApiKeyFilter.java | 14 ++++++++++----
...ySessionHandler.java => SSOSessionHandler.java} | 2 +-
4 files changed, 13 insertions(+), 5 deletions(-)
rename framework/sdk-parent/sdk/src/main/java/io/metersphere/security/{ApiKeySessionHandler.java => SSOSessionHandler.java} (97%)
diff --git a/framework/sdk-parent/sdk/src/main/java/io/metersphere/commons/constants/SessionConstants.java b/framework/sdk-parent/sdk/src/main/java/io/metersphere/commons/constants/SessionConstants.java
index a64dfbddae..f41ce3fad3 100644
--- a/framework/sdk-parent/sdk/src/main/java/io/metersphere/commons/constants/SessionConstants.java
+++ b/framework/sdk-parent/sdk/src/main/java/io/metersphere/commons/constants/SessionConstants.java
@@ -7,6 +7,7 @@ public class SessionConstants {
public final static String HEADER_TOKEN = "X-AUTH-TOKEN";
public final static String CSRF_TOKEN = "CSRF-TOKEN";
+ public final static String SSO_TOKEN = "SSO-TOKEN";
public final static String CURRENT_PROJECT = "PROJECT";
public final static String CURRENT_WORKSPACE = "WORKSPACE";
public final static String ACCESS_KEY = "accessKey";
diff --git a/framework/sdk-parent/sdk/src/main/java/io/metersphere/commons/utils/HttpHeaderUtils.java b/framework/sdk-parent/sdk/src/main/java/io/metersphere/commons/utils/HttpHeaderUtils.java
index bca8ac1d00..c837e67520 100644
--- a/framework/sdk-parent/sdk/src/main/java/io/metersphere/commons/utils/HttpHeaderUtils.java
+++ b/framework/sdk-parent/sdk/src/main/java/io/metersphere/commons/utils/HttpHeaderUtils.java
@@ -60,6 +60,7 @@ public class HttpHeaderUtils {
headers.add(SessionConstants.HEADER_TOKEN, sessionUser.getSessionId());
headers.add(SessionConstants.CSRF_TOKEN, sessionUser.getCsrfToken());
+ headers.add(SessionConstants.SSO_TOKEN, sessionUser.getId());
headers.add(SessionConstants.CURRENT_PROJECT, sessionUser.getLastProjectId());
headers.add(SessionConstants.CURRENT_WORKSPACE, sessionUser.getLastWorkspaceId());
}
diff --git a/framework/sdk-parent/sdk/src/main/java/io/metersphere/security/ApiKeyFilter.java b/framework/sdk-parent/sdk/src/main/java/io/metersphere/security/ApiKeyFilter.java
index 2bf9ed8242..c8783da3dc 100644
--- a/framework/sdk-parent/sdk/src/main/java/io/metersphere/security/ApiKeyFilter.java
+++ b/framework/sdk-parent/sdk/src/main/java/io/metersphere/security/ApiKeyFilter.java
@@ -1,7 +1,6 @@
package io.metersphere.security;
import io.metersphere.commons.constants.SessionConstants;
-import io.metersphere.commons.utils.LogUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
@@ -21,9 +20,9 @@ public class ApiKeyFilter extends AnonymousFilter {
// 不是apikey的通过
if (!ApiKeyHandler.isApiKeyCall(httpRequest) && !SecurityUtils.getSubject().isAuthenticated()) {
// sso 带了token的
- String userId = ApiKeySessionHandler.validate(httpRequest);
+ String userId = SSOSessionHandler.validate(httpRequest);
if (StringUtils.isNotBlank(userId)) {
- SecurityUtils.getSubject().login(new UsernamePasswordToken(userId, ApiKeySessionHandler.random));
+ SecurityUtils.getSubject().login(new UsernamePasswordToken(userId, SSOSessionHandler.random));
}
return true;
}
@@ -32,7 +31,7 @@ public class ApiKeyFilter extends AnonymousFilter {
if (!SecurityUtils.getSubject().isAuthenticated()) {
String userId = ApiKeyHandler.getUser(WebUtils.toHttp(request));
if (StringUtils.isNotBlank(userId)) {
- SecurityUtils.getSubject().login(new UsernamePasswordToken(userId, ApiKeySessionHandler.random));
+ SecurityUtils.getSubject().login(new UsernamePasswordToken(userId, SSOSessionHandler.random));
}
}
@@ -45,6 +44,13 @@ public class ApiKeyFilter extends AnonymousFilter {
@Override
protected void postHandle(ServletRequest request, ServletResponse response) throws Exception {
+ HttpServletRequest httpRequest = WebUtils.toHttp(request);
+ // sso 带了token的 退出
+ String userId = httpRequest.getHeader(SessionConstants.SSO_TOKEN);
+ if (StringUtils.isNotBlank(userId) && SecurityUtils.getSubject().isAuthenticated()) {
+ SecurityUtils.getSubject().logout();
+ }
+ // apikey 退出
if (ApiKeyHandler.isApiKeyCall(WebUtils.toHttp(request)) && SecurityUtils.getSubject().isAuthenticated()) {
SecurityUtils.getSubject().logout();
}
diff --git a/framework/sdk-parent/sdk/src/main/java/io/metersphere/security/ApiKeySessionHandler.java b/framework/sdk-parent/sdk/src/main/java/io/metersphere/security/SSOSessionHandler.java
similarity index 97%
rename from framework/sdk-parent/sdk/src/main/java/io/metersphere/security/ApiKeySessionHandler.java
rename to framework/sdk-parent/sdk/src/main/java/io/metersphere/security/SSOSessionHandler.java
index e027df954f..68300c2306 100644
--- a/framework/sdk-parent/sdk/src/main/java/io/metersphere/security/ApiKeySessionHandler.java
+++ b/framework/sdk-parent/sdk/src/main/java/io/metersphere/security/SSOSessionHandler.java
@@ -9,7 +9,7 @@ import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.util.UUID;
-public class ApiKeySessionHandler {
+public class SSOSessionHandler {
public static String random = UUID.randomUUID() + UUID.randomUUID().toString();
From 2ef10fc9596fd70941779442b910ee593018b78f Mon Sep 17 00:00:00 2001
From: guoyuqi
Date: Mon, 9 Jan 2023 19:10:30 +0800
Subject: [PATCH 6/7] =?UTF-8?q?refactor(=E6=8E=A5=E5=8F=A3=E6=B5=8B?=
=?UTF-8?q?=E8=AF=95):=20=E4=BF=AE=E5=A4=8D=E6=A0=B7=E5=BC=8F=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9=E5=B8=A6=E6=9D=A5=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
--story=1010649 --user=郭雨琦
https://www.tapd.cn/55049933/prong/stories/view/1155049933001010649?url_cache_key=from_url_iteration_list_af1c2a348ba1b2cbec7f7734af247d0e&action_entry_type=stories
---
.../definition/components/complete/EditCompleteHTTPApi.vue | 3 +++
1 file changed, 3 insertions(+)
diff --git a/api-test/frontend/src/business/definition/components/complete/EditCompleteHTTPApi.vue b/api-test/frontend/src/business/definition/components/complete/EditCompleteHTTPApi.vue
index 49925e5366..97f87d403b 100644
--- a/api-test/frontend/src/business/definition/components/complete/EditCompleteHTTPApi.vue
+++ b/api-test/frontend/src/business/definition/components/complete/EditCompleteHTTPApi.vue
@@ -672,6 +672,9 @@ export default {
this.request.body.kvs = requestKvs;
this.beforeRequest.body.kvs = beforeKvs
}
+ if (Object.keys(this.request.body).indexOf('type')) {
+ this.beforeRequest.body.type = this.request.body.type
+ }
let submitRequestBody = JSON.stringify(this.request.body);
let beforeRequestBody = JSON.stringify(this.beforeRequest.body);
if (submitRequestBody !== beforeRequestBody && !this.noShowSyncRuleRelation) {
From c2529a5f58acb51f1b162f413ba5b02553475b51 Mon Sep 17 00:00:00 2001
From: fit2-zhao
Date: Tue, 10 Jan 2023 09:33:03 +0800
Subject: [PATCH 7/7] =?UTF-8?q?refactor(=E6=8E=A5=E5=8F=A3=E6=B5=8B?=
=?UTF-8?q?=E8=AF=95):=20=E4=BC=98=E5=8C=96=E5=BC=95=E7=94=A8=E6=88=96?=
=?UTF-8?q?=E5=A4=8D=E5=88=B6=E5=9C=BA=E6=99=AF=E9=BB=98=E8=AE=A4=E8=A7=84?=
=?UTF-8?q?=E5=88=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../websocket/MsWebSocketClient.java | 39 -------------------
.../automation/scenario/EditApiScenario.vue | 2 +-
2 files changed, 1 insertion(+), 40 deletions(-)
delete mode 100644 api-test/backend/src/main/java/io/metersphere/websocket/MsWebSocketClient.java
diff --git a/api-test/backend/src/main/java/io/metersphere/websocket/MsWebSocketClient.java b/api-test/backend/src/main/java/io/metersphere/websocket/MsWebSocketClient.java
deleted file mode 100644
index b2f25adc55..0000000000
--- a/api-test/backend/src/main/java/io/metersphere/websocket/MsWebSocketClient.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package io.metersphere.websocket;
-
-import io.metersphere.commons.utils.LogUtil;
-import org.java_websocket.client.WebSocketClient;
-import org.java_websocket.handshake.ServerHandshake;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Iterator;
-
-public class MsWebSocketClient extends WebSocketClient {
- public MsWebSocketClient(String url) throws URISyntaxException {
- super(new URI(url));
- }
-
- @Override
- public void onOpen(ServerHandshake shake) {
- LogUtil.info("握手...");
- for (Iterator it = shake.iterateHttpFields(); it.hasNext(); ) {
- String key = it.next();
- LogUtil.info(key + ":" + shake.getFieldValue(key));
- }
- }
-
- @Override
- public void onMessage(String paramString) {
- LogUtil.info("接收到消息:" + paramString);
- }
-
- @Override
- public void onClose(int paramInt, String paramString, boolean paramBoolean) {
- LogUtil.info("关闭...");
- }
-
- @Override
- public void onError(Exception e) {
- LogUtil.info("异常" + e);
- }
-}
diff --git a/api-test/frontend/src/business/automation/scenario/EditApiScenario.vue b/api-test/frontend/src/business/automation/scenario/EditApiScenario.vue
index 9c3ba680be..49a0a15df1 100644
--- a/api-test/frontend/src/business/automation/scenario/EditApiScenario.vue
+++ b/api-test/frontend/src/business/automation/scenario/EditApiScenario.vue
@@ -1524,7 +1524,7 @@ export default {
}
this.resetResourceId(item.hashTree, item.referenced);
item.enable === undefined ? (item.enable = true) : item.enable;
- item.mixEnable = item.mixEnable === undefined && !item.variableEnable ? true : item.mixEnable;
+ item.mixEnable = item.mixEnable === undefined && !item.variableEnable ? false : item.mixEnable;
if (this.selectedTreeNode) {
if (this.stepFilter.get('SpecialSteps').indexOf(this.selectedTreeNode.type) !== -1) {
this.scenarioDefinition.splice(this.selectedTreeNode.index, 0, item);