Compare commits

...

17 Commits

Author SHA1 Message Date
jiangweidong
b908f9193e feat: Host cloud sync supports state cloud 2025-10-23 09:48:14 +08:00
w940853815
b615e35e49 fix: Update help message rendering to use v-html for proper display 2025-10-22 14:59:55 +08:00
w940853815
cda282ac6b fix: Details page does not display labels. 2025-10-20 10:35:02 +08:00
w940853815
f2d44a2fd1 perf: Enhance email report success feedback with response message 2025-10-16 11:24:58 +08:00
w940853815
52f3ba012b perf: Hide vertical overflow in terminal display for improved UI 2025-10-16 10:11:32 +08:00
Chenyang Shen
d43e6a19bf Merge pull request #5236 from jumpserver/pr@dev@feat_add_tip_for_data_masking_form
feat: add fields tip for data masking form
2025-10-15 19:35:48 +08:00
Aaron3S
1f628e0d40 feat: add fields tip for data masking form 2025-10-15 19:33:47 +08:00
Chenyang Shen
9922a495eb Merge pull request #5235 from jumpserver/pr@dev@feat_update_column_show
feat: update data masking column show
2025-10-15 16:52:14 +08:00
Aaron3S
ae7549a00d feat: update data masking column show 2025-10-15 16:50:34 +08:00
Chenyang Shen
a5e870035e Merge pull request #5234 from jumpserver/pr@dev@feat_data_masking_license
feat: datamasking require license
2025-10-15 16:17:20 +08:00
Aaron3S
38f1ab3075 feat: datamasking require license 2025-10-15 16:15:10 +08:00
feng
c05248a1ab perf: Del remote account 2025-10-15 15:22:58 +08:00
w940853815
efacae517a perf: Add success message on successful update of system message subscription 2025-10-15 10:16:34 +08:00
Chenyang Shen
70b71a44d3 Merge pull request #5230 from jumpserver/pr@dev@feat_data_masking_detail
feat: add detail for data masking
2025-10-14 18:04:03 +08:00
Aaron3S
0ac220341e feat: add detail for data masking 2025-10-14 18:02:21 +08:00
w940853815
fc8fd2c8eb perf:Risk detection: When operating assets in batch, there is no prompt that the task is running 2025-10-14 16:49:39 +08:00
Chenyang Shen
f575eaafb6 Merge pull request #5228 from jumpserver/pr@dev@feat_change_some_translate
feat: change some translate
2025-10-14 16:05:06 +08:00
16 changed files with 42 additions and 35 deletions

View File

@@ -109,11 +109,6 @@ export default {
},
connectivity: connectivityMeta,
comment: { ...this.comment }
},
tableAttrs: {
rowClassName({ row }) {
return !row.is_active ? 'row_disabled' : ''
}
}
},
headerActions: {

View File

@@ -5,7 +5,7 @@
<div v-if="item.has !== false" :key="item.key" :class="item.class " :label="item.key" class="el-form-item">
<span slot="label" class="el-form-item__label"> {{ formateLabel(item.key) }}</span>
<span class="item-value el-form-item__content">
<template
<component
:is="item.component"
v-if="item.component"
v-bind="{...item}"

View File

@@ -176,7 +176,7 @@ export default [
name: 'DataMaskingRules',
meta: {
title: i18n.t('DataMasking'),
licenseRequired: false,
licenseRequired: true,
app: 'acls',
resource: 'datamaskingrule'
},
@@ -200,8 +200,8 @@ export default [
},
{
path: ':id',
name: 'AssetACLDetail',
component: () => import('@/views/acls/AssetLoginACL/AssetLoginAclDetail/index'),
name: 'DataMaskingRuleDetail',
component: () => import('@/views/acls/DataMaskingRule/DataMaskingRuleDetail/index'),
hidden: true,
meta: { title: i18n.t('AssetACLDetail'), activeMenu: '' }
},

View File

@@ -116,6 +116,7 @@ export default {
},
methods: {
handleConfirm() {
this.$message.warning(this.$tc('ProcessingMessage'))
const url = `/api/v1/accounts/gathered-accounts/${this.account.id}/`
this.$axios.delete(url, {
params: {

View File

@@ -141,9 +141,9 @@ export default {
},
async handleCommon(cmd, payload) {
let rows = this.rows
this.processing = true
if (this.rows.length === 0) {
rows = [this.row]
this.processing = true
}
if (!payload) {
payload = {}

View File

@@ -42,6 +42,9 @@ export default {
this.fieldsMeta.accounts.el.assets = ids || []
}
},
fields_pattern: {
helpTip: this.$t('DataMaskingFieldsPatternHelpTip')
},
mask_pattern: {
hidden: (formValue) => {
return !['fixed_char'].includes(formValue.masking_method)

View File

@@ -23,17 +23,9 @@ export default {
},
data() {
return {
url: `/api/v1/acls/login-asset-acls/${this.object.id}/`,
url: `/api/v1/acls/data-masking-rules/${this.object.id}/`,
detailFields: [
'name',
{
key: this.$t('Action'),
value: this.object.action.label
},
{
key: this.$t('Reviewer'),
value: this.object.reviewers.map(item => item.name).join(', ')
},
'name', 'fields_pattern', 'masking_method', 'mask_pattern',
'priority', 'date_created', 'created_by', 'comment'
]
}
@@ -42,6 +34,6 @@ export default {
}
</script>
<style lang='less' scoped>
<style lang="less" scoped>
</style>

View File

@@ -23,7 +23,7 @@ export default {
return {
instance: {},
config: {
url: `/api/v1/acls/login-asset-acls/`,
url: `/api/v1/acls/data-masking-rules/`,
activeMenu: 'Detail',
submenu: [
{

View File

@@ -14,7 +14,7 @@ export default {
helpMsg: this.$t('DataMaskingRuleHelpHelpMsg'),
tableConfig: {
url: '/api/v1/acls/data-masking-rules/',
columnsExclude: ['users', 'assets', 'accounts', 'rules'],
columnsExclude: ['users', 'assets', 'accounts', 'rules', 'reviewers', 'action'],
columnsShow: {
min: ['name', 'actions'],
default: [

View File

@@ -82,7 +82,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: []
},
@@ -126,7 +126,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)
@@ -142,10 +142,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() {

View File

@@ -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'],
image: require('@/assets/img/cloud/state.svg')
},
[vmware]: {
name: vmware,
title: 'VMware',

View File

@@ -557,7 +557,7 @@ $container-bg-color: #f7f7f7;
& ::v-deep .xterm {
height: calc(100% - 8px);
overflow-y: auto;
overflow-y: hidden;
}
}
}

View File

@@ -65,7 +65,13 @@ export default {
}
const days = this.getDaysParam()
this.$message.success(this.$t('EMailReport') + '...')
this.$axios.post(`/core/reports/send-mail/?chart=${this.name}&days=${days}`,).catch(error => {
this.$axios.post(`/core/reports/send-mail/?chart=${this.name}&days=${days}`,).then((res) => {
if (res.error) {
this.$message.error(res.error)
} else {
this.$message.success(res.message)
}
}).catch(error => {
this.$message.error(this.$t('Failed') + ': ' + error.message)
})
},

View File

@@ -1,7 +1,7 @@
<template>
<div>
<el-alert type="success">
<span v-sanitize="$t('AppletHostSelectHelpMessage')" />
<span v-html="$t('AppletHostSelectHelpMessage')" />
</el-alert>
<DrawerListTable
ref="table"

View File

@@ -93,7 +93,9 @@ export default {
this.$axios.patch(
`/api/v1/notifications/system-msg-subscription/${sub.id}/`,
{ receive_backends: backends }
).catch(err => {
).then(() => {
this.$message.success(this.$t('UpdateSuccessMsg'))
}).catch(err => {
this.$log.error(err)
})
},

View File

@@ -41,7 +41,6 @@ export default {
name: 'connect',
icon: 'fa-desktop',
type: 'primary',
plain: true,
can: ({ row }) => row.is_active,
callback: ({ row }) => {
const oid = this.$store.getters.currentOrg ? this.$store.getters.currentOrg.id : ''