This is an automated email from the ASF dual-hosted git repository.
benjobs pushed a commit to branch dev-2.1.5
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git
The following commit(s) were added to refs/heads/dev-2.1.5 by this push:
new 351f599ec [Improve] token status improvement
351f599ec is described below
commit 351f599ecfc4607dfb0f19ed98b4b13410ca4fc8
Author: benjobs <[email protected]>
AuthorDate: Sat Jul 27 00:38:16 2024 +0800
[Improve] token status improvement
---
.../console/core/controller/OpenAPIController.java | 3 ++-
.../console/core/enums/AccessTokenState.java | 9 ++++++---
.../console/system/authentication/ShiroRealm.java | 11 +++++++++--
.../system/controller/AccessTokenController.java | 19 ++++++++-----------
.../console/system/entity/AccessToken.java | 3 ---
.../console/system/service/AccessTokenService.java | 2 --
.../service/impl/AccessTokenServiceImpl.java | 6 ------
.../streampark-console-webapp/src/api/index.ts | 9 ++++-----
.../src/api/system/token.ts | 9 ---------
.../src/locales/lang/en/flink/app.ts | 3 ++-
.../src/locales/lang/zh-CN/flink/app.ts | 5 +++--
.../src/views/flink/app/Detail.vue | 22 ++--------------------
.../flink/app/components/RequestModal/index.tsx | 18 +++++++++++-------
.../src/views/system/token/token.data.ts | 7 +++----
14 files changed, 50 insertions(+), 76 deletions(-)
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/OpenAPIController.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/OpenAPIController.java
index 613d8c379..6cf591dcd 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/OpenAPIController.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/OpenAPIController.java
@@ -34,6 +34,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
@Validated
@RestController
@@ -142,7 +143,7 @@ public class OpenAPIController {
public RestResponse copyOpenApiCurl(
String baseUrl,
Long appId,
- @NotBlank(message = "{required}") Long teamId,
+ @NotNull(message = "{required}") Long teamId,
@NotBlank(message = "{required}") String name) {
String url = openAPIComponent.getOpenApiCUrl(baseUrl, appId, teamId, name);
return RestResponse.success(url);
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/enums/AccessTokenState.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/enums/AccessTokenState.java
index 21fb347d7..b03c6e917 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/enums/AccessTokenState.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/enums/AccessTokenState.java
@@ -25,10 +25,13 @@ public enum AccessTokenState implements Serializable {
NULL(0),
/** invalid token */
- INVALID(1),
+ INVALID_TOKEN(1),
- /** effect token */
- OK(2);
+ /** locked user */
+ LOCKED_USER(2),
+
+ /** ok */
+ OK(3);
private final int value;
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/ShiroRealm.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/ShiroRealm.java
index a654d9b39..d4bdaae3e 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/ShiroRealm.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/ShiroRealm.java
@@ -101,10 +101,17 @@ public class ShiroRealm extends AuthorizingRealm {
||
!accessToken.getToken().equals(WebUtils.encryptToken(credential))) {
throw new AuthenticationException("the openapi authorization token is
invalid");
}
- if (AccessToken.STATUS_DISABLE.equals(accessToken.getFinalStatus())) {
+
+ if (AccessToken.STATUS_DISABLE.equals(accessToken.getStatus())) {
throw new AuthenticationException(
- "the openapi authorization token has been disabled, please contact
the administrator");
+ "the openapi authorization token is disabled, please contact the
administrator");
}
+
+ if (User.STATUS_LOCK.equals(accessToken.getUserStatus())) {
+ throw new AuthenticationException(
+ "the user [" + username + "] has been locked, please contact the
administrator");
+ }
+
SecurityUtils.getSubject().getSession().setAttribute(AccessToken.IS_API_TOKEN,
true);
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/AccessTokenController.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/AccessTokenController.java
index 07830c502..331289e24 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/AccessTokenController.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/AccessTokenController.java
@@ -25,6 +25,7 @@ import
org.apache.streampark.console.core.annotation.PermissionScope;
import org.apache.streampark.console.core.enums.AccessTokenState;
import org.apache.streampark.console.core.service.ServiceHelper;
import org.apache.streampark.console.system.entity.AccessToken;
+import org.apache.streampark.console.system.entity.User;
import org.apache.streampark.console.system.service.AccessTokenService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -62,17 +63,13 @@ public class AccessTokenController {
public RestResponse verifyToken() {
Long userId = serviceHelper.getUserId();
RestResponse restResponse = RestResponse.success();
- if (userId != null) {
- AccessToken accessToken = accessTokenService.getByUserId(userId);
- if (accessToken == null) {
- restResponse.data(AccessTokenState.NULL.get());
- } else if
(AccessToken.STATUS_DISABLE.equals(accessToken.getFinalStatus())) {
- restResponse.data(AccessTokenState.INVALID.get());
- } else {
- restResponse.data(AccessTokenState.OK.get());
- }
- } else {
- restResponse.data(AccessTokenState.INVALID.get());
+ AccessToken accessToken = accessTokenService.getByUserId(userId);
+ if (accessToken == null) {
+ restResponse.data(AccessTokenState.NULL.get());
+ } else if (AccessToken.STATUS_DISABLE.equals(accessToken.getStatus())) {
+ restResponse.data(AccessTokenState.INVALID_TOKEN.get());
+ } else if (User.STATUS_LOCK.equals(accessToken.getUserStatus())) {
+ restResponse.data(AccessTokenState.LOCKED_USER.get());
}
return restResponse;
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/entity/AccessToken.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/entity/AccessToken.java
index 711394fec..2db73775e 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/entity/AccessToken.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/entity/AccessToken.java
@@ -63,9 +63,6 @@ public class AccessToken implements Serializable {
private transient String userStatus;
- /** token final status, 1: available, 0: unavailable */
- private transient Integer finalStatus;
-
public AccessToken setStatus(Integer status) {
this.status = status;
return this;
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/AccessTokenService.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/AccessTokenService.java
index f076c8f29..6bd7ed988 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/AccessTokenService.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/AccessTokenService.java
@@ -33,8 +33,6 @@ public interface AccessTokenService extends
IService<AccessToken> {
IPage<AccessToken> page(AccessToken tokenParam, RestRequest request);
- boolean checkTokenEffective(Long userId, String token);
-
RestResponse toggleToken(Long tokenId);
AccessToken getByUserId(Long userId);
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/AccessTokenServiceImpl.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/AccessTokenServiceImpl.java
index 7b33def30..a682881ef 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/AccessTokenServiceImpl.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/AccessTokenServiceImpl.java
@@ -91,12 +91,6 @@ public class AccessTokenServiceImpl extends
ServiceImpl<AccessTokenMapper, Acces
return page;
}
- @Override
- public boolean checkTokenEffective(Long userId, String token) {
- AccessToken res = baseMapper.getByUserToken(userId, token);
- return res != null &&
AccessToken.STATUS_ENABLE.equals(res.getFinalStatus());
- }
-
@Override
public RestResponse toggleToken(Long tokenId) {
AccessToken tokenInfo = baseMapper.getById(tokenId);
diff --git a/streampark-console/streampark-console-webapp/src/api/index.ts
b/streampark-console/streampark-console-webapp/src/api/index.ts
index ec297e6d0..be0e995b0 100644
--- a/streampark-console/streampark-console-webapp/src/api/index.ts
+++ b/streampark-console/streampark-console-webapp/src/api/index.ts
@@ -14,12 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+import * as process from 'node:process';
+
export function baseUrl() {
- if (import.meta.env.VITE_APP_ENV) {
+ if (process.env.NODE_ENV === 'production') {
return `${location.protocol}//${location.host}`;
}
-
- const baseApi = import.meta.env.VITE_GLOB_API_URL;
-
- return baseApi ? baseApi : '';
+ return '';
}
diff --git
a/streampark-console/streampark-console-webapp/src/api/system/token.ts
b/streampark-console/streampark-console-webapp/src/api/system/token.ts
index a94fc9655..6478191e5 100644
--- a/streampark-console/streampark-console-webapp/src/api/system/token.ts
+++ b/streampark-console/streampark-console-webapp/src/api/system/token.ts
@@ -24,7 +24,6 @@ enum Api {
AddToken = '/token/create',
DeleteToken = '/token/delete',
CHECK = 'token/check',
- CURL = '/token/curl',
}
/**
* get token list
@@ -69,11 +68,3 @@ export function fetchTokenDelete(data?: { tokenId: string })
{
export function fetchCheckToken(data) {
return defHttp.post<number>({ url: Api.CHECK, data });
}
-/**
- * copyCurl
- * @param data
- * @returns {Promise<string>}
- */
-export function fetchCopyCurl(data): Promise<string> {
- return defHttp.post<string>({ url: Api.CURL, data });
-}
diff --git
a/streampark-console/streampark-console-webapp/src/locales/lang/en/flink/app.ts
b/streampark-console/streampark-console-webapp/src/locales/lang/en/flink/app.ts
index 070f8be4b..a27980aa5 100644
---
a/streampark-console/streampark-console-webapp/src/locales/lang/en/flink/app.ts
+++
b/streampark-console/streampark-console-webapp/src/locales/lang/en/flink/app.ts
@@ -125,7 +125,8 @@ export default {
copyCancelcURL: 'App Cancel',
apiDocCenter: 'Api Doc Center',
nullAccessToken: 'access token is null,please contact the administrator to
add.',
- invalidAccessToken: 'access token is invalid,please contact the
administrator.',
+ invalidAccessToken: 'access token is invalid, please contact the
administrator.',
+ invalidTokenUser: 'current user is locked, please contact the
administrator ',
detailTab: {
detailTabName: {
option: 'Option',
diff --git
a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/flink/app.ts
b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/flink/app.ts
index 5f59c6636..add603d16 100644
---
a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/flink/app.ts
+++
b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/flink/app.ts
@@ -114,8 +114,9 @@ export default {
copyStartcURL: '作业启动',
copyCancelcURL: '作业停止',
apiDocCenter: 'Api文档',
- nullAccessToken: '访问令牌为空,请联系管理员添加.',
- invalidAccessToken: '访问令牌无效,请联系管理员。',
+ nullAccessToken: '访问令牌为空,请联系管理员添加',
+ invalidAccessToken: '访问令牌无效,请联系管理员',
+ invalidTokenUser: '当前用户已被锁定,请联系管理员',
detailTab: {
detailTabName: {
option: '选项',
diff --git
a/streampark-console/streampark-console-webapp/src/views/flink/app/Detail.vue
b/streampark-console/streampark-console-webapp/src/views/flink/app/Detail.vue
index 376557698..421ad026a 100644
---
a/streampark-console/streampark-console-webapp/src/views/flink/app/Detail.vue
+++
b/streampark-console/streampark-console-webapp/src/views/flink/app/Detail.vue
@@ -102,24 +102,6 @@
},
() => [t('flink.app.detail.copyCancelcURL')],
),
- h(
- Button,
- {
- type: 'link',
- shape: 'round',
- class: 'mx-3px px-5px',
- onClick: () => {
- openApiModal(true, {
- name: 'flinkCancel',
- app,
- });
- },
- },
- () => [
- h(Icon, { icon: 'ant-design:link-outlined' }),
- t('flink.app.detail.apiDocCenter'),
- ],
- ),
],
},
],
@@ -158,9 +140,9 @@
ExecModeEnum.YARN_APPLICATION,
].includes(res.executionMode)
) {
- handleYarn();
+ await handleYarn();
}
- handleDetailTabs();
+ await handleDetailTabs();
}
Object.assign(app, res);
}
diff --git
a/streampark-console/streampark-console-webapp/src/views/flink/app/components/RequestModal/index.tsx
b/streampark-console/streampark-console-webapp/src/views/flink/app/components/RequestModal/index.tsx
index a065b773f..2252d49fe 100644
---
a/streampark-console/streampark-console-webapp/src/views/flink/app/components/RequestModal/index.tsx
+++
b/streampark-console/streampark-console-webapp/src/views/flink/app/components/RequestModal/index.tsx
@@ -30,7 +30,7 @@ export default defineComponent({
emits: ['register'],
setup() {
const currentRef = ref<Recordable>({});
- const [registerModal, { closeModal, changeOkLoading }] =
useModalInner(async (data) => {
+ const [registerModal, { changeOkLoading }] = useModalInner(async (data) =>
{
currentRef.value = data;
});
const { Swal, createMessage } = useMessage();
@@ -48,14 +48,18 @@ export default defineComponent({
icon: 'error',
title: t('flink.app.detail.nullAccessToken'),
showConfirmButton: true,
- timer: 3500,
});
} else if (result === 1) {
Swal.fire({
icon: 'error',
title: t('flink.app.detail.invalidAccessToken'),
showConfirmButton: true,
- timer: 3500,
+ });
+ } else if (result === 2) {
+ Swal.fire({
+ icon: 'error',
+ title: t('flink.app.detail.invalidTokenUser'),
+ showConfirmButton: true,
});
} else {
const res = await fetchCopyCurl({
@@ -63,9 +67,8 @@ export default defineComponent({
appId: currentRef.value.app.id,
name: currentRef.value.name,
});
- copy(res);
+ await copy(res);
createMessage.success(t('flink.app.detail.detailTab.copySuccess'));
- closeModal();
}
} catch (error) {
console.log(error);
@@ -76,9 +79,10 @@ export default defineComponent({
return () => (
<>
<BasicModal
- width={900}
+ width={800}
onRegister={registerModal}
- minHeight={400}
+ minHeight={500}
+ showCancelBtn={false}
okText={t('flink.app.detail.copyCurl')}
onOk={handleCopyCurl}
v-slots={{
diff --git
a/streampark-console/streampark-console-webapp/src/views/system/token/token.data.ts
b/streampark-console/streampark-console-webapp/src/views/system/token/token.data.ts
index 1d1918e00..a7f9d26b3 100644
---
a/streampark-console/streampark-console-webapp/src/views/system/token/token.data.ts
+++
b/streampark-console/streampark-console-webapp/src/views/system/token/token.data.ts
@@ -52,14 +52,14 @@ export const columns: BasicColumn[] = [
},
{
title: t('system.token.table.status'),
- dataIndex: 'userStatus',
+ dataIndex: 'finalStatus',
width: 100,
customRender: ({ record }) => {
if (!Reflect.has(record, 'pendingStatus')) {
record.pendingStatus = false;
}
return h(Switch, {
- checked: record.userStatus === StatusEnum.On,
+ checked: record.status == StatusEnum.On,
checkedChildren: 'on',
unCheckedChildren: 'off',
loading: record.pendingStatus,
@@ -67,10 +67,9 @@ export const columns: BasicColumn[] = [
record.pendingStatus = true;
const newStatus = checked ? StatusEnum.On : StatusEnum.Off;
const { createMessage } = useMessage();
-
fetTokenStatusToggle({ tokenId: record.id })
.then(() => {
- record.userStatus = newStatus;
+ record.status = newStatus;
createMessage.success(`success`);
})
.finally(() => {