mirror of https://github.com/jumpserver/jumpserver
[Update] 创建/更新用户的role选项;密码强度提示信息中英文; (#1623)
* [Update] 修改 超级管理员/组织管理员 在 创建/更新 用户时role的选项 问题 * [Update] 用户密码强度提示信息支持中英文pull/1644/head
parent
227cc4e965
commit
485a178c0a
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -685,7 +685,7 @@ function popoverPasswordRules(password_check_rules, $el) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 初始化弹窗popover
|
// 初始化弹窗popover
|
||||||
function initPopover($container, $progress, $idPassword, $el, password_check_rules){
|
function initPopover($container, $progress, $idPassword, $el, password_check_rules, i18n_fallback){
|
||||||
options = {};
|
options = {};
|
||||||
// User Interface
|
// User Interface
|
||||||
options.ui = {
|
options.ui = {
|
||||||
|
@ -697,6 +697,14 @@ function initPopover($container, $progress, $idPassword, $el, password_check_rul
|
||||||
showProgressbar: true,
|
showProgressbar: true,
|
||||||
showVerdictsInsideProgressBar: true
|
showVerdictsInsideProgressBar: true
|
||||||
};
|
};
|
||||||
|
options.i18n = {
|
||||||
|
fallback: i18n_fallback,
|
||||||
|
t: function (key) {
|
||||||
|
var result = '';
|
||||||
|
result = options.i18n.fallback[key];
|
||||||
|
return result === key ? '' : result;
|
||||||
|
}
|
||||||
|
};
|
||||||
$idPassword.pwstrength(options);
|
$idPassword.pwstrength(options);
|
||||||
popoverPasswordRules(password_check_rules, $el);
|
popoverPasswordRules(password_check_rules, $el);
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,6 +78,30 @@ class UserCreateUpdateForm(OrgModelForm):
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
self.request = kwargs.pop("request", None)
|
||||||
|
super(UserCreateUpdateForm, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
roles = []
|
||||||
|
# Super admin user
|
||||||
|
if self.request.user.is_superuser:
|
||||||
|
roles.append((User.ROLE_ADMIN, dict(User.ROLE_CHOICES).get(User.ROLE_ADMIN)))
|
||||||
|
roles.append((User.ROLE_USER, dict(User.ROLE_CHOICES).get(User.ROLE_USER)))
|
||||||
|
|
||||||
|
# Org admin user
|
||||||
|
else:
|
||||||
|
user = kwargs.get('instance')
|
||||||
|
# Update
|
||||||
|
if user:
|
||||||
|
role = kwargs.get('instance').role
|
||||||
|
roles.append((role, dict(User.ROLE_CHOICES).get(role)))
|
||||||
|
# Create
|
||||||
|
else:
|
||||||
|
roles.append((User.ROLE_USER, dict(User.ROLE_CHOICES).get(User.ROLE_USER)))
|
||||||
|
|
||||||
|
field = self.fields['role']
|
||||||
|
field.choices = set(roles)
|
||||||
|
|
||||||
def clean_public_key(self):
|
def clean_public_key(self):
|
||||||
public_key = self.cleaned_data['public_key']
|
public_key = self.cleaned_data['public_key']
|
||||||
if not public_key:
|
if not public_key:
|
||||||
|
|
|
@ -100,10 +100,18 @@
|
||||||
progress = $('#id_progress'),
|
progress = $('#id_progress'),
|
||||||
password_check_rules = {{ password_check_rules|safe }},
|
password_check_rules = {{ password_check_rules|safe }},
|
||||||
minLength = {{ min_length }},
|
minLength = {{ min_length }},
|
||||||
top = 146, left = 170;
|
top = 146, left = 170,
|
||||||
|
i18n_fallback = {
|
||||||
|
"veryWeak": "{% trans 'Very weak' %}",
|
||||||
|
"weak": "{% trans 'Weak' %}",
|
||||||
|
"normal": "{% trans 'Normal' %}",
|
||||||
|
"medium": "{% trans 'Medium' %}",
|
||||||
|
"strong": "{% trans 'Strong' %}",
|
||||||
|
"veryStrong": "{% trans 'Very strong' %}"
|
||||||
|
};
|
||||||
|
|
||||||
// 初始化popover
|
// 初始化popover
|
||||||
initPopover(container, progress, idPassword, el, password_check_rules);
|
initPopover(container, progress, idPassword, el, password_check_rules, i18n_fallback);
|
||||||
|
|
||||||
// 监听事件
|
// 监听事件
|
||||||
idPassword.on('focus', function () {
|
idPassword.on('focus', function () {
|
||||||
|
|
|
@ -93,10 +93,18 @@
|
||||||
password_check_rules = {{ password_check_rules|safe }},
|
password_check_rules = {{ password_check_rules|safe }},
|
||||||
minLength = {{ min_length }},
|
minLength = {{ min_length }},
|
||||||
top = idPassword.offset().top - $('.navbar').outerHeight(true) - $('.page-heading').outerHeight(true) - 10 + 34,
|
top = idPassword.offset().top - $('.navbar').outerHeight(true) - $('.page-heading').outerHeight(true) - 10 + 34,
|
||||||
left = 377;
|
left = 377,
|
||||||
|
i18n_fallback = {
|
||||||
|
"veryWeak": "{% trans 'Very weak' %}",
|
||||||
|
"weak": "{% trans 'Weak' %}",
|
||||||
|
"normal": "{% trans 'Normal' %}",
|
||||||
|
"medium": "{% trans 'Medium' %}",
|
||||||
|
"strong": "{% trans 'Strong' %}",
|
||||||
|
"veryStrong": "{% trans 'Very strong' %}"
|
||||||
|
};
|
||||||
|
|
||||||
// 初始化popover
|
// 初始化popover
|
||||||
initPopover(container, progress, idPassword, el, password_check_rules);
|
initPopover(container, progress, idPassword, el, password_check_rules, i18n_fallback);
|
||||||
|
|
||||||
// 监听事件
|
// 监听事件
|
||||||
idPassword.on('focus', function () {
|
idPassword.on('focus', function () {
|
||||||
|
|
|
@ -29,10 +29,18 @@
|
||||||
password_check_rules = {{ password_check_rules|safe }},
|
password_check_rules = {{ password_check_rules|safe }},
|
||||||
minLength = {{ min_length }},
|
minLength = {{ min_length }},
|
||||||
top = idPassword.offset().top - $('.navbar').outerHeight(true) - $('.page-heading').outerHeight(true) - 10 + 34,
|
top = idPassword.offset().top - $('.navbar').outerHeight(true) - $('.page-heading').outerHeight(true) - 10 + 34,
|
||||||
left = 377;
|
left = 377,
|
||||||
|
i18n_fallback = {
|
||||||
|
"veryWeak": "{% trans 'Very weak' %}",
|
||||||
|
"weak": "{% trans 'Weak' %}",
|
||||||
|
"normal": "{% trans 'Normal' %}",
|
||||||
|
"medium": "{% trans 'Medium' %}",
|
||||||
|
"strong": "{% trans 'Strong' %}",
|
||||||
|
"veryStrong": "{% trans 'Very strong' %}"
|
||||||
|
};
|
||||||
|
|
||||||
// 初始化popover
|
// 初始化popover
|
||||||
initPopover(container, progress, idPassword, el, password_check_rules);
|
initPopover(container, progress, idPassword, el, password_check_rules, i18n_fallback);
|
||||||
|
|
||||||
// 监听事件
|
// 监听事件
|
||||||
idPassword.on('focus', function () {
|
idPassword.on('focus', function () {
|
||||||
|
|
|
@ -90,6 +90,12 @@ class UserCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateView):
|
||||||
post_user_create.send(self.__class__, user=user)
|
post_user_create.send(self.__class__, user=user)
|
||||||
return super().form_valid(form)
|
return super().form_valid(form)
|
||||||
|
|
||||||
|
def get_form_kwargs(self):
|
||||||
|
kwargs = super(UserCreateView, self).get_form_kwargs()
|
||||||
|
data = {'request': self.request}
|
||||||
|
kwargs.update(data)
|
||||||
|
return kwargs
|
||||||
|
|
||||||
|
|
||||||
class UserUpdateView(AdminUserRequiredMixin, SuccessMessageMixin, UpdateView):
|
class UserUpdateView(AdminUserRequiredMixin, SuccessMessageMixin, UpdateView):
|
||||||
model = User
|
model = User
|
||||||
|
@ -123,6 +129,12 @@ class UserUpdateView(AdminUserRequiredMixin, SuccessMessageMixin, UpdateView):
|
||||||
return self.form_invalid(form)
|
return self.form_invalid(form)
|
||||||
return super().form_valid(form)
|
return super().form_valid(form)
|
||||||
|
|
||||||
|
def get_form_kwargs(self):
|
||||||
|
kwargs = super(UserUpdateView, self).get_form_kwargs()
|
||||||
|
data = {'request': self.request}
|
||||||
|
kwargs.update(data)
|
||||||
|
return kwargs
|
||||||
|
|
||||||
|
|
||||||
class UserBulkUpdateView(AdminUserRequiredMixin, TemplateView):
|
class UserBulkUpdateView(AdminUserRequiredMixin, TemplateView):
|
||||||
model = User
|
model = User
|
||||||
|
|
Loading…
Reference in New Issue