diff --git a/apps/vben5/packages/@abp/openiddict/src/components/applications/ApplicationSecretModal.vue b/apps/vben5/packages/@abp/openiddict/src/components/applications/ApplicationSecretModal.vue
new file mode 100644
index 000000000..f8332a6bc
--- /dev/null
+++ b/apps/vben5/packages/@abp/openiddict/src/components/applications/ApplicationSecretModal.vue
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
diff --git a/apps/vben5/packages/@abp/openiddict/src/components/applications/ApplicationTable.vue b/apps/vben5/packages/@abp/openiddict/src/components/applications/ApplicationTable.vue
index 7940f0d70..93ca585da 100644
--- a/apps/vben5/packages/@abp/openiddict/src/components/applications/ApplicationTable.vue
+++ b/apps/vben5/packages/@abp/openiddict/src/components/applications/ApplicationTable.vue
@@ -31,6 +31,7 @@ defineOptions({
const MenuItem = Menu.Item;
const CheckIcon = createIconifyIcon('ant-design:check-outlined');
const CloseIcon = createIconifyIcon('ant-design:close-outlined');
+const SecretIcon = createIconifyIcon('codicon:gist-secret');
const PermissionsOutlined = createIconifyIcon('icon-park-outline:permissions');
const { hasAccessByCodes } = useAccess();
@@ -138,6 +139,11 @@ const [ApplicationModal, modalApi] = useVbenModal({
() => import('./ApplicationModal.vue'),
),
});
+const [ApplicationSecretModal, secretModalApi] = useVbenModal({
+ connectedComponent: defineAsyncComponent(
+ () => import('./ApplicationSecretModal.vue'),
+ ),
+});
const [ApplicationPermissionModal, permissionModalApi] = useVbenModal({
connectedComponent: PermissionModal,
});
@@ -182,6 +188,11 @@ const onMenuClick = (row: OpenIddictApplicationDto, info: MenuInfo) => {
permissionModalApi.open();
break;
}
+ case 'secret': {
+ secretModalApi.setData(row);
+ secretModalApi.open();
+ break;
+ }
}
};
@@ -239,6 +250,16 @@ const onMenuClick = (row: OpenIddictApplicationDto, info: MenuInfo) => {