diff --git a/package.json b/package.json
index 07192b2d9..741b556af 100644
--- a/package.json
+++ b/package.json
@@ -140,5 +140,6 @@
"src/**/*.{js,vue}": [
"eslint --fix"
]
- }
+ },
+ "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
}
diff --git a/src/components/Apps/AccountListTable/ViewSecret.vue b/src/components/Apps/AccountListTable/ViewSecret.vue
index e999ff9dc..d57b0cae2 100644
--- a/src/components/Apps/AccountListTable/ViewSecret.vue
+++ b/src/components/Apps/AccountListTable/ViewSecret.vue
@@ -62,6 +62,7 @@ import Dialog from '@/components/Dialog/index.vue'
import PasswordHistoryDialog from './PasswordHistoryDialog.vue'
import { SecretViewerFormatter } from '@/components/Table/TableFormatters'
import { encryptPassword } from '@/utils/secure'
+import { mapGetters } from 'vuex'
export default {
name: 'ShowSecretInfo',
@@ -111,6 +112,9 @@ export default {
}
},
computed: {
+ ...mapGetters({
+ publicSettings: 'publicSettings'
+ }),
secretTypeLabel() {
return this.account['secret_type'].label || 'Password'
},
@@ -146,7 +150,11 @@ export default {
})
},
showSecretDialog() {
- return this.$axios.get(this.url, { disableFlashErrorMsg: true }).then((res) => {
+ if (!this.publicSettings.SECURITY_ACCOUNT_SECRET_READ) {
+ this.$message.warning(this.$tc('AccountSecretReadDisabled'))
+ return
+ }
+ return this.$axios.get(this.url).then((res) => {
this.secretInfo = res
this.sshKeyFingerprint = res?.spec_info?.ssh_key_fingerprint || '-'
this.showSecret = true
@@ -167,54 +175,54 @@ export default {
diff --git a/src/components/Table/TableFormatters/SecretViewerFormatter.vue b/src/components/Table/TableFormatters/SecretViewerFormatter.vue
index c469ed02f..d061e7cd6 100644
--- a/src/components/Table/TableFormatters/SecretViewerFormatter.vue
+++ b/src/components/Table/TableFormatters/SecretViewerFormatter.vue
@@ -38,6 +38,7 @@
diff --git a/src/icons/svg/access-token.svg b/src/icons/svg/access-token.svg
new file mode 100644
index 000000000..03402c68d
--- /dev/null
+++ b/src/icons/svg/access-token.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/router/profile/index.js b/src/router/profile/index.js
index 6070c084b..676b0b03e 100644
--- a/src/router/profile/index.js
+++ b/src/router/profile/index.js
@@ -123,6 +123,16 @@ export default {
permissions: ['authentication.view_connectiontoken']
}
},
+ {
+ path: '/profile/access-token',
+ component: () => import('@/views/profile/AccessToken'),
+ name: 'AccessToken',
+ meta: {
+ title: i18n.t('AccessToken'),
+ icon: 'access-token',
+ permissions: ['oauth2_provider.view_accesstoken']
+ }
+ },
{
path: '/profile/preferences',
name: 'Preferences',
diff --git a/src/views/accounts/Automation/BaseExecutionList.vue b/src/views/accounts/Automation/BaseExecutionList.vue
index d500f4787..0607cdd33 100644
--- a/src/views/accounts/Automation/BaseExecutionList.vue
+++ b/src/views/accounts/Automation/BaseExecutionList.vue
@@ -137,8 +137,8 @@ export default {
getUrlQuery: true,
options: [
{
- label: this.$t('TaskID'),
- value: 'automation_id'
+ label: this.$t('ID'),
+ value: 'id'
},
{
label: this.$t('DisplayName'),
diff --git a/src/views/assets/Asset/AssetDetail/Detail.vue b/src/views/assets/Asset/AssetDetail/Detail.vue
index a009b30b4..c4a68748c 100644
--- a/src/views/assets/Asset/AssetDetail/Detail.vue
+++ b/src/views/assets/Asset/AssetDetail/Detail.vue
@@ -61,8 +61,11 @@ export default {
},
callbacks: {
change: function(val) {
+ const category = this.object.category.value
+ const normalizedCategory =
+ category === 'ds' ? 'directorie' : category
this.$axios.patch(
- `/api/v1/assets/assets/${this.object.id}/`,
+ `/api/v1/assets/${normalizedCategory}s/${this.object.id}/`,
{ is_active: val }
).then(res => {
this.$message.success(this.$tc('UpdateSuccessMsg'))
diff --git a/src/views/assets/Cloud/Account/components/AssetPanel.vue b/src/views/assets/Cloud/Account/components/AssetPanel.vue
index edf8872cc..3953c0b47 100644
--- a/src/views/assets/Cloud/Account/components/AssetPanel.vue
+++ b/src/views/assets/Cloud/Account/components/AssetPanel.vue
@@ -77,7 +77,7 @@ export default {
[this.$tc('Platform'), 'platform'],
[this.$tc('Node'), 'node'],
[this.$tc('Protocol'), 'protocols'],
- [this.$tc('Region'), 'region_id']
+ [this.$tc('Region'), 'region_name']
],
data: []
},
@@ -124,7 +124,7 @@ export default {
this.ws.onmessage = e => {
const data = JSON.parse(e.data)
if (data.action === 'sync_region') {
- this.addRegion(data.region_id)
+ this.addRegion(data.id, data.name)
} else if (data.action === 'import') {
data['@status'] = 'pending'
this.$refs.importTable.addTableItem(data)
@@ -140,10 +140,10 @@ export default {
}
}
},
- addRegion(region) {
- if (!this.alreadySync.includes(region)) {
- this.alreadySync.push(region)
- this.tip = `${this.$t('SyncRegion')}: ${this.alreadySync.at(-1)}`
+ addRegion(regionId, regionName) {
+ if (!this.alreadySync.includes(regionId)) {
+ this.alreadySync.push(regionId)
+ this.tip = `${this.$t('SyncRegion')}: ${regionName}`
}
},
showResult() {
diff --git a/src/views/assets/Cloud/const.js b/src/views/assets/Cloud/const.js
index 927ca2aef..fc8bd621e 100644
--- a/src/views/assets/Cloud/const.js
+++ b/src/views/assets/Cloud/const.js
@@ -17,6 +17,8 @@ export const ucloud = 'ucloud'
export const volcengine = 'volcengine'
+export const ctyun = 'ctyun'
+
export const qingcloud_private = 'qingcloud_private'
export const huaweicloud_private = 'huaweicloud_private'
export const ctyun_private = 'ctyun_private'
@@ -46,7 +48,8 @@ export const publicHostProviders = [
gcp,
ucloud,
volcengine,
- smartx
+ smartx,
+ ctyun
]
export const publicDBProviders = [aliyun]
@@ -141,6 +144,12 @@ export const ACCOUNT_PROVIDER_ATTRS_MAP = {
attrs: ['access_key_id', 'access_key_secret'],
image: require('@/assets/img/cloud/volcengine.svg')
},
+ [ctyun]: {
+ name: ctyun,
+ title: i18n.t('CTYun'),
+ attrs: ['access_key_id', 'access_key_secret', 'project_id'],
+ image: require('@/assets/img/cloud/state.svg')
+ },
[vmware]: {
name: vmware,
title: 'VMware',
diff --git a/src/views/perms/const.js b/src/views/perms/const.js
index 2d0cce55d..e391e2a4b 100644
--- a/src/views/perms/const.js
+++ b/src/views/perms/const.js
@@ -8,7 +8,6 @@ export const UserAssetPermissionListPageSearchConfigOptions = [
{ label: i18n.t('UserGroups'), value: 'user_group' },
{ label: i18n.t('AssetName'), value: 'asset_name' },
{ label: i18n.t('AssetAddress'), value: 'address' },
- { label: i18n.t('Account'), value: 'accounts' },
{
label: i18n.t('Valid'),
value: 'is_valid',
diff --git a/src/views/profile/AccessToken.vue b/src/views/profile/AccessToken.vue
new file mode 100644
index 000000000..f5f30b606
--- /dev/null
+++ b/src/views/profile/AccessToken.vue
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
diff --git a/src/views/settings/Applet/AppletHost/AppletHostDetail/Accounts.vue b/src/views/settings/Applet/AppletHost/AppletHostDetail/Accounts.vue
index 70a9be13a..e895d7a29 100644
--- a/src/views/settings/Applet/AppletHost/AppletHostDetail/Accounts.vue
+++ b/src/views/settings/Applet/AppletHost/AppletHostDetail/Accounts.vue
@@ -1,36 +1,41 @@
-
+
+
+
+
+
+
+
+