[Update] 修改授权树显示策略 (#2784)

* [Update] 修改授权树显示策略

* [Update] 是否允许用户执行批量命令

* [Update] 优化授权节点构建

* [Update] 修改节点大小判断

* [Update] 修改节点大小判断
pull/2785/head
老广 2019-06-11 13:30:45 +08:00 committed by BaiJiangJie
parent 0574b43971
commit 44d33f70e4
9 changed files with 202 additions and 157 deletions

View File

@ -40,8 +40,10 @@ class Node(OrgModelMixin):
return self.key == other.key return self.key == other.key
def __gt__(self, other): def __gt__(self, other):
if self.is_root(): if self.is_root() and not other.is_root():
return True return True
elif not self.is_root() and other.is_root():
return False
self_key = [int(k) for k in self.key.split(':')] self_key = [int(k) for k in self.key.split(':')]
other_key = [int(k) for k in other.key.split(':')] other_key = [int(k) for k in other.key.split(':')]
self_parent_key = self_key[:-1] self_parent_key = self_key[:-1]
@ -49,6 +51,10 @@ class Node(OrgModelMixin):
if self_parent_key == other_parent_key: if self_parent_key == other_parent_key:
return self.name > other.name return self.name > other.name
if len(self_parent_key) < len(other_parent_key):
return True
elif len(self_parent_key) > len(other_parent_key):
return False
return self_key > other_key return self_key > other_key
def __lt__(self, other): def __lt__(self, other):

View File

@ -15,7 +15,8 @@ def jumpserver_processor(request):
'FAVICON_URL': static('img/facio.ico'), 'FAVICON_URL': static('img/facio.ico'),
'JMS_TITLE': 'Jumpserver', 'JMS_TITLE': 'Jumpserver',
'VERSION': settings.VERSION, 'VERSION': settings.VERSION,
'COPYRIGHT': 'FIT2CLOUD 飞致云' + ' © 2014-2019' 'COPYRIGHT': 'FIT2CLOUD 飞致云' + ' © 2014-2019',
'SECURITY_COMMAND_EXECUTION': settings.SECURITY_COMMAND_EXECUTION,
} }
return context return context

View File

@ -546,6 +546,7 @@ TERMINAL_REPLAY_STORAGE = {
SECURITY_MFA_AUTH = False SECURITY_MFA_AUTH = False
SECURITY_COMMAND_EXECUTION = True
SECURITY_LOGIN_LIMIT_COUNT = 7 SECURITY_LOGIN_LIMIT_COUNT = 7
SECURITY_LOGIN_LIMIT_TIME = 30 # Unit: minute SECURITY_LOGIN_LIMIT_TIME = 30 # Unit: minute
SECURITY_MAX_IDLE_TIME = 30 # Unit: minute SECURITY_MAX_IDLE_TIME = 30 # Unit: minute

Binary file not shown.

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Jumpserver 0.3.3\n" "Project-Id-Version: Jumpserver 0.3.3\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-27 15:38+0800\n" "POT-Creation-Date: 2019-06-11 11:39+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: ibuler <ibuler@qq.com>\n" "Last-Translator: ibuler <ibuler@qq.com>\n"
"Language-Team: Jumpserver team<ibuler@qq.com>\n" "Language-Team: Jumpserver team<ibuler@qq.com>\n"
@ -163,7 +163,7 @@ msgstr "系统用户"
#: settings/templates/settings/replay_storage_create.html:44 #: settings/templates/settings/replay_storage_create.html:44
#: settings/templates/settings/terminal_setting.html:83 #: settings/templates/settings/terminal_setting.html:83
#: settings/templates/settings/terminal_setting.html:105 terminal/models.py:22 #: settings/templates/settings/terminal_setting.html:105 terminal/models.py:22
#: terminal/models.py:241 terminal/templates/terminal/terminal_detail.html:43 #: terminal/models.py:258 terminal/templates/terminal/terminal_detail.html:43
#: terminal/templates/terminal/terminal_list.html:29 users/models/group.py:14 #: terminal/templates/terminal/terminal_list.html:29 users/models/group.py:14
#: users/models/user.py:61 users/templates/users/_select_user_modal.html:13 #: users/models/user.py:61 users/templates/users/_select_user_modal.html:13
#: users/templates/users/user_detail.html:63 #: users/templates/users/user_detail.html:63
@ -302,7 +302,7 @@ msgstr "备注"
#: perms/templates/perms/remote_app_permission_list.html:17 #: perms/templates/perms/remote_app_permission_list.html:17
#: perms/templates/perms/remote_app_permission_remote_app.html:26 #: perms/templates/perms/remote_app_permission_remote_app.html:26
#: perms/templates/perms/remote_app_permission_user.html:26 #: perms/templates/perms/remote_app_permission_user.html:26
#: templates/_nav.html:35 templates/_nav.html:45 templates/_nav_user.html:14 #: templates/_nav.html:36 templates/_nav.html:48 templates/_nav_user.html:14
msgid "RemoteApp" msgid "RemoteApp"
msgstr "远程应用" msgstr "远程应用"
@ -411,7 +411,7 @@ msgstr "详情"
#: applications/templates/applications/remote_app_list.html:56 #: applications/templates/applications/remote_app_list.html:56
#: assets/templates/assets/admin_user_detail.html:24 #: assets/templates/assets/admin_user_detail.html:24
#: assets/templates/assets/admin_user_list.html:29 #: assets/templates/assets/admin_user_list.html:29
#: assets/templates/assets/admin_user_list.html:111 #: assets/templates/assets/admin_user_list.html:112
#: assets/templates/assets/asset_detail.html:27 #: assets/templates/assets/asset_detail.html:27
#: assets/templates/assets/asset_list.html:86 #: assets/templates/assets/asset_list.html:86
#: assets/templates/assets/asset_list.html:190 #: assets/templates/assets/asset_list.html:190
@ -425,7 +425,7 @@ msgstr "详情"
#: assets/templates/assets/label_list.html:39 #: assets/templates/assets/label_list.html:39
#: assets/templates/assets/system_user_detail.html:26 #: assets/templates/assets/system_user_detail.html:26
#: assets/templates/assets/system_user_list.html:33 #: assets/templates/assets/system_user_list.html:33
#: assets/templates/assets/system_user_list.html:117 audits/models.py:33 #: assets/templates/assets/system_user_list.html:118 audits/models.py:33
#: perms/templates/perms/asset_permission_detail.html:30 #: perms/templates/perms/asset_permission_detail.html:30
#: perms/templates/perms/asset_permission_list.html:181 #: perms/templates/perms/asset_permission_list.html:181
#: perms/templates/perms/remote_app_permission_detail.html:30 #: perms/templates/perms/remote_app_permission_detail.html:30
@ -435,7 +435,7 @@ msgstr "详情"
#: users/templates/users/user_detail.html:25 #: users/templates/users/user_detail.html:25
#: users/templates/users/user_group_detail.html:28 #: users/templates/users/user_group_detail.html:28
#: users/templates/users/user_group_list.html:20 #: users/templates/users/user_group_list.html:20
#: users/templates/users/user_group_list.html:69 #: users/templates/users/user_group_list.html:70
#: users/templates/users/user_list.html:20 #: users/templates/users/user_list.html:20
#: users/templates/users/user_list.html:96 #: users/templates/users/user_list.html:96
#: users/templates/users/user_list.html:99 #: users/templates/users/user_list.html:99
@ -454,7 +454,7 @@ msgstr "更新"
#: applications/templates/applications/remote_app_detail.html:25 #: applications/templates/applications/remote_app_detail.html:25
#: applications/templates/applications/remote_app_list.html:57 #: applications/templates/applications/remote_app_list.html:57
#: assets/templates/assets/admin_user_detail.html:28 #: assets/templates/assets/admin_user_detail.html:28
#: assets/templates/assets/admin_user_list.html:112 #: assets/templates/assets/admin_user_list.html:113
#: assets/templates/assets/asset_detail.html:31 #: assets/templates/assets/asset_detail.html:31
#: assets/templates/assets/asset_list.html:191 #: assets/templates/assets/asset_list.html:191
#: assets/templates/assets/cmd_filter_detail.html:33 #: assets/templates/assets/cmd_filter_detail.html:33
@ -466,7 +466,7 @@ msgstr "更新"
#: assets/templates/assets/domain_list.html:55 #: assets/templates/assets/domain_list.html:55
#: assets/templates/assets/label_list.html:40 #: assets/templates/assets/label_list.html:40
#: assets/templates/assets/system_user_detail.html:30 #: assets/templates/assets/system_user_detail.html:30
#: assets/templates/assets/system_user_list.html:118 audits/models.py:34 #: assets/templates/assets/system_user_list.html:119 audits/models.py:34
#: ops/templates/ops/task_list.html:64 #: ops/templates/ops/task_list.html:64
#: perms/templates/perms/asset_permission_detail.html:34 #: perms/templates/perms/asset_permission_detail.html:34
#: perms/templates/perms/asset_permission_list.html:182 #: perms/templates/perms/asset_permission_list.html:182
@ -477,7 +477,7 @@ msgstr "更新"
#: terminal/templates/terminal/terminal_list.html:74 #: terminal/templates/terminal/terminal_list.html:74
#: users/templates/users/user_detail.html:30 #: users/templates/users/user_detail.html:30
#: users/templates/users/user_group_detail.html:32 #: users/templates/users/user_group_detail.html:32
#: users/templates/users/user_group_list.html:71 #: users/templates/users/user_group_list.html:72
#: users/templates/users/user_list.html:104 #: users/templates/users/user_list.html:104
#: users/templates/users/user_list.html:108 #: users/templates/users/user_list.html:108
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:33 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:33
@ -742,7 +742,7 @@ msgstr "密码或密钥密码"
#: authentication/forms.py:13 #: authentication/forms.py:13
#: authentication/templates/authentication/login.html:67 #: authentication/templates/authentication/login.html:67
#: authentication/templates/authentication/new_login.html:93 #: authentication/templates/authentication/new_login.html:93
#: settings/forms.py:103 users/forms.py:15 users/forms.py:33 #: settings/forms.py:103 users/forms.py:15 users/forms.py:27
#: users/templates/users/reset_password.html:53 #: users/templates/users/reset_password.html:53
#: users/templates/users/user_password_authentication.html:18 #: users/templates/users/user_password_authentication.html:18
#: users/templates/users/user_password_update.html:43 #: users/templates/users/user_password_update.html:43
@ -1137,7 +1137,7 @@ msgstr "默认资产组"
#: terminal/models.py:154 terminal/templates/terminal/command_list.html:32 #: terminal/models.py:154 terminal/templates/terminal/command_list.html:32
#: terminal/templates/terminal/command_list.html:72 #: terminal/templates/terminal/command_list.html:72
#: terminal/templates/terminal/session_list.html:33 #: terminal/templates/terminal/session_list.html:33
#: terminal/templates/terminal/session_list.html:71 users/forms.py:293 #: terminal/templates/terminal/session_list.html:71 users/forms.py:300
#: users/models/user.py:36 users/models/user.py:467 users/serializers/v1.py:61 #: users/models/user.py:36 users/models/user.py:467 users/serializers/v1.py:61
#: users/templates/users/user_group_detail.html:78 #: users/templates/users/user_group_detail.html:78
#: users/templates/users/user_group_list.html:36 users/views/user.py:399 #: users/templates/users/user_group_list.html:36 users/views/user.py:399
@ -1215,7 +1215,7 @@ msgstr "连接"
msgid "Org name" msgid "Org name"
msgstr "组织名" msgstr "组织名"
#: assets/serializers/asset_user.py:23 users/forms.py:240 #: assets/serializers/asset_user.py:23 users/forms.py:247
#: users/models/user.py:91 users/templates/users/first_login.html:42 #: users/models/user.py:91 users/templates/users/first_login.html:42
#: users/templates/users/user_password_update.html:46 #: users/templates/users/user_password_update.html:46
#: users/templates/users/user_profile.html:68 #: users/templates/users/user_profile.html:68
@ -1370,7 +1370,7 @@ msgstr "资产用户信息"
#: assets/templates/assets/_asset_user_view_auth_modal.html:14 #: assets/templates/assets/_asset_user_view_auth_modal.html:14
#: audits/models.py:99 audits/templates/audits/login_log_list.html:56 #: audits/models.py:99 audits/templates/audits/login_log_list.html:56
#: users/forms.py:152 users/models/user.py:83 #: users/forms.py:159 users/models/user.py:83
#: users/templates/users/first_login.html:45 #: users/templates/users/first_login.html:45
msgid "MFA" msgid "MFA"
msgstr "MFA" msgstr "MFA"
@ -1382,11 +1382,11 @@ msgstr "需要二次认证来查看账号信息"
#: assets/templates/assets/_asset_user_view_auth_modal.html:20 #: assets/templates/assets/_asset_user_view_auth_modal.html:20
#: assets/templates/assets/admin_user_detail.html:100 #: assets/templates/assets/admin_user_detail.html:100
#: assets/templates/assets/asset_detail.html:211 #: assets/templates/assets/asset_detail.html:211
#: assets/templates/assets/asset_list.html:700 #: assets/templates/assets/asset_list.html:682
#: assets/templates/assets/cmd_filter_detail.html:106 #: assets/templates/assets/cmd_filter_detail.html:106
#: assets/templates/assets/system_user_asset.html:112 #: assets/templates/assets/system_user_asset.html:112
#: assets/templates/assets/system_user_detail.html:182 #: assets/templates/assets/system_user_detail.html:182
#: assets/templates/assets/system_user_list.html:168 #: assets/templates/assets/system_user_list.html:170
#: settings/templates/settings/terminal_setting.html:168 #: settings/templates/settings/terminal_setting.html:168
#: templates/_modal.html:23 terminal/templates/terminal/session_detail.html:108 #: templates/_modal.html:23 terminal/templates/terminal/session_detail.html:108
#: users/templates/users/user_detail.html:388 #: users/templates/users/user_detail.html:388
@ -1394,8 +1394,8 @@ msgstr "需要二次认证来查看账号信息"
#: users/templates/users/user_detail.html:437 #: users/templates/users/user_detail.html:437
#: users/templates/users/user_detail.html:482 #: users/templates/users/user_detail.html:482
#: users/templates/users/user_group_create_update.html:32 #: users/templates/users/user_group_create_update.html:32
#: users/templates/users/user_group_list.html:114 #: users/templates/users/user_group_list.html:119
#: users/templates/users/user_list.html:269 #: users/templates/users/user_list.html:257
#: users/templates/users/user_profile.html:238 #: users/templates/users/user_profile.html:238
#: xpack/plugins/cloud/templates/cloud/account_create_update.html:34 #: xpack/plugins/cloud/templates/cloud/account_create_update.html:34
#: xpack/plugins/cloud/templates/cloud/sync_instance_task_create.html:36 #: xpack/plugins/cloud/templates/cloud/sync_instance_task_create.html:36
@ -1602,16 +1602,16 @@ msgstr "创建管理用户"
msgid "Ratio" msgid "Ratio"
msgstr "比例" msgstr "比例"
#: assets/templates/assets/admin_user_list.html:159 #: assets/templates/assets/admin_user_list.html:160
#: assets/templates/assets/admin_user_list.html:197 #: assets/templates/assets/admin_user_list.html:191
#: assets/templates/assets/asset_list.html:499 #: assets/templates/assets/asset_list.html:492
#: assets/templates/assets/asset_list.html:543 #: assets/templates/assets/asset_list.html:529
#: assets/templates/assets/system_user_list.html:226 #: assets/templates/assets/system_user_list.html:223
#: assets/templates/assets/system_user_list.html:262 #: assets/templates/assets/system_user_list.html:254
#: users/templates/users/user_group_list.html:163 #: users/templates/users/user_group_list.html:163
#: users/templates/users/user_group_list.html:199 #: users/templates/users/user_group_list.html:194
#: users/templates/users/user_list.html:162 #: users/templates/users/user_list.html:158
#: users/templates/users/user_list.html:198 #: users/templates/users/user_list.html:190
msgid "Please select file" msgid "Please select file"
msgstr "选择文件" msgstr "选择文件"
@ -1787,45 +1787,45 @@ msgstr "重命名成功"
msgid "Rename failed, do not change the root node name" msgid "Rename failed, do not change the root node name"
msgstr "重命名失败不能更改root节点的名称" msgstr "重命名失败不能更改root节点的名称"
#: assets/templates/assets/asset_list.html:694 #: assets/templates/assets/asset_list.html:676
#: assets/templates/assets/system_user_list.html:162 #: assets/templates/assets/system_user_list.html:164
#: users/templates/users/user_detail.html:382 #: users/templates/users/user_detail.html:382
#: users/templates/users/user_detail.html:408 #: users/templates/users/user_detail.html:408
#: users/templates/users/user_detail.html:476 #: users/templates/users/user_detail.html:476
#: users/templates/users/user_group_list.html:108 #: users/templates/users/user_group_list.html:113
#: users/templates/users/user_list.html:263 #: users/templates/users/user_list.html:251
#: xpack/plugins/interface/templates/interface/interface.html:97 #: xpack/plugins/interface/templates/interface/interface.html:97
msgid "Are you sure?" msgid "Are you sure?"
msgstr "你确认吗?" msgstr "你确认吗?"
#: assets/templates/assets/asset_list.html:695 #: assets/templates/assets/asset_list.html:677
msgid "This will delete the selected assets !!!" msgid "This will delete the selected assets !!!"
msgstr "删除选择资产" msgstr "删除选择资产"
#: assets/templates/assets/asset_list.html:698 #: assets/templates/assets/asset_list.html:680
#: assets/templates/assets/system_user_list.html:166 #: assets/templates/assets/system_user_list.html:168
#: settings/templates/settings/terminal_setting.html:166 #: settings/templates/settings/terminal_setting.html:166
#: users/templates/users/user_detail.html:386 #: users/templates/users/user_detail.html:386
#: users/templates/users/user_detail.html:412 #: users/templates/users/user_detail.html:412
#: users/templates/users/user_detail.html:480 #: users/templates/users/user_detail.html:480
#: users/templates/users/user_group_create_update.html:31 #: users/templates/users/user_group_create_update.html:31
#: users/templates/users/user_group_list.html:112 #: users/templates/users/user_group_list.html:117
#: users/templates/users/user_list.html:267 #: users/templates/users/user_list.html:255
#: xpack/plugins/interface/templates/interface/interface.html:101 #: xpack/plugins/interface/templates/interface/interface.html:101
#: xpack/plugins/orgs/templates/orgs/org_create_update.html:32 #: xpack/plugins/orgs/templates/orgs/org_create_update.html:32
msgid "Cancel" msgid "Cancel"
msgstr "取消" msgstr "取消"
#: assets/templates/assets/asset_list.html:711 #: assets/templates/assets/asset_list.html:693
msgid "Asset Deleted." msgid "Asset Deleted."
msgstr "已被删除" msgstr "已被删除"
#: assets/templates/assets/asset_list.html:712 #: assets/templates/assets/asset_list.html:694
#: assets/templates/assets/asset_list.html:716 #: assets/templates/assets/asset_list.html:698
msgid "Asset Delete" msgid "Asset Delete"
msgstr "删除" msgstr "删除"
#: assets/templates/assets/asset_list.html:715 #: assets/templates/assets/asset_list.html:697
msgid "Asset Deleting failed." msgid "Asset Deleting failed."
msgstr "删除失败" msgstr "删除失败"
@ -2013,20 +2013,20 @@ msgstr ""
msgid "Create system user" msgid "Create system user"
msgstr "创建系统用户" msgstr "创建系统用户"
#: assets/templates/assets/system_user_list.html:163 #: assets/templates/assets/system_user_list.html:165
msgid "This will delete the selected System Users !!!" msgid "This will delete the selected System Users !!!"
msgstr "删除选择系统用户" msgstr "删除选择系统用户"
#: assets/templates/assets/system_user_list.html:172 #: assets/templates/assets/system_user_list.html:174
msgid "System Users Deleted." msgid "System Users Deleted."
msgstr "已被删除" msgstr "已被删除"
#: assets/templates/assets/system_user_list.html:173 #: assets/templates/assets/system_user_list.html:175
#: assets/templates/assets/system_user_list.html:178 #: assets/templates/assets/system_user_list.html:180
msgid "System Users Delete" msgid "System Users Delete"
msgstr "删除系统用户" msgstr "删除系统用户"
#: assets/templates/assets/system_user_list.html:177 #: assets/templates/assets/system_user_list.html:179
msgid "System Users Deleting failed." msgid "System Users Deleting failed."
msgstr "系统用户删除失败" msgstr "系统用户删除失败"
@ -2308,23 +2308,23 @@ msgid "Datetime"
msgstr "日期" msgstr "日期"
#: audits/views.py:85 audits/views.py:129 audits/views.py:165 #: audits/views.py:85 audits/views.py:129 audits/views.py:165
#: audits/views.py:209 audits/views.py:241 templates/_nav.html:83 #: audits/views.py:209 audits/views.py:241 templates/_nav.html:87
msgid "Audits" msgid "Audits"
msgstr "日志审计" msgstr "日志审计"
#: audits/views.py:86 templates/_nav.html:87 #: audits/views.py:86 templates/_nav.html:91
msgid "FTP log" msgid "FTP log"
msgstr "FTP日志" msgstr "FTP日志"
#: audits/views.py:130 templates/_nav.html:88 #: audits/views.py:130 templates/_nav.html:92
msgid "Operate log" msgid "Operate log"
msgstr "操作日志" msgstr "操作日志"
#: audits/views.py:166 templates/_nav.html:89 #: audits/views.py:166 templates/_nav.html:93
msgid "Password change log" msgid "Password change log"
msgstr "改密日志" msgstr "改密日志"
#: audits/views.py:210 templates/_nav.html:86 #: audits/views.py:210 templates/_nav.html:90
msgid "Login log" msgid "Login log"
msgstr "登录日志" msgstr "登录日志"
@ -2949,7 +2949,7 @@ msgstr "更新任务内容: {}"
msgid "Ops" msgid "Ops"
msgstr "作业中心" msgstr "作业中心"
#: ops/views/adhoc.py:45 templates/_nav.html:77 #: ops/views/adhoc.py:45 templates/_nav.html:81
msgid "Task list" msgid "Task list"
msgstr "任务列表" msgstr "任务列表"
@ -2987,7 +2987,7 @@ msgstr "下载文件"
#: perms/templates/perms/asset_permission_list.html:75 #: perms/templates/perms/asset_permission_list.html:75
#: perms/templates/perms/asset_permission_list.html:122 #: perms/templates/perms/asset_permission_list.html:122
#: perms/templates/perms/remote_app_permission_list.html:16 #: perms/templates/perms/remote_app_permission_list.html:16
#: templates/_nav.html:14 users/forms.py:263 users/models/group.py:26 #: templates/_nav.html:14 users/forms.py:270 users/models/group.py:26
#: users/models/user.py:67 users/templates/users/_select_user_modal.html:16 #: users/models/user.py:67 users/templates/users/_select_user_modal.html:16
#: users/templates/users/user_detail.html:213 #: users/templates/users/user_detail.html:213
#: users/templates/users/user_list.html:38 #: users/templates/users/user_list.html:38
@ -3010,7 +3010,7 @@ msgid "Asset or group at least one required"
msgstr "资产和节点至少选一个" msgstr "资产和节点至少选一个"
#: perms/models/asset_permission.py:44 perms/models/asset_permission.py:70 #: perms/models/asset_permission.py:44 perms/models/asset_permission.py:70
#: templates/_nav.html:42 #: templates/_nav.html:44
msgid "Asset permission" msgid "Asset permission"
msgstr "资产授权" msgstr "资产授权"
@ -3171,7 +3171,7 @@ msgstr "添加用户组"
#: perms/views/remote_app_permission.py:63 #: perms/views/remote_app_permission.py:63
#: perms/views/remote_app_permission.py:76 #: perms/views/remote_app_permission.py:76
#: perms/views/remote_app_permission.py:102 #: perms/views/remote_app_permission.py:102
#: perms/views/remote_app_permission.py:138 templates/_nav.html:39 #: perms/views/remote_app_permission.py:138 templates/_nav.html:41
#: xpack/plugins/orgs/templates/orgs/org_list.html:21 #: xpack/plugins/orgs/templates/orgs/org_list.html:21
msgid "Perms" msgid "Perms"
msgstr "权限管理" msgstr "权限管理"
@ -3224,33 +3224,33 @@ msgstr "远程应用授权用户列表"
msgid "RemoteApp permission RemoteApp list" msgid "RemoteApp permission RemoteApp list"
msgstr "远程应用授权远程应用列表" msgstr "远程应用授权远程应用列表"
#: settings/api.py:26 #: settings/api.py:28
msgid "Test mail sent to {}, please check" msgid "Test mail sent to {}, please check"
msgstr "邮件已经发送{}, 请检查" msgstr "邮件已经发送{}, 请检查"
#: settings/api.py:50 #: settings/api.py:52
msgid "Test ldap success" msgid "Test ldap success"
msgstr "连接LDAP成功" msgstr "连接LDAP成功"
#: settings/api.py:87 #: settings/api.py:89
msgid "Match {} s users" msgid "Match {} s users"
msgstr "匹配 {} 个用户" msgstr "匹配 {} 个用户"
#: settings/api.py:120 #: settings/api.py:158
msgid "succeed: {} failed: {} total: {}" msgid "succeed: {} failed: {} total: {}"
msgstr "成功:{} 失败:{} 总数:{}" msgstr "成功:{} 失败:{} 总数:{}"
#: settings/api.py:142 settings/api.py:178 #: settings/api.py:180 settings/api.py:216
msgid "" msgid ""
"Error: Account invalid (Please make sure the information such as Access key " "Error: Account invalid (Please make sure the information such as Access key "
"or Secret key is correct)" "or Secret key is correct)"
msgstr "错误:账户无效 (请确保 Access key 或 Secret key 等信息正确)" msgstr "错误:账户无效 (请确保 Access key 或 Secret key 等信息正确)"
#: settings/api.py:148 settings/api.py:184 #: settings/api.py:186 settings/api.py:222
msgid "Create succeed" msgid "Create succeed"
msgstr "创建成功" msgstr "创建成功"
#: settings/api.py:166 settings/api.py:204 #: settings/api.py:204 settings/api.py:242
#: settings/templates/settings/terminal_setting.html:154 #: settings/templates/settings/terminal_setting.html:154
msgid "Delete succeed" msgid "Delete succeed"
msgstr "删除成功" msgstr "删除成功"
@ -3295,7 +3295,7 @@ msgstr "SMTP密码"
msgid "Some provider use token except password" msgid "Some provider use token except password"
msgstr "一些邮件提供商需要输入的是Token" msgstr "一些邮件提供商需要输入的是Token"
#: settings/forms.py:86 settings/forms.py:125 #: settings/forms.py:86
msgid "Use SSL" msgid "Use SSL"
msgstr "使用SSL" msgstr "使用SSL"
@ -3407,35 +3407,43 @@ msgid ""
"for all users, including administrators)" "for all users, including administrators)"
msgstr "开启后用户登录必须使用MFA二次认证对所有用户有效包括管理员" msgstr "开启后用户登录必须使用MFA二次认证对所有用户有效包括管理员"
#: settings/forms.py:185
msgid "Batch execute commands"
msgstr "批量命令"
#: settings/forms.py:186 #: settings/forms.py:186
msgid "Allow user batch execute commands"
msgstr "允许用户批量执行命令"
#: settings/forms.py:191
msgid "Limit the number of login failures" msgid "Limit the number of login failures"
msgstr "限制登录失败次数" msgstr "限制登录失败次数"
#: settings/forms.py:190 #: settings/forms.py:195
msgid "No logon interval" msgid "No logon interval"
msgstr "禁止登录时间间隔" msgstr "禁止登录时间间隔"
#: settings/forms.py:192 #: settings/forms.py:197
msgid "" msgid ""
"Tip: (unit/minute) if the user has failed to log in for a limited number of " "Tip: (unit/minute) if the user has failed to log in for a limited number of "
"times, no login is allowed during this time interval." "times, no login is allowed during this time interval."
msgstr "" msgstr ""
"提示:(单位:分)当用户登录失败次数达到限制后,那么在此时间间隔内禁止登录" "提示:(单位:分)当用户登录失败次数达到限制后,那么在此时间间隔内禁止登录"
#: settings/forms.py:199 #: settings/forms.py:204
msgid "Connection max idle time" msgid "Connection max idle time"
msgstr "SSH最大空闲时间" msgstr "SSH最大空闲时间"
#: settings/forms.py:201 #: settings/forms.py:206
msgid "" msgid ""
"If idle time more than it, disconnect connection(only ssh now) Unit: minute" "If idle time more than it, disconnect connection(only ssh now) Unit: minute"
msgstr "提示单位如果超过该配置没有操作连接会被断开仅ssh" msgstr "提示单位如果超过该配置没有操作连接会被断开仅ssh"
#: settings/forms.py:207 #: settings/forms.py:212
msgid "Password expiration time" msgid "Password expiration time"
msgstr "密码过期时间" msgstr "密码过期时间"
#: settings/forms.py:209 #: settings/forms.py:214
msgid "" msgid ""
"Tip: (unit: day) If the user does not update the password during the time, " "Tip: (unit: day) If the user does not update the password during the time, "
"the user password will expire failure;The password expiration reminder mail " "the user password will expire failure;The password expiration reminder mail "
@ -3445,81 +3453,81 @@ msgstr ""
"提示:(单位:天)如果用户在此期间没有更新密码,用户密码将过期失效; 密码过期" "提示:(单位:天)如果用户在此期间没有更新密码,用户密码将过期失效; 密码过期"
"提醒邮件将在密码过期前5天内由系统每天自动发送给用户" "提醒邮件将在密码过期前5天内由系统每天自动发送给用户"
#: settings/forms.py:218 #: settings/forms.py:223
msgid "Password minimum length" msgid "Password minimum length"
msgstr "密码最小长度 " msgstr "密码最小长度 "
#: settings/forms.py:222 #: settings/forms.py:227
msgid "Must contain capital letters" msgid "Must contain capital letters"
msgstr "必须包含大写字母" msgstr "必须包含大写字母"
#: settings/forms.py:224 #: settings/forms.py:229
msgid "" msgid ""
"After opening, the user password changes and resets must contain uppercase " "After opening, the user password changes and resets must contain uppercase "
"letters" "letters"
msgstr "开启后,用户密码修改、重置必须包含大写字母" msgstr "开启后,用户密码修改、重置必须包含大写字母"
#: settings/forms.py:229 #: settings/forms.py:234
msgid "Must contain lowercase letters" msgid "Must contain lowercase letters"
msgstr "必须包含小写字母" msgstr "必须包含小写字母"
#: settings/forms.py:230 #: settings/forms.py:235
msgid "" msgid ""
"After opening, the user password changes and resets must contain lowercase " "After opening, the user password changes and resets must contain lowercase "
"letters" "letters"
msgstr "开启后,用户密码修改、重置必须包含小写字母" msgstr "开启后,用户密码修改、重置必须包含小写字母"
#: settings/forms.py:235 #: settings/forms.py:240
msgid "Must contain numeric characters" msgid "Must contain numeric characters"
msgstr "必须包含数字字符" msgstr "必须包含数字字符"
#: settings/forms.py:236 #: settings/forms.py:241
msgid "" msgid ""
"After opening, the user password changes and resets must contain numeric " "After opening, the user password changes and resets must contain numeric "
"characters" "characters"
msgstr "开启后,用户密码修改、重置必须包含数字字符" msgstr "开启后,用户密码修改、重置必须包含数字字符"
#: settings/forms.py:241 #: settings/forms.py:246
msgid "Must contain special characters" msgid "Must contain special characters"
msgstr "必须包含特殊字符" msgstr "必须包含特殊字符"
#: settings/forms.py:242 #: settings/forms.py:247
msgid "" msgid ""
"After opening, the user password changes and resets must contain special " "After opening, the user password changes and resets must contain special "
"characters" "characters"
msgstr "开启后,用户密码修改、重置必须包含特殊字符" msgstr "开启后,用户密码修改、重置必须包含特殊字符"
#: settings/forms.py:249 #: settings/forms.py:254
msgid "Create user email subject" msgid "Create user email subject"
msgstr "创建用户邮件的主题" msgstr "创建用户邮件的主题"
#: settings/forms.py:250 #: settings/forms.py:255
msgid "" msgid ""
"Tips: When creating a user, send the subject of the email (eg:Create account " "Tips: When creating a user, send the subject of the email (eg:Create account "
"successfully)" "successfully)"
msgstr "提示: 创建用户时,发送设置密码邮件的主题 (例如: 创建用户成功)" msgstr "提示: 创建用户时,发送设置密码邮件的主题 (例如: 创建用户成功)"
#: settings/forms.py:254 #: settings/forms.py:259
msgid "Create user honorific" msgid "Create user honorific"
msgstr "创建用户邮件的敬语" msgstr "创建用户邮件的敬语"
#: settings/forms.py:255 #: settings/forms.py:260
msgid "Tips: When creating a user, send the honorific of the email (eg:Hello)" msgid "Tips: When creating a user, send the honorific of the email (eg:Hello)"
msgstr "提示: 创建用户时,发送设置密码邮件的敬语 (例如: 您好)" msgstr "提示: 创建用户时,发送设置密码邮件的敬语 (例如: 您好)"
#: settings/forms.py:260 #: settings/forms.py:265
msgid "Create user email content" msgid "Create user email content"
msgstr "创建用户邮件的内容" msgstr "创建用户邮件的内容"
#: settings/forms.py:261 #: settings/forms.py:266
msgid "Tips:When creating a user, send the content of the email" msgid "Tips:When creating a user, send the content of the email"
msgstr "提示: 创建用户时,发送设置密码邮件的内容" msgstr "提示: 创建用户时,发送设置密码邮件的内容"
#: settings/forms.py:264 #: settings/forms.py:269
msgid "Signature" msgid "Signature"
msgstr "署名" msgstr "署名"
#: settings/forms.py:265 #: settings/forms.py:270
msgid "Tips: Email signature (eg:jumpserver)" msgid "Tips: Email signature (eg:jumpserver)"
msgstr "提示: 邮件的署名 (例如: jumpserver)" msgstr "提示: 邮件的署名 (例如: jumpserver)"
@ -3622,7 +3630,7 @@ msgstr "创建用户设置"
msgid "Bulk import" msgid "Bulk import"
msgstr "一键导入" msgstr "一键导入"
#: settings/templates/settings/ldap_setting.html:119 #: settings/templates/settings/ldap_setting.html:116
msgid "" msgid ""
"User is not currently selected, please check the user you want to import" "User is not currently selected, please check the user you want to import"
msgstr "当前无勾选用户,请勾选你想要导入的用户" msgstr "当前无勾选用户,请勾选你想要导入的用户"
@ -3731,17 +3739,17 @@ msgstr "删除失败"
msgid "Are you sure about deleting it?" msgid "Are you sure about deleting it?"
msgstr "您确定删除吗?" msgstr "您确定删除吗?"
#: settings/utils.py:85 #: settings/utils.py:84
msgid "Search no entry matched in ou {}" msgid "Search no entry matched in ou {}"
msgstr "在ou:{}中没有匹配条目" msgstr "在ou:{}中没有匹配条目"
#: settings/utils.py:113 #: settings/utils.py:112
msgid "The user source is not LDAP" msgid "The user source is not LDAP"
msgstr "用户来源不是LDAP" msgstr "用户来源不是LDAP"
#: settings/views.py:18 settings/views.py:44 settings/views.py:70 #: settings/views.py:18 settings/views.py:44 settings/views.py:70
#: settings/views.py:99 settings/views.py:126 settings/views.py:138 #: settings/views.py:99 settings/views.py:126 settings/views.py:138
#: settings/views.py:151 settings/views.py:177 templates/_nav.html:118 #: settings/views.py:151 settings/views.py:177 templates/_nav.html:122
msgid "Settings" msgid "Settings"
msgstr "系统设置" msgstr "系统设置"
@ -3770,7 +3778,7 @@ msgstr "文档"
msgid "Commercial support" msgid "Commercial support"
msgstr "商业支持" msgstr "商业支持"
#: templates/_header_bar.html:89 templates/_nav_user.html:26 users/forms.py:131 #: templates/_header_bar.html:89 templates/_nav_user.html:26 users/forms.py:138
#: users/templates/users/_user.html:43 #: users/templates/users/_user.html:43
#: users/templates/users/first_login.html:39 #: users/templates/users/first_login.html:39
#: users/templates/users/user_password_update.html:40 #: users/templates/users/user_password_update.html:40
@ -3885,58 +3893,58 @@ msgstr "用户列表"
msgid "Command filters" msgid "Command filters"
msgstr "命令过滤" msgstr "命令过滤"
#: templates/_nav.html:32 #: templates/_nav.html:33
msgid "Applications" msgid "Applications"
msgstr "应用管理" msgstr "应用管理"
#: templates/_nav.html:51 #: templates/_nav.html:55
msgid "Sessions" msgid "Sessions"
msgstr "会话管理" msgstr "会话管理"
#: templates/_nav.html:54 #: templates/_nav.html:58
msgid "Session online" msgid "Session online"
msgstr "在线会话" msgstr "在线会话"
#: templates/_nav.html:55 #: templates/_nav.html:59
msgid "Session offline" msgid "Session offline"
msgstr "历史会话" msgstr "历史会话"
#: templates/_nav.html:56 #: templates/_nav.html:60
msgid "Commands" msgid "Commands"
msgstr "命令记录" msgstr "命令记录"
#: templates/_nav.html:59 templates/_nav_user.html:31 #: templates/_nav.html:63 templates/_nav_user.html:31
msgid "Web terminal" msgid "Web terminal"
msgstr "Web终端" msgstr "Web终端"
#: templates/_nav.html:64 templates/_nav_user.html:36 #: templates/_nav.html:68 templates/_nav_user.html:36
msgid "File manager" msgid "File manager"
msgstr "文件管理" msgstr "文件管理"
#: templates/_nav.html:68 terminal/views/command.py:50 #: templates/_nav.html:72 terminal/views/command.py:50
#: terminal/views/session.py:74 terminal/views/session.py:92 #: terminal/views/session.py:74 terminal/views/session.py:92
#: terminal/views/session.py:115 terminal/views/terminal.py:31 #: terminal/views/session.py:115 terminal/views/terminal.py:31
#: terminal/views/terminal.py:46 terminal/views/terminal.py:58 #: terminal/views/terminal.py:46 terminal/views/terminal.py:58
msgid "Terminal" msgid "Terminal"
msgstr "终端管理" msgstr "终端管理"
#: templates/_nav.html:74 #: templates/_nav.html:78
msgid "Job Center" msgid "Job Center"
msgstr "作业中心" msgstr "作业中心"
#: templates/_nav.html:78 templates/_nav.html:90 #: templates/_nav.html:82 templates/_nav.html:94
msgid "Batch command" msgid "Batch command"
msgstr "批量命令" msgstr "批量命令"
#: templates/_nav.html:96 #: templates/_nav.html:100
msgid "XPack" msgid "XPack"
msgstr "" msgstr ""
#: templates/_nav.html:104 xpack/plugins/cloud/views.py:26 #: templates/_nav.html:108 xpack/plugins/cloud/views.py:26
msgid "Account list" msgid "Account list"
msgstr "账户列表" msgstr "账户列表"
#: templates/_nav.html:105 #: templates/_nav.html:109
msgid "Sync instance" msgid "Sync instance"
msgstr "同步实例" msgstr "同步实例"
@ -4190,7 +4198,7 @@ msgstr "最后活跃日期"
msgid "Date end" msgid "Date end"
msgstr "结束日期" msgstr "结束日期"
#: terminal/models.py:242 #: terminal/models.py:259
msgid "Args" msgid "Args"
msgstr "参数" msgstr "参数"
@ -4331,15 +4339,7 @@ msgstr "你没有权限"
msgid "Could not reset self otp, use profile reset instead" msgid "Could not reset self otp, use profile reset instead"
msgstr "不能再该页面重置MFA, 请去个人信息页面重置" msgstr "不能再该页面重置MFA, 请去个人信息页面重置"
#: users/forms.py:25 #: users/forms.py:32 users/models/user.py:71
msgid "Reset link will be generated and sent to the user"
msgstr "生成重置密码链接,通过邮件发送给用户"
#: users/forms.py:26
msgid "Set password"
msgstr "设置密码"
#: users/forms.py:38 users/models/user.py:71
#: users/templates/users/_select_user_modal.html:15 #: users/templates/users/_select_user_modal.html:15
#: users/templates/users/user_detail.html:87 #: users/templates/users/user_detail.html:87
#: users/templates/users/user_list.html:37 #: users/templates/users/user_list.html:37
@ -4347,19 +4347,39 @@ msgstr "设置密码"
msgid "Role" msgid "Role"
msgstr "角色" msgstr "角色"
#: users/forms.py:41 users/forms.py:210 #: users/forms.py:35 users/forms.py:217
msgid "ssh public key" msgid "ssh public key"
msgstr "ssh公钥" msgstr "ssh公钥"
#: users/forms.py:42 users/forms.py:211 #: users/forms.py:36 users/forms.py:218
msgid "ssh-rsa AAAA..." msgid "ssh-rsa AAAA..."
msgstr "" msgstr ""
#: users/forms.py:43 #: users/forms.py:37
msgid "Paste user id_rsa.pub here." msgid "Paste user id_rsa.pub here."
msgstr "复制用户公钥到这里" msgstr "复制用户公钥到这里"
#: users/forms.py:47 xpack/plugins/change_auth_plan/models.py:83 #: users/forms.py:51 users/templates/users/user_detail.html:221
msgid "Join user groups"
msgstr "添加到用户组"
#: users/forms.py:85 users/forms.py:232
msgid "Public key should not be the same as your old one."
msgstr "不能和原来的密钥相同"
#: users/forms.py:89 users/forms.py:236 users/serializers/v1.py:47
msgid "Not a valid ssh public key"
msgstr "ssh密钥不合法"
#: users/forms.py:109
msgid "Reset link will be generated and sent to the user"
msgstr "生成重置密码链接,通过邮件发送给用户"
#: users/forms.py:110
msgid "Set password"
msgstr "设置密码"
#: users/forms.py:117 xpack/plugins/change_auth_plan/models.py:83
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_create_update.html:51 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_create_update.html:51
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:69 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:69
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_execution_list.html:57 #: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_execution_list.html:57
@ -4367,19 +4387,7 @@ msgstr "复制用户公钥到这里"
msgid "Password strategy" msgid "Password strategy"
msgstr "密码策略" msgstr "密码策略"
#: users/forms.py:61 users/templates/users/user_detail.html:221 #: users/forms.py:144
msgid "Join user groups"
msgstr "添加到用户组"
#: users/forms.py:95 users/forms.py:225
msgid "Public key should not be the same as your old one."
msgstr "不能和原来的密钥相同"
#: users/forms.py:99 users/forms.py:229 users/serializers/v1.py:47
msgid "Not a valid ssh public key"
msgstr "ssh密钥不合法"
#: users/forms.py:137
msgid "" msgid ""
"Tip: when enabled, you will enter the MFA binding process the next time you " "Tip: when enabled, you will enter the MFA binding process the next time you "
"log in. you can also directly bind in \"personal information -> quick " "log in. you can also directly bind in \"personal information -> quick "
@ -4388,11 +4396,11 @@ msgstr ""
"提示启用之后您将会在下次登录时进入MFA绑定流程您也可以在个人信息->快速修" "提示启用之后您将会在下次登录时进入MFA绑定流程您也可以在个人信息->快速修"
"改->更改MFA设置中直接绑定!" "改->更改MFA设置中直接绑定!"
#: users/forms.py:147 #: users/forms.py:154
msgid "* Enable MFA authentication to make the account more secure." msgid "* Enable MFA authentication to make the account more secure."
msgstr "* 启用MFA认证使账号更加安全." msgstr "* 启用MFA认证使账号更加安全."
#: users/forms.py:157 #: users/forms.py:164
msgid "" msgid ""
"In order to protect you and your company, please keep your account, password " "In order to protect you and your company, please keep your account, password "
"and key sensitive information properly. (for example: setting complex " "and key sensitive information properly. (for example: setting complex "
@ -4401,41 +4409,41 @@ msgstr ""
"为了保护您和公司的安全,请妥善保管您的账户、密码和密钥等重要敏感信息;(如:" "为了保护您和公司的安全,请妥善保管您的账户、密码和密钥等重要敏感信息;(如:"
"设置复杂密码启用MFA认证" "设置复杂密码启用MFA认证"
#: users/forms.py:164 users/templates/users/first_login.html:48 #: users/forms.py:171 users/templates/users/first_login.html:48
#: users/templates/users/first_login.html:107 #: users/templates/users/first_login.html:107
#: users/templates/users/first_login.html:130 #: users/templates/users/first_login.html:130
msgid "Finish" msgid "Finish"
msgstr "完成" msgstr "完成"
#: users/forms.py:170 #: users/forms.py:177
msgid "Old password" msgid "Old password"
msgstr "原来密码" msgstr "原来密码"
#: users/forms.py:175 #: users/forms.py:182
msgid "New password" msgid "New password"
msgstr "新密码" msgstr "新密码"
#: users/forms.py:180 #: users/forms.py:187
msgid "Confirm password" msgid "Confirm password"
msgstr "确认密码" msgstr "确认密码"
#: users/forms.py:190 #: users/forms.py:197
msgid "Old password error" msgid "Old password error"
msgstr "原来密码错误" msgstr "原来密码错误"
#: users/forms.py:198 #: users/forms.py:205
msgid "Password does not match" msgid "Password does not match"
msgstr "密码不一致" msgstr "密码不一致"
#: users/forms.py:208 #: users/forms.py:215
msgid "Automatically configure and download the SSH key" msgid "Automatically configure and download the SSH key"
msgstr "自动配置并下载SSH密钥" msgstr "自动配置并下载SSH密钥"
#: users/forms.py:212 #: users/forms.py:219
msgid "Paste your id_rsa.pub here." msgid "Paste your id_rsa.pub here."
msgstr "复制你的公钥到这里" msgstr "复制你的公钥到这里"
#: users/forms.py:246 users/forms.py:251 users/forms.py:297 #: users/forms.py:253 users/forms.py:258 users/forms.py:304
#: xpack/plugins/orgs/forms.py:30 #: xpack/plugins/orgs/forms.py:30
msgid "Select users" msgid "Select users"
msgstr "选择用户" msgstr "选择用户"
@ -4827,45 +4835,45 @@ msgstr "添加用户"
msgid "Create user group" msgid "Create user group"
msgstr "创建用户组" msgstr "创建用户组"
#: users/templates/users/user_group_list.html:109 #: users/templates/users/user_group_list.html:114
msgid "This will delete the selected groups !!!" msgid "This will delete the selected groups !!!"
msgstr "删除选择组" msgstr "删除选择组"
#: users/templates/users/user_group_list.html:118 #: users/templates/users/user_group_list.html:123
msgid "UserGroups Deleted." msgid "UserGroups Deleted."
msgstr "用户组删除" msgstr "用户组删除"
#: users/templates/users/user_group_list.html:119
#: users/templates/users/user_group_list.html:124 #: users/templates/users/user_group_list.html:124
#: users/templates/users/user_group_list.html:129
msgid "UserGroups Delete" msgid "UserGroups Delete"
msgstr "用户组删除" msgstr "用户组删除"
#: users/templates/users/user_group_list.html:123 #: users/templates/users/user_group_list.html:128
msgid "UserGroup Deleting failed." msgid "UserGroup Deleting failed."
msgstr "用户组删除失败" msgstr "用户组删除失败"
#: users/templates/users/user_list.html:264 #: users/templates/users/user_list.html:252
msgid "This will delete the selected users !!!" msgid "This will delete the selected users !!!"
msgstr "删除选中用户 !!!" msgstr "删除选中用户 !!!"
#: users/templates/users/user_list.html:280 #: users/templates/users/user_list.html:268
msgid "User Deleted." msgid "User Deleted."
msgstr "已被删除" msgstr "已被删除"
#: users/templates/users/user_list.html:281 #: users/templates/users/user_list.html:269
#: users/templates/users/user_list.html:285 #: users/templates/users/user_list.html:273
msgid "User Delete" msgid "User Delete"
msgstr "删除" msgstr "删除"
#: users/templates/users/user_list.html:284 #: users/templates/users/user_list.html:272
msgid "User Deleting failed." msgid "User Deleting failed."
msgstr "用户删除失败" msgstr "用户删除失败"
#: users/templates/users/user_list.html:337 #: users/templates/users/user_list.html:325
msgid "User is expired" msgid "User is expired"
msgstr "用户已失效" msgstr "用户已失效"
#: users/templates/users/user_list.html:340 #: users/templates/users/user_list.html:328
msgid "User is inactive" msgid "User is inactive"
msgstr "用户已禁用" msgstr "用户已禁用"

View File

@ -2,6 +2,7 @@
# #
from rest_framework import viewsets from rest_framework import viewsets
from django.db import transaction from django.db import transaction
from django.conf import settings
from common.permissions import IsValidUser from common.permissions import IsValidUser
from ..models import CommandExecution from ..models import CommandExecution
@ -18,6 +19,11 @@ class CommandExecutionViewSet(viewsets.ModelViewSet):
user_id=str(self.request.user.id) user_id=str(self.request.user.id)
) )
def check_permissions(self, request):
if not settings.SECURITY_COMMAND_EXECUTION:
return self.permission_denied(request, "Command execution disabled")
return super().check_permissions(request)
def perform_create(self, serializer): def perform_create(self, serializer):
instance = serializer.save() instance = serializer.save()
instance.user = self.request.user instance.user = self.request.user

View File

@ -37,9 +37,21 @@ class GenerateTree:
def add_asset(self, asset, system_users): def add_asset(self, asset, system_users):
nodes = asset.nodes.all() nodes = asset.nodes.all()
self.add_nodes(nodes) in_nodes = False
for node in nodes: for node in nodes:
if node not in self.nodes:
continue
self.nodes[node][asset].update(system_users) self.nodes[node][asset].update(system_users)
in_nodes = True
if not in_nodes:
all_nodes = self.nodes.keys()
# 如果没有授权节点,就放到默认的根节点下
if not all_nodes:
root_node = Node.root()
self.add_node(root_node)
else:
root_node = max(all_nodes)
self.nodes[root_node][asset].update(system_users)
def get_nodes(self): def get_nodes(self):
for node in self.nodes: for node in self.nodes:
@ -50,6 +62,7 @@ class GenerateTree:
node.assets_amount = len(assets) node.assets_amount = len(assets)
return self.nodes return self.nodes
# 添加节点时,追溯到根节点
def add_node(self, node): def add_node(self, node):
if node in self.nodes: if node in self.nodes:
return return
@ -62,9 +75,11 @@ class GenerateTree:
self.add_node(n) self.add_node(n)
break break
# 添加树节点
def add_nodes(self, nodes): def add_nodes(self, nodes):
for node in nodes: for node in nodes:
self.add_node(node) self.add_node(node)
self.add_nodes(node.get_all_children(with_self=False))
def get_user_permissions(user, include_group=True): def get_user_permissions(user, include_group=True):
@ -123,6 +138,7 @@ class AssetPermissionUtil:
self._assets = None self._assets = None
self._filter_id = 'None' # 当通过filter更改 permission是标记 self._filter_id = 'None' # 当通过filter更改 permission是标记
self.cache_policy = cache_policy self.cache_policy = cache_policy
self.tree = GenerateTree()
@classmethod @classmethod
def is_not_using_cache(cls, cache_policy): def is_not_using_cache(cls, cache_policy):
@ -181,6 +197,7 @@ class AssetPermissionUtil:
permissions = self.permissions.prefetch_related('nodes', 'system_users') permissions = self.permissions.prefetch_related('nodes', 'system_users')
for perm in permissions: for perm in permissions:
actions = perm.actions.all() actions = perm.actions.all()
self.tree.add_nodes(perm.nodes.all())
for node in perm.nodes.all(): for node in perm.nodes.all():
system_users = perm.system_users.all() system_users = perm.system_users.all()
system_users = self._structured_system_user(system_users, actions) system_users = self._structured_system_user(system_users, actions)
@ -275,10 +292,9 @@ class AssetPermissionUtil:
:return: :return:
""" """
assets = self.get_assets_without_cache() assets = self.get_assets_without_cache()
tree = GenerateTree()
for asset, system_users in assets.items(): for asset, system_users in assets.items():
tree.add_asset(asset, system_users) self.tree.add_asset(asset, system_users)
return tree.get_nodes() return self.tree.get_nodes()
def get_nodes_with_assets_from_cache(self): def get_nodes_with_assets_from_cache(self):
cached = cache.get(self.node_key) cached = cache.get(self.node_key)

View File

@ -180,6 +180,11 @@ class SecuritySettingForm(BaseForm):
'authentication (valid for all users, including administrators)' 'authentication (valid for all users, including administrators)'
) )
) )
# Execute commands for user
SECURITY_COMMAND_EXECUTION = forms.BooleanField(
required=False, label=_("Batch execute commands"),
help_text=_("Allow user batch execute commands")
)
# limit login count # limit login count
SECURITY_LOGIN_LIMIT_COUNT = forms.IntegerField( SECURITY_LOGIN_LIMIT_COUNT = forms.IntegerField(
min_value=3, max_value=99999, min_value=3, max_value=99999,

View File

@ -16,11 +16,13 @@
</li> </li>
</ul> </ul>
</li> </li>
{% if SECURITY_COMMAND_EXECUTION %}
<li id="ops"> <li id="ops">
<a href="{% url 'ops:command-execution-start' %}"> <a href="{% url 'ops:command-execution-start' %}">
<i class="fa fa-terminal" style="width: 14px"></i> <span class="nav-label">{% trans 'Command execution' %}</span><span class="label label-info pull-right"></span> <i class="fa fa-terminal" style="width: 14px"></i> <span class="nav-label">{% trans 'Command execution' %}</span><span class="label label-info pull-right"></span>
</a> </a>
</li> </li>
{% endif %}
<li id="users"> <li id="users">
<a href="{% url 'users:user-profile' %}"> <a href="{% url 'users:user-profile' %}">
<i class="fa fa-user" style="width: 14px"></i> <span class="nav-label">{% trans 'Profile' %}</span><span class="label label-info pull-right"></span> <i class="fa fa-user" style="width: 14px"></i> <span class="nav-label">{% trans 'Profile' %}</span><span class="label label-info pull-right"></span>