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 @@