mirror of https://github.com/jumpserver/jumpserver
commit
c42f69d1ba
|
@ -103,6 +103,12 @@ class SystemUserSerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer):
|
||||||
raise serializers.ValidationError(msg)
|
raise serializers.ValidationError(msg)
|
||||||
return username
|
return username
|
||||||
|
|
||||||
|
def validate_home(self, home):
|
||||||
|
username_same_with_user = self.initial_data.get("username_same_with_user")
|
||||||
|
if username_same_with_user:
|
||||||
|
return ''
|
||||||
|
return home
|
||||||
|
|
||||||
def validate_sftp_root(self, value):
|
def validate_sftp_root(self, value):
|
||||||
if value in ['home', 'tmp']:
|
if value in ['home', 'tmp']:
|
||||||
return value
|
return value
|
||||||
|
|
|
@ -132,7 +132,9 @@ AUTH_BACKEND_WECOM = 'authentication.backends.api.WeComAuthentication'
|
||||||
AUTH_BACKEND_DINGTALK = 'authentication.backends.api.DingTalkAuthentication'
|
AUTH_BACKEND_DINGTALK = 'authentication.backends.api.DingTalkAuthentication'
|
||||||
|
|
||||||
|
|
||||||
AUTHENTICATION_BACKENDS = [AUTH_BACKEND_MODEL, AUTH_BACKEND_PUBKEY]
|
AUTHENTICATION_BACKENDS = [
|
||||||
|
AUTH_BACKEND_MODEL, AUTH_BACKEND_PUBKEY, AUTH_BACKEND_WECOM, AUTH_BACKEND_DINGTALK
|
||||||
|
]
|
||||||
|
|
||||||
if AUTH_CAS:
|
if AUTH_CAS:
|
||||||
AUTHENTICATION_BACKENDS.insert(0, AUTH_BACKEND_CAS)
|
AUTHENTICATION_BACKENDS.insert(0, AUTH_BACKEND_CAS)
|
||||||
|
@ -143,10 +145,6 @@ if AUTH_RADIUS:
|
||||||
AUTHENTICATION_BACKENDS.insert(0, AUTH_BACKEND_RADIUS)
|
AUTHENTICATION_BACKENDS.insert(0, AUTH_BACKEND_RADIUS)
|
||||||
if AUTH_SSO:
|
if AUTH_SSO:
|
||||||
AUTHENTICATION_BACKENDS.append(AUTH_BACKEND_SSO)
|
AUTHENTICATION_BACKENDS.append(AUTH_BACKEND_SSO)
|
||||||
if AUTH_WECOM:
|
|
||||||
AUTHENTICATION_BACKENDS.append(AUTH_BACKEND_WECOM)
|
|
||||||
if AUTH_DINGTALK:
|
|
||||||
AUTHENTICATION_BACKENDS.append(AUTH_BACKEND_DINGTALK)
|
|
||||||
|
|
||||||
|
|
||||||
ONLY_ALLOW_EXIST_USER_AUTH = CONFIG.ONLY_ALLOW_EXIST_USER_AUTH
|
ONLY_ALLOW_EXIST_USER_AUTH = CONFIG.ONLY_ALLOW_EXIST_USER_AUTH
|
||||||
|
|
Binary file not shown.
|
@ -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: 2021-05-13 19:30+0800\n"
|
"POT-Creation-Date: 2021-05-14 16:12+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"
|
||||||
|
@ -122,7 +122,7 @@ msgstr "系统用户"
|
||||||
#: assets/models/asset.py:355 assets/models/authbook.py:26
|
#: assets/models/asset.py:355 assets/models/authbook.py:26
|
||||||
#: assets/models/gathered_user.py:14 assets/serializers/admin_user.py:34
|
#: assets/models/gathered_user.py:14 assets/serializers/admin_user.py:34
|
||||||
#: assets/serializers/asset_user.py:48 assets/serializers/asset_user.py:89
|
#: assets/serializers/asset_user.py:48 assets/serializers/asset_user.py:89
|
||||||
#: assets/serializers/system_user.py:195 audits/models.py:38
|
#: assets/serializers/system_user.py:201 audits/models.py:38
|
||||||
#: perms/models/asset_permission.py:99 templates/index.html:82
|
#: perms/models/asset_permission.py:99 templates/index.html:82
|
||||||
#: terminal/backends/command/models.py:19
|
#: terminal/backends/command/models.py:19
|
||||||
#: terminal/backends/command/serializers.py:13 terminal/models/session.py:40
|
#: terminal/backends/command/serializers.py:13 terminal/models/session.py:40
|
||||||
|
@ -674,7 +674,7 @@ msgstr "全称"
|
||||||
msgid "Parent key"
|
msgid "Parent key"
|
||||||
msgstr "ssh私钥"
|
msgstr "ssh私钥"
|
||||||
|
|
||||||
#: assets/models/node.py:559 assets/serializers/system_user.py:194
|
#: assets/models/node.py:559 assets/serializers/system_user.py:200
|
||||||
#: users/templates/users/user_asset_permission.html:41
|
#: users/templates/users/user_asset_permission.html:41
|
||||||
#: users/templates/users/user_asset_permission.html:73
|
#: users/templates/users/user_asset_permission.html:73
|
||||||
#: users/templates/users/user_asset_permission.html:158
|
#: users/templates/users/user_asset_permission.html:158
|
||||||
|
@ -839,7 +839,7 @@ msgid "Gateways count"
|
||||||
msgstr "网关数量"
|
msgstr "网关数量"
|
||||||
|
|
||||||
#: assets/serializers/label.py:13 assets/serializers/system_user.py:47
|
#: assets/serializers/label.py:13 assets/serializers/system_user.py:47
|
||||||
#: assets/serializers/system_user.py:169
|
#: assets/serializers/system_user.py:175
|
||||||
#: perms/serializers/asset/permission.py:74
|
#: perms/serializers/asset/permission.py:74
|
||||||
msgid "Assets amount"
|
msgid "Assets amount"
|
||||||
msgstr "资产数量"
|
msgstr "资产数量"
|
||||||
|
@ -861,17 +861,17 @@ msgstr "不能包含: /"
|
||||||
msgid "The same level node name cannot be the same"
|
msgid "The same level node name cannot be the same"
|
||||||
msgstr "同级别节点名字不能重复"
|
msgstr "同级别节点名字不能重复"
|
||||||
|
|
||||||
#: assets/serializers/system_user.py:46 assets/serializers/system_user.py:168
|
#: assets/serializers/system_user.py:46 assets/serializers/system_user.py:174
|
||||||
#: perms/serializers/asset/permission.py:75
|
#: perms/serializers/asset/permission.py:75
|
||||||
msgid "Nodes amount"
|
msgid "Nodes amount"
|
||||||
msgstr "节点数量"
|
msgstr "节点数量"
|
||||||
|
|
||||||
#: assets/serializers/system_user.py:48 assets/serializers/system_user.py:170
|
#: assets/serializers/system_user.py:48 assets/serializers/system_user.py:176
|
||||||
#: assets/serializers/system_user.py:196
|
#: assets/serializers/system_user.py:202
|
||||||
msgid "Login mode display"
|
msgid "Login mode display"
|
||||||
msgstr "登录模式(显示名称)"
|
msgstr "登录模式(显示名称)"
|
||||||
|
|
||||||
#: assets/serializers/system_user.py:50 assets/serializers/system_user.py:172
|
#: assets/serializers/system_user.py:50 assets/serializers/system_user.py:178
|
||||||
msgid "Ad domain"
|
msgid "Ad domain"
|
||||||
msgstr "Ad 网域"
|
msgstr "Ad 网域"
|
||||||
|
|
||||||
|
@ -883,11 +883,11 @@ msgstr "用户名和用户相同的一种协议只允许存在一个"
|
||||||
msgid "* Automatic login mode must fill in the username."
|
msgid "* Automatic login mode must fill in the username."
|
||||||
msgstr "自动登录模式,必须填写用户名"
|
msgstr "自动登录模式,必须填写用户名"
|
||||||
|
|
||||||
#: assets/serializers/system_user.py:110
|
#: assets/serializers/system_user.py:116
|
||||||
msgid "Path should starts with /"
|
msgid "Path should starts with /"
|
||||||
msgstr "路径应该以 / 开头"
|
msgstr "路径应该以 / 开头"
|
||||||
|
|
||||||
#: assets/serializers/system_user.py:121
|
#: assets/serializers/system_user.py:127
|
||||||
msgid "Password or private key required"
|
msgid "Password or private key required"
|
||||||
msgstr "密码或密钥密码需要一个"
|
msgstr "密码或密钥密码需要一个"
|
||||||
|
|
||||||
|
@ -3519,11 +3519,15 @@ msgstr "工单处理人"
|
||||||
msgid "Ticket basic info"
|
msgid "Ticket basic info"
|
||||||
msgstr "工单基本信息"
|
msgstr "工单基本信息"
|
||||||
|
|
||||||
#: tickets/handler/base.py:114
|
#: tickets/handler/base.py:114 tickets/handler/base.py:121
|
||||||
|
msgid "No content"
|
||||||
|
msgstr "无内容"
|
||||||
|
|
||||||
|
#: tickets/handler/base.py:116
|
||||||
msgid "Ticket applied info"
|
msgid "Ticket applied info"
|
||||||
msgstr "工单申请信息"
|
msgstr "工单申请信息"
|
||||||
|
|
||||||
#: tickets/handler/base.py:119
|
#: tickets/handler/base.py:123
|
||||||
msgid "Ticket approved info"
|
msgid "Ticket approved info"
|
||||||
msgstr "工单批准信息"
|
msgstr "工单批准信息"
|
||||||
|
|
||||||
|
@ -4949,7 +4953,7 @@ msgstr "实例个数"
|
||||||
msgid "Periodic display"
|
msgid "Periodic display"
|
||||||
msgstr "定时执行"
|
msgstr "定时执行"
|
||||||
|
|
||||||
#: xpack/plugins/cloud/utils.py:64
|
#: xpack/plugins/cloud/utils.py:65
|
||||||
msgid "Account unavailable"
|
msgid "Account unavailable"
|
||||||
msgstr "账户无效"
|
msgstr "账户无效"
|
||||||
|
|
||||||
|
@ -5037,3 +5041,5 @@ msgstr "旗舰版"
|
||||||
msgid "Community edition"
|
msgid "Community edition"
|
||||||
msgstr "社区版"
|
msgstr "社区版"
|
||||||
|
|
||||||
|
#~ msgid "No"
|
||||||
|
#~ msgstr "无"
|
||||||
|
|
|
@ -84,11 +84,13 @@ class AssetPermissionSerializer(BulkOrgResourceModelSerializer):
|
||||||
|
|
||||||
def to_internal_value(self, data):
|
def to_internal_value(self, data):
|
||||||
# 系统用户是必填项
|
# 系统用户是必填项
|
||||||
|
system_users = data.get('system_users', [])
|
||||||
system_users_display = data.pop('system_users_display', '')
|
system_users_display = data.pop('system_users_display', '')
|
||||||
for i in range(len(system_users_display)):
|
for i in range(len(system_users_display)):
|
||||||
system_user = SystemUser.objects.filter(name=system_users_display[i]).first()
|
system_user = SystemUser.objects.filter(name=system_users_display[i]).first()
|
||||||
if system_user and system_user.id not in data['system_users']:
|
if system_user and system_user.id not in system_users:
|
||||||
data['system_users'].append(system_user.id)
|
system_users.append(system_user.id)
|
||||||
|
data['system_users'] = system_users
|
||||||
return super().to_internal_value(data)
|
return super().to_internal_value(data)
|
||||||
|
|
||||||
def perform_display_create(self, instance, **kwargs):
|
def perform_display_create(self, instance, **kwargs):
|
||||||
|
|
|
@ -93,7 +93,7 @@ class BaseHandler(object):
|
||||||
_('Ticket status'), self.ticket.get_status_display(),
|
_('Ticket status'), self.ticket.get_status_display(),
|
||||||
_('Ticket action'), self.ticket.get_action_display(),
|
_('Ticket action'), self.ticket.get_action_display(),
|
||||||
_('Ticket applicant'), self.ticket.applicant_display,
|
_('Ticket applicant'), self.ticket.applicant_display,
|
||||||
_('Ticket assignees'), self.ticket.assignees_display,
|
_('Ticket assignees'), ', '.join(self.ticket.assignees_display),
|
||||||
)
|
)
|
||||||
if self.ticket.status_closed:
|
if self.ticket.status_closed:
|
||||||
basic_body += '''{}: {}'''.format(_('Ticket processor'), self.ticket.processor_display)
|
basic_body += '''{}: {}'''.format(_('Ticket processor'), self.ticket.processor_display)
|
||||||
|
@ -110,11 +110,15 @@ class BaseHandler(object):
|
||||||
return body
|
return body
|
||||||
|
|
||||||
def _base_construct_meta_body_of_open(self):
|
def _base_construct_meta_body_of_open(self):
|
||||||
meta_body_of_open = getattr(self, '_construct_meta_body_of_open', lambda: 'No')()
|
meta_body_of_open = getattr(
|
||||||
|
self, '_construct_meta_body_of_open', lambda: _('No content')
|
||||||
|
)()
|
||||||
body = self.body_html_format.format(_('Ticket applied info'), meta_body_of_open)
|
body = self.body_html_format.format(_('Ticket applied info'), meta_body_of_open)
|
||||||
return body
|
return body
|
||||||
|
|
||||||
def _base_construct_meta_body_of_approve(self):
|
def _base_construct_meta_body_of_approve(self):
|
||||||
meta_body_of_approve = getattr(self, '_construct_meta_body_of_approve', lambda: 'No')()
|
meta_body_of_approve = getattr(
|
||||||
|
self, '_construct_meta_body_of_approve', lambda: _('No content')
|
||||||
|
)()
|
||||||
body = self.body_html_format.format(_('Ticket approved info'), meta_body_of_approve)
|
body = self.body_html_format.format(_('Ticket approved info'), meta_body_of_approve)
|
||||||
return body
|
return body
|
||||||
|
|
Loading…
Reference in New Issue