Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v3.10.4 (branch-v3.10) #3761

Merged
merged 63 commits into from
Feb 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
0d1eb82
perf: The cron interval execution must be greater than 10 minutes
w940853815 Jan 16, 2024
6938299
perf: 会话详情添加文件传输;操作日志默认显示动作、资源类型
huailei000 Jan 18, 2024
96a3f0a
fix: 网关列表资产数量点击详情中没有资产
w940853815 Jan 18, 2024
1e9107e
perf: 兼容luna显示智能问答
huailei000 Dec 26, 2023
05c2f1f
perf: 快捷命令toolbar增加折叠功能
huailei000 Jan 19, 2024
20d98bf
perf: 优化更多操作高度;优化快捷命令右侧图标;优化账号管理列表-定期执行在中、英文状态下的宽度
huailei000 Jan 18, 2024
2084c50
perf: 资产授权弹窗选择时点击遮罩退出问题
Halo1236 Jan 20, 2024
6cbcee7
perf: 指定账号enter异常刷新整个页面
Halo1236 Jan 20, 2024
1bba998
perf: 翻译
feng626 Jan 25, 2024
5f9e9af
Merge pull request #3709 from jumpserver/pr@dev@translate
feng626 Jan 25, 2024
fcf1093
perf: 安全模式返回授权的资产
w940853815 Jan 24, 2024
7dd5256
perf: 用户详情 - 授权资产减少默认字段
w940853815 Jan 22, 2024
ce80d36
feat: 批量测试账号可连接性
feng626 Jan 29, 2024
aca4e40
feat: 账号模版可导入导出
feng626 Jan 29, 2024
2573659
Merge pull request #3710 from jumpserver/pr@dev@account_bulk_test
feng626 Jan 29, 2024
045af27
Merge pull request #3711 from jumpserver/pr@dev@account_template
feng626 Jan 29, 2024
ff63d2c
perf: 优化快捷命令输出框跟随浏览器高度
huailei000 Jan 22, 2024
ea575e0
perf: 优化数量显示,异步获取 hover 的内容
ibuler Jan 22, 2024
245b3f4
perf: 资源详情页面标题长度超过一行则省略表示
O-Jiangweidong Jan 24, 2024
ca3b0cf
perf: crontab修改提示翻译
w940853815 Jan 30, 2024
9e0c435
perf: 优化首页日期 tab 按钮的颜色
ibuler Jan 29, 2024
e1e54bf
fix: 控制台,审计台仪表盘图表显示不对
w940853815 Jan 31, 2024
5879eed
perf: 优化用户session 会话过期
feng626 Jan 31, 2024
f9e9438
perf: 【模版账号】创建/更新 模版账号表单中,希望增加上传密钥按钮
feng626 Feb 2, 2024
383577b
Merge pull request #3721 from jumpserver/pr@dev@ssh_key
feng626 Feb 2, 2024
931042e
perf: 国际电话区号选项从api返回
w940853815 Feb 4, 2024
5e12255
perf: 改密推送 选择资产支持标签搜索
feng626 Feb 4, 2024
beb8ace
Merge pull request #3723 from jumpserver/pr@dev@asset_select
feng626 Feb 4, 2024
2a92c76
perf: 支持账号批量更新功能 (#3717)
O-Jiangweidong Feb 4, 2024
ba109da
perf: 禁止用户自身更新自己的某些属性
w940853815 Feb 1, 2024
3b4201d
perf: 修改翻译
w940853815 Feb 5, 2024
527cc4d
fix: 修复用户登录403的问题(DEFAULT组织由后端进行设置)
BaiJiangJie Feb 5, 2024
3ff6c6f
fix: 导出下载更新模版用不同的action 去对应后台serializer
feng626 Feb 5, 2024
454947f
perf: 支持改密日志记录保留天数
w940853815 Feb 5, 2024
ecb1e91
fix: Web资产选择器需跟平台的参数适配
w940853815 Feb 5, 2024
3f683b0
perf: 修改 ai chat 的位置
ibuler Feb 6, 2024
dadb540
perf: 会话活动日志
LeeEirc Jan 19, 2024
bf3c875
perf: 授权用户列表显示角色
feng626 Feb 19, 2024
dced020
Merge pull request #3734 from jumpserver/pr@dev@perm_user
feng626 Feb 19, 2024
ed4f8de
perf: 终断批量快捷命令执行的任务
w940853815 Feb 19, 2024
152f56b
perf: 账号收集添加资产名称模糊搜索
feng626 Feb 20, 2024
fadc3e7
Merge pull request #3736 from jumpserver/pr@dev@account
feng626 Feb 20, 2024
41d0615
feat: 支持工单链接直接免密审批
O-Jiangweidong Feb 19, 2024
dc8f237
fix: 类别、类型排序无效
w940853815 Feb 21, 2024
9d999a7
fix: LDAP用户导入会超时
w940853815 Feb 22, 2024
8f246c1
perf: 作业日志添加任务类型
w940853815 Feb 26, 2024
8fa31fe
fix: 跳转到 luna 组织不对
feng626 Feb 26, 2024
88a6c2b
perf: Default组织下,标签关联用户资源,去掉组件用户
feng626 Feb 26, 2024
f014fc6
Merge pull request #3748 from jumpserver/pr@dev@user_group
feng626 Feb 26, 2024
52e121c
perf: 禁用redis/clickhouse测试可连接性按钮
w940853815 Feb 22, 2024
df8a464
fix: Web资产的选择器未根据平台参数联动
w940853815 Feb 26, 2024
16adcd2
perf: 平台参数联动逻辑优化
w940853815 Feb 26, 2024
da570e2
Merge pull request #3747 from jumpserver/pr@dev@luna
feng626 Feb 27, 2024
2fe6cb3
fix: 【资产列表】资产详情中推送账号,推送参数未获取平台的参数
feng626 Feb 27, 2024
1ee9e5d
Merge pull request #3751 from jumpserver/pr@dev@push_account
feng626 Feb 27, 2024
b35b5bd
fix: 远程应用账号列表排版问题
w940853815 Feb 27, 2024
55dfa58
perf: 终断任务按钮状态变化优化
w940853815 Feb 27, 2024
d9a9c7e
fix: 平台中的改密参数和推送参数没了
feng626 Feb 28, 2024
b44af12
Merge pull request #3756 from jumpserver/pr@dev@push_params
feng626 Feb 28, 2024
046870e
fix: 隐藏停止任务按钮
w940853815 Feb 28, 2024
1c69c61
fix: 修复文件传输权限位
BaiJiangJie Feb 29, 2024
1ff65a2
fix: sftp会话详情禁用监控按钮
w940853815 Feb 29, 2024
4bfbbba
Merge pull request #3760 from jumpserver/dev
BaiJiangJie Feb 29, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
"crypto-js": "^4.1.1",
"css-color-function": "^1.3.3",
"deepmerge": "^4.2.2",
"echarts": "^4.7.0",
"echarts": "4.7.0",
"element-ui": "2.13.2",
"eslint-plugin-html": "^6.0.0",
"highlight.js": "^11.9.0",
Expand Down
3 changes: 3 additions & 0 deletions public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
if(pathname.indexOf('/ui') === -1) {
window.location.href = window.location.origin + '/ui/#' + pathname
}
if (pathname.startsWith('/ui/#/chat')) {
window.location.href = window.location.origin + pathname
}
}
</script>
<div id="app"></div>
Expand Down
9 changes: 9 additions & 0 deletions src/api/ops.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,14 @@ export function createJob(form) {
})
}

export function StopJob(form) {
return request({
url: '/api/v1/ops/job-executions/stop/',
method: 'post',
data: form
})
}

export function JobUploadFile(form) {
return request({
url: '/api/v1/ops/jobs/upload/',
Expand All @@ -62,3 +70,4 @@ export function JobUploadFile(form) {
data: form
})
}

192 changes: 192 additions & 0 deletions src/components/Apps/AccountCreateUpdateForm/const.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
import { UpdateToken, UploadSecret } from '@/components/Form/FormFields'
import Select2 from '@/components/Form/FormFields/Select2.vue'
import AssetSelect from '@/components/Apps/AssetSelect/index.vue'
import { Required, RequiredChange } from '@/components/Form/DataForm/rules'
import AutomationParamsForm from '@/views/assets/Platform/AutomationParamsSetting.vue'

export const accountFieldsMeta = (vm) => {
const defaultPrivilegedAccounts = ['root', 'administrator']
return {
assets: {
rules: [Required],
component: AssetSelect,
label: vm.$t('assets.Asset'),
el: {
multiple: false
},
hidden: () => {
return vm.platform || vm.asset
}
},
template: {
component: Select2,
rules: [Required],
el: {
multiple: false,
ajax: {
url: '/api/v1/accounts/account-templates/',
transformOption: (item) => {
return { label: item.name, value: item.id }
}
}
},
hidden: () => {
return vm.platform || vm.asset || !vm.addTemplate
}
},
on_invalid: {
rules: [Required],
label: vm.$t('accounts.AccountPolicy'),
helpText: vm.$t('accounts.BulkCreateStrategy'),
hidden: () => {
return vm.platform || vm.asset
}
},
name: {
label: vm.$t('common.Name'),
rules: [RequiredChange],
on: {
input: ([value], updateForm) => {
if (!vm.usernameChanged) {
if (!vm.account?.name) {
updateForm({ username: value })
}
const maybePrivileged = defaultPrivilegedAccounts.includes(value)
if (maybePrivileged) {
updateForm({ privileged: true })
}
}
}
},
hidden: () => {
return vm.addTemplate
}
},
username: {
el: {
disabled: !!vm.account?.name
},
on: {
input: ([value], updateForm) => {
vm.usernameChanged = true
},
change: ([value], updateForm) => {
const maybePrivileged = defaultPrivilegedAccounts.includes(value)
if (maybePrivileged) {
updateForm({ privileged: true })
}
}
},
hidden: () => {
return vm.addTemplate
}
},
privileged: {
label: vm.$t('assets.Privileged'),
hidden: () => {
return vm.addTemplate
}
},
su_from: {
component: Select2,
hidden: (formValue) => {
return !vm.asset?.id || !vm.iPlatform.su_enabled
},
el: {
multiple: false,
clearable: true,
ajax: {
url: `/api/v1/accounts/accounts/su-from-accounts/?account=${vm.account?.id || ''}&asset=${vm.asset?.id || ''}`,
transformOption: (item) => {
return { label: `${item.name}(${item.username})`, value: item.id }
}
}
}
},
su_from_username: {
label: vm.$t('assets.UserSwitchFrom'),
hidden: (formValue) => {
return vm.platform || vm.asset || vm.addTemplate
}
},
password: {
label: vm.$t('assets.Password'),
component: UpdateToken,
hidden: (formValue) => {
console.log('formValue: ', formValue)
return formValue.secret_type !== 'password' || vm.addTemplate
}
},
ssh_key: {
label: vm.$t('assets.PrivateKey'),
component: UploadSecret,
hidden: (formValue) => formValue.secret_type !== 'ssh_key' || vm.addTemplate
},
passphrase: {
label: vm.$t('assets.Passphrase'),
component: UpdateToken,
hidden: (formValue) => formValue.secret_type !== 'ssh_key' || vm.addTemplate
},
token: {
label: vm.$t('assets.Token'),
component: UploadSecret,
hidden: (formValue) => formValue.secret_type !== 'token' || vm.addTemplate
},
access_key: {
id: 'access_key',
label: vm.$t('assets.AccessKey'),
component: UploadSecret,
hidden: (formValue) => formValue.secret_type !== 'access_key' || vm.addTemplate
},
api_key: {
id: 'api_key',
label: vm.$t('assets.ApiKey'),
component: UploadSecret,
hidden: (formValue) => formValue.secret_type !== 'api_key' || vm.addTemplate
},
secret_type: {
type: 'radio-group',
options: [],
hidden: () => {
return vm.addTemplate
}
},
push_now: {
helpText: vm.$t('accounts.AccountPush.WindowsPushHelpText'),
hidden: (formValue) => {
const automation = vm.iPlatform.automation || {}
return !automation.push_account_enabled ||
!automation.ansible_enabled ||
!vm.$hasPerm('accounts.push_account') ||
(formValue.secret_type === 'ssh_key' && vm.iPlatform.type.value === 'windows') ||
vm.addTemplate
}
},
params: {
label: vm.$t('assets.PushParams'),
component: AutomationParamsForm,
el: {},
hidden: (formValue) => {
const automation = vm.iPlatform.automation || {}
vm.fieldsMeta.params.el.method = vm.iPlatform.automation.push_account_method
vm.fieldsMeta.params.el.pushAccountParams = vm.iPlatform.automation.push_account_params
return !formValue.push_now ||
!automation.push_account_enabled ||
!automation.ansible_enabled ||
(formValue.secret_type === 'ssh_key' &&
vm.iPlatform.type.value === 'windows') ||
!vm.$hasPerm('accounts.push_account') ||
vm.addTemplate
}
},
is_active: {
label: vm.$t('common.IsActive')
},
comment: {
label: vm.$t('common.Comment'),
hidden: () => {
return vm.addTemplate
}
}
}
}
Loading