mirror of https://github.com/jumpserver/jumpserver
[Update] 创建用户,更新用户,添加MFA设置选项
parent
8447c6f487
commit
5b52b907c0
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: 2018-04-20 11:17+0800\n"
|
"POT-Creation-Date: 2018-04-20 16:08+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"
|
||||||
|
@ -172,7 +172,7 @@ msgstr "密码或密钥密码"
|
||||||
#: users/forms.py:15 users/forms.py:24 users/forms.py:36
|
#: users/forms.py:15 users/forms.py:24 users/forms.py:36
|
||||||
#: users/templates/users/login.html:59
|
#: users/templates/users/login.html:59
|
||||||
#: users/templates/users/reset_password.html:52
|
#: users/templates/users/reset_password.html:52
|
||||||
#: users/templates/users/user_create.html:11
|
#: users/templates/users/user_create.html:10
|
||||||
#: users/templates/users/user_password_authentication.html:14
|
#: users/templates/users/user_password_authentication.html:14
|
||||||
#: users/templates/users/user_password_update.html:40
|
#: users/templates/users/user_password_update.html:40
|
||||||
#: users/templates/users/user_profile_update.html:40
|
#: users/templates/users/user_profile_update.html:40
|
||||||
|
@ -430,7 +430,7 @@ msgstr "默认资产组"
|
||||||
#: terminal/templates/terminal/command_list.html:32
|
#: 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:231
|
#: terminal/templates/terminal/session_list.html:71 users/forms.py:237
|
||||||
#: users/models/user.py:30 users/models/user.py:287
|
#: users/models/user.py:30 users/models/user.py:287
|
||||||
#: users/templates/users/user_group_detail.html:78
|
#: users/templates/users/user_group_detail.html:78
|
||||||
#: users/templates/users/user_group_list.html:13 users/views/user.py:339
|
#: users/templates/users/user_group_list.html:13 users/views/user.py:339
|
||||||
|
@ -605,8 +605,7 @@ msgstr "基本"
|
||||||
#: assets/templates/assets/asset_update.html:30
|
#: assets/templates/assets/asset_update.html:30
|
||||||
#: assets/templates/assets/gateway_create_update.html:45
|
#: assets/templates/assets/gateway_create_update.html:45
|
||||||
#: assets/templates/assets/system_user_update.html:7
|
#: assets/templates/assets/system_user_update.html:7
|
||||||
#: users/templates/users/user_create.html:9
|
#: users/templates/users/_user.html:21
|
||||||
#: users/templates/users/user_update.html:6
|
|
||||||
msgid "Auth"
|
msgid "Auth"
|
||||||
msgstr "认证"
|
msgstr "认证"
|
||||||
|
|
||||||
|
@ -637,7 +636,7 @@ msgstr "其它"
|
||||||
#: common/templates/common/terminal_setting.html:101
|
#: common/templates/common/terminal_setting.html:101
|
||||||
#: perms/templates/perms/asset_permission_create_update.html:69
|
#: perms/templates/perms/asset_permission_create_update.html:69
|
||||||
#: terminal/templates/terminal/terminal_update.html:47
|
#: terminal/templates/terminal/terminal_update.html:47
|
||||||
#: users/templates/users/_user.html:43
|
#: users/templates/users/_user.html:46
|
||||||
#: users/templates/users/user_bulk_update.html:23
|
#: users/templates/users/user_bulk_update.html:23
|
||||||
#: users/templates/users/user_password_update.html:58
|
#: users/templates/users/user_password_update.html:58
|
||||||
#: users/templates/users/user_profile.html:181
|
#: users/templates/users/user_profile.html:181
|
||||||
|
@ -663,7 +662,7 @@ msgstr "重置"
|
||||||
#: perms/templates/perms/asset_permission_create_update.html:70
|
#: perms/templates/perms/asset_permission_create_update.html:70
|
||||||
#: terminal/templates/terminal/session_list.html:120
|
#: terminal/templates/terminal/session_list.html:120
|
||||||
#: terminal/templates/terminal/terminal_update.html:48
|
#: terminal/templates/terminal/terminal_update.html:48
|
||||||
#: users/templates/users/_user.html:44
|
#: users/templates/users/_user.html:47
|
||||||
#: users/templates/users/first_login.html:62
|
#: users/templates/users/first_login.html:62
|
||||||
#: users/templates/users/forgot_password.html:44
|
#: users/templates/users/forgot_password.html:44
|
||||||
#: users/templates/users/user_bulk_update.html:24
|
#: users/templates/users/user_bulk_update.html:24
|
||||||
|
@ -1705,8 +1704,8 @@ msgstr "任务列表"
|
||||||
msgid "Task run history"
|
msgid "Task run history"
|
||||||
msgstr "执行历史"
|
msgstr "执行历史"
|
||||||
|
|
||||||
#: perms/forms.py:18 users/forms.py:188 users/forms.py:193 users/forms.py:205
|
#: perms/forms.py:18 users/forms.py:194 users/forms.py:199 users/forms.py:211
|
||||||
#: users/forms.py:235
|
#: users/forms.py:241
|
||||||
msgid "Select users"
|
msgid "Select users"
|
||||||
msgstr "选择用户"
|
msgstr "选择用户"
|
||||||
|
|
||||||
|
@ -1854,8 +1853,8 @@ msgstr "商业支持"
|
||||||
msgid "Docs"
|
msgid "Docs"
|
||||||
msgstr "文档"
|
msgstr "文档"
|
||||||
|
|
||||||
#: templates/_header_bar.html:37 templates/_nav_user.html:9 users/forms.py:105
|
#: templates/_header_bar.html:37 templates/_nav_user.html:9 users/forms.py:111
|
||||||
#: users/templates/users/_user.html:36
|
#: users/templates/users/_user.html:39
|
||||||
#: users/templates/users/user_password_update.html:37
|
#: users/templates/users/user_password_update.html:37
|
||||||
#: users/templates/users/user_profile.html:17
|
#: users/templates/users/user_profile.html:17
|
||||||
#: users/templates/users/user_profile_update.html:37
|
#: users/templates/users/user_profile_update.html:37
|
||||||
|
@ -2230,10 +2229,10 @@ msgid "Invalid token or cache refreshed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: users/forms.py:30
|
#: users/forms.py:30
|
||||||
msgid "MFA_code"
|
msgid "MFA code"
|
||||||
msgstr ""
|
msgstr "MFA 验证码"
|
||||||
|
|
||||||
#: users/forms.py:39 users/models/user.py:43
|
#: users/forms.py:40 users/models/user.py:43
|
||||||
#: 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:25
|
#: users/templates/users/user_list.html:25
|
||||||
|
@ -2241,55 +2240,55 @@ msgstr ""
|
||||||
msgid "Role"
|
msgid "Role"
|
||||||
msgstr "角色"
|
msgstr "角色"
|
||||||
|
|
||||||
#: users/forms.py:41 users/forms.py:151
|
#: users/forms.py:42 users/forms.py:157
|
||||||
msgid "ssh public key"
|
msgid "ssh public key"
|
||||||
msgstr "ssh公钥"
|
msgstr "ssh公钥"
|
||||||
|
|
||||||
#: users/forms.py:42 users/forms.py:152
|
#: users/forms.py:43 users/forms.py:158
|
||||||
msgid "ssh-rsa AAAA..."
|
msgid "ssh-rsa AAAA..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: users/forms.py:43
|
#: users/forms.py:44
|
||||||
msgid "Paste user id_rsa.pub here."
|
msgid "Paste user id_rsa.pub here."
|
||||||
msgstr "复制用户公钥到这里"
|
msgstr "复制用户公钥到这里"
|
||||||
|
|
||||||
#: users/forms.py:61 users/templates/users/user_detail.html:196
|
#: users/forms.py:62 users/templates/users/user_detail.html:196
|
||||||
msgid "Join user groups"
|
msgid "Join user groups"
|
||||||
msgstr "添加到用户组"
|
msgstr "添加到用户组"
|
||||||
|
|
||||||
#: users/forms.py:71 users/forms.py:166
|
#: users/forms.py:73 users/forms.py:172
|
||||||
msgid "Public key should not be the same as your old one."
|
msgid "Public key should not be the same as your old one."
|
||||||
msgstr "不能和原来的密钥相同"
|
msgstr "不能和原来的密钥相同"
|
||||||
|
|
||||||
#: users/forms.py:75 users/forms.py:170 users/serializers.py:45
|
#: users/forms.py:77 users/forms.py:176 users/serializers.py:45
|
||||||
msgid "Not a valid ssh public key"
|
msgid "Not a valid ssh public key"
|
||||||
msgstr "ssh密钥不合法"
|
msgstr "ssh密钥不合法"
|
||||||
|
|
||||||
#: users/forms.py:111
|
#: users/forms.py:117
|
||||||
msgid "Old password"
|
msgid "Old password"
|
||||||
msgstr "原来密码"
|
msgstr "原来密码"
|
||||||
|
|
||||||
#: users/forms.py:116
|
#: users/forms.py:122
|
||||||
msgid "New password"
|
msgid "New password"
|
||||||
msgstr "新密码"
|
msgstr "新密码"
|
||||||
|
|
||||||
#: users/forms.py:121
|
#: users/forms.py:127
|
||||||
msgid "Confirm password"
|
msgid "Confirm password"
|
||||||
msgstr "确认密码"
|
msgstr "确认密码"
|
||||||
|
|
||||||
#: users/forms.py:131
|
#: users/forms.py:137
|
||||||
msgid "Old password error"
|
msgid "Old password error"
|
||||||
msgstr "原来密码错误"
|
msgstr "原来密码错误"
|
||||||
|
|
||||||
#: users/forms.py:139
|
#: users/forms.py:145
|
||||||
msgid "Password does not match"
|
msgid "Password does not match"
|
||||||
msgstr "密码不一致"
|
msgstr "密码不一致"
|
||||||
|
|
||||||
#: users/forms.py:153
|
#: users/forms.py:159
|
||||||
msgid "Paste your id_rsa.pub here."
|
msgid "Paste your id_rsa.pub here."
|
||||||
msgstr "复制你的公钥到这里"
|
msgstr "复制你的公钥到这里"
|
||||||
|
|
||||||
#: users/forms.py:181 users/models/user.py:51
|
#: users/forms.py:187 users/models/user.py:51
|
||||||
#: users/templates/users/user_password_update.html:43
|
#: users/templates/users/user_password_update.html:43
|
||||||
#: users/templates/users/user_profile.html:68
|
#: users/templates/users/user_profile.html:68
|
||||||
#: users/templates/users/user_profile_update.html:43
|
#: users/templates/users/user_profile_update.html:43
|
||||||
|
@ -2358,8 +2357,8 @@ msgid "Wechat"
|
||||||
msgstr "微信"
|
msgstr "微信"
|
||||||
|
|
||||||
#: users/models/user.py:47
|
#: users/models/user.py:47
|
||||||
msgid "Enable OTP"
|
msgid "MFA"
|
||||||
msgstr "二次验证"
|
msgstr "MFA"
|
||||||
|
|
||||||
#: users/models/user.py:298
|
#: users/models/user.py:298
|
||||||
msgid "Administrator is the super user of system"
|
msgid "Administrator is the super user of system"
|
||||||
|
@ -2378,7 +2377,7 @@ msgstr "资产数量"
|
||||||
msgid "Account"
|
msgid "Account"
|
||||||
msgstr "账户"
|
msgstr "账户"
|
||||||
|
|
||||||
#: users/templates/users/_user.html:23
|
#: users/templates/users/_user.html:26
|
||||||
msgid "Security and Role"
|
msgid "Security and Role"
|
||||||
msgstr "角色安全"
|
msgstr "角色安全"
|
||||||
|
|
||||||
|
@ -2492,7 +2491,7 @@ msgstr "设置"
|
||||||
msgid "Create user"
|
msgid "Create user"
|
||||||
msgstr "创建用户"
|
msgstr "创建用户"
|
||||||
|
|
||||||
#: users/templates/users/user_create.html:13
|
#: users/templates/users/user_create.html:12
|
||||||
msgid "Reset link will be generated and sent to the user. "
|
msgid "Reset link will be generated and sent to the user. "
|
||||||
msgstr "生成重置密码连接,通过邮件发送给用户"
|
msgstr "生成重置密码连接,通过邮件发送给用户"
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ class UserCheckPasswordForm(forms.Form):
|
||||||
|
|
||||||
|
|
||||||
class UserCheckOtpCodeForm(forms.Form):
|
class UserCheckOtpCodeForm(forms.Form):
|
||||||
otp_code = forms.CharField(label=_('MFA_code'), max_length=6)
|
otp_code = forms.CharField(label=_('MFA code'), max_length=6)
|
||||||
|
|
||||||
|
|
||||||
class UserCreateUpdateForm(forms.ModelForm):
|
class UserCreateUpdateForm(forms.ModelForm):
|
||||||
|
@ -47,7 +47,7 @@ class UserCreateUpdateForm(forms.ModelForm):
|
||||||
model = User
|
model = User
|
||||||
fields = [
|
fields = [
|
||||||
'username', 'name', 'email', 'groups', 'wechat',
|
'username', 'name', 'email', 'groups', 'wechat',
|
||||||
'phone', 'role', 'date_expired', 'comment',
|
'phone', 'role', 'date_expired', 'comment', 'otp_level'
|
||||||
]
|
]
|
||||||
help_texts = {
|
help_texts = {
|
||||||
'username': '* required',
|
'username': '* required',
|
||||||
|
@ -61,6 +61,7 @@ class UserCreateUpdateForm(forms.ModelForm):
|
||||||
'data-placeholder': _('Join user groups')
|
'data-placeholder': _('Join user groups')
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
|
'otp_level': forms.RadioSelect()
|
||||||
}
|
}
|
||||||
|
|
||||||
def clean_public_key(self):
|
def clean_public_key(self):
|
||||||
|
@ -77,11 +78,15 @@ class UserCreateUpdateForm(forms.ModelForm):
|
||||||
|
|
||||||
def save(self, commit=True):
|
def save(self, commit=True):
|
||||||
password = self.cleaned_data.get('password')
|
password = self.cleaned_data.get('password')
|
||||||
|
otp_level = self.cleaned_data.get('otp_level')
|
||||||
public_key = self.cleaned_data.get('public_key')
|
public_key = self.cleaned_data.get('public_key')
|
||||||
user = super().save(commit=commit)
|
user = super().save(commit=commit)
|
||||||
if password:
|
if password:
|
||||||
user.set_password(password)
|
user.set_password(password)
|
||||||
user.save()
|
user.save()
|
||||||
|
if otp_level:
|
||||||
|
user.otp_level = otp_level
|
||||||
|
user.save()
|
||||||
if public_key:
|
if public_key:
|
||||||
user.public_key = public_key
|
user.public_key = public_key
|
||||||
user.save()
|
user.save()
|
||||||
|
|
|
@ -44,7 +44,7 @@ class User(AbstractUser):
|
||||||
avatar = models.ImageField(upload_to="avatar", null=True, verbose_name=_('Avatar'))
|
avatar = models.ImageField(upload_to="avatar", null=True, verbose_name=_('Avatar'))
|
||||||
wechat = models.CharField(max_length=128, blank=True, verbose_name=_('Wechat'))
|
wechat = models.CharField(max_length=128, blank=True, verbose_name=_('Wechat'))
|
||||||
phone = models.CharField(max_length=20, blank=True, null=True, verbose_name=_('Phone'))
|
phone = models.CharField(max_length=20, blank=True, null=True, verbose_name=_('Phone'))
|
||||||
otp_level = models.SmallIntegerField(default=0, choices=OTP_LEVEL_CHOICES, verbose_name=_('Enable OTP'))
|
otp_level = models.SmallIntegerField(default=0, choices=OTP_LEVEL_CHOICES, verbose_name=_('MFA'))
|
||||||
_otp_secret_key = models.CharField(max_length=128, blank=True, null=True)
|
_otp_secret_key = models.CharField(max_length=128, blank=True, null=True)
|
||||||
# Todo: Auto generate key, let user download
|
# Todo: Auto generate key, let user download
|
||||||
_private_key = models.CharField(max_length=5000, blank=True, verbose_name=_('Private key'))
|
_private_key = models.CharField(max_length=5000, blank=True, verbose_name=_('Private key'))
|
||||||
|
|
|
@ -17,7 +17,10 @@
|
||||||
{% bootstrap_field form.groups layout="horizontal" %}
|
{% bootstrap_field form.groups layout="horizontal" %}
|
||||||
|
|
||||||
<div class="hr-line-dashed"></div>
|
<div class="hr-line-dashed"></div>
|
||||||
{% block password %} {% endblock %}
|
|
||||||
|
<h3>{% trans 'Auth' %}</h3>
|
||||||
|
{% block password %}{% endblock %}
|
||||||
|
{% bootstrap_field form.otp_level layout="horizontal" %}
|
||||||
|
|
||||||
<div class="hr-line-dashed"></div>
|
<div class="hr-line-dashed"></div>
|
||||||
<h3>{% trans 'Security and Role' %}</h3>
|
<h3>{% trans 'Security and Role' %}</h3>
|
||||||
|
|
|
@ -6,11 +6,11 @@
|
||||||
{# {% bootstrap_field form.username layout="horizontal" %}#}
|
{# {% bootstrap_field form.username layout="horizontal" %}#}
|
||||||
{#{% endblock %}#}
|
{#{% endblock %}#}
|
||||||
{% block password %}
|
{% block password %}
|
||||||
<h3>{% trans 'Auth' %}</h3>
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-2 control-label">{% trans 'Password' %}</label>
|
<label class="col-sm-2 control-label">{% trans 'Password' %}</label>
|
||||||
<div class="col-sm-8 controls" >
|
<div class="col-sm-8 controls" style="margin-top: 8px;">
|
||||||
{% trans 'Reset link will be generated and sent to the user. ' %}
|
{% trans 'Reset link will be generated and sent to the user. ' %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
{% load bootstrap3 %}
|
{% load bootstrap3 %}
|
||||||
{% block user_template_title %}{% trans "Update user" %}{% endblock %}
|
{% block user_template_title %}{% trans "Update user" %}{% endblock %}
|
||||||
{% block password %}
|
{% block password %}
|
||||||
<h3>{% trans 'Auth' %}</h3>
|
|
||||||
{% bootstrap_field form.password layout="horizontal" %}
|
{% bootstrap_field form.password layout="horizontal" %}
|
||||||
{% bootstrap_field form.public_key layout="horizontal" %}
|
{% bootstrap_field form.public_key layout="horizontal" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
Loading…
Reference in New Issue