mirror of https://github.com/jumpserver/jumpserver
修改一下bug
parent
5cd09a6503
commit
6a8db89614
|
@ -8,11 +8,7 @@ password = mysql234
|
||||||
database = jumpserver
|
database = jumpserver
|
||||||
|
|
||||||
[ldap]
|
[ldap]
|
||||||
host_url = ldap://192.168.8.60:389
|
ldap_enable = 1
|
||||||
base_dn = dc=fengxing,dc=org
|
|
||||||
root_dn = cn=admin,dc=fengxing,dc=org
|
|
||||||
root_pw = 123456
|
|
||||||
ldap_enable = 0
|
|
||||||
host_url = ldap://127.0.0.1:389
|
host_url = ldap://127.0.0.1:389
|
||||||
base_dn = dc=jumpserver,dc=org
|
base_dn = dc=jumpserver,dc=org
|
||||||
root_dn = cn=admin,dc=jumpserver,dc=org
|
root_dn = cn=admin,dc=jumpserver,dc=org
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
import time
|
import time
|
||||||
from django import template
|
from django import template
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from juser.models import User
|
from juser.models import User, UserGroup
|
||||||
|
|
||||||
register = template.Library()
|
register = template.Library()
|
||||||
|
|
||||||
|
@ -56,6 +56,12 @@ def perm_count(user_id):
|
||||||
return user.perm_set.all().count()
|
return user.perm_set.all().count()
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter(name='member_count')
|
||||||
|
def member_count(group_id):
|
||||||
|
group = UserGroup.objects.get(id=group_id)
|
||||||
|
return group.user_set.count()
|
||||||
|
|
||||||
|
|
||||||
@register.filter(name='group_type_to_str')
|
@register.filter(name='group_type_to_str')
|
||||||
def group_type_to_str(type_name):
|
def group_type_to_str(type_name):
|
||||||
group_types = {
|
group_types = {
|
||||||
|
@ -63,5 +69,4 @@ def group_type_to_str(type_name):
|
||||||
'M': '绠$悊缁',
|
'M': '绠$悊缁',
|
||||||
'A': '鎺堟潈缁',
|
'A': '鎺堟潈缁',
|
||||||
}
|
}
|
||||||
|
|
||||||
return group_types.get(type_name)
|
return group_types.get(type_name)
|
||||||
|
|
415
juser/views.py
415
juser/views.py
|
@ -122,213 +122,17 @@ def group_db_add(**kwargs):
|
||||||
UserGroup.objects.create(**kwargs)
|
UserGroup.objects.create(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
def add_user_to_group(username, group_name):
|
def group_add_user(group_name, user_id=None, username=None):
|
||||||
try:
|
try:
|
||||||
user = User.objects.get(username=username)
|
if user_id:
|
||||||
group = UserGroup.objects.get(name=group_name)
|
user = User.objects.get(id=user_id)
|
||||||
except ObjectDoesNotExist:
|
|
||||||
raise AddError('User %s or group % does not exit. ' % username, group_name)
|
|
||||||
else:
|
|
||||||
groups = [group]
|
|
||||||
for g in user.user_group.all():
|
|
||||||
groups.append(g)
|
|
||||||
user.user_group = groups
|
|
||||||
|
|
||||||
|
|
||||||
def group_add_user(group_name, user_id):
|
|
||||||
group = UserGroup.objects.get(name=group_name)
|
|
||||||
user = User.objects.get(id=user_id)
|
|
||||||
group.user_set.add(user)
|
|
||||||
|
|
||||||
|
|
||||||
def group_add(request):
|
|
||||||
error = ''
|
|
||||||
msg = ''
|
|
||||||
header_title, path1, path2 = '娣诲姞灞炵粍 | Add Group', 'juser', 'group_add'
|
|
||||||
group_types = {
|
|
||||||
'P': '绉佹湁缁',
|
|
||||||
'M': '绠$悊缁',
|
|
||||||
'A': '鎺堟潈缁',
|
|
||||||
}
|
|
||||||
users = User.objects.all()
|
|
||||||
if request.method == 'POST':
|
|
||||||
group_name = request.POST.get('group_name', '')
|
|
||||||
group_type = request.POST.get('group_type', 'A')
|
|
||||||
users_selected = request.POST.getlist('users_selected', '')
|
|
||||||
comment = request.POST.get('comment', '')
|
|
||||||
|
|
||||||
try:
|
|
||||||
if not group_name:
|
|
||||||
error = u'缁勫悕涓嶈兘涓虹┖'
|
|
||||||
raise AddError
|
|
||||||
group_db_add(name=group_name, comment=comment, type=group_type)
|
|
||||||
for user_id in users_selected:
|
|
||||||
group_add_user(group_name, user_id)
|
|
||||||
|
|
||||||
except AddError:
|
|
||||||
pass
|
|
||||||
except TypeError:
|
|
||||||
error = u'淇濆瓨鐢ㄦ埛缁勫け璐'
|
|
||||||
else:
|
else:
|
||||||
msg = u'娣诲姞缁 %s 鎴愬姛' % group_name
|
|
||||||
|
|
||||||
return render_to_response('juser/group_add.html', locals())
|
|
||||||
|
|
||||||
|
|
||||||
def group_list(request):
|
|
||||||
header_title, path1, path2 = '鏌ョ湅灞炵粍 | Show Group', 'juser', 'group_list'
|
|
||||||
groups = contact_list = UserGroup.objects.filter(Q(type='M') | Q(type='A')).order_by('id')
|
|
||||||
p = paginator = Paginator(contact_list, 10)
|
|
||||||
|
|
||||||
try:
|
|
||||||
page = int(request.GET.get('page', '1'))
|
|
||||||
except ValueError:
|
|
||||||
page = 1
|
|
||||||
|
|
||||||
try:
|
|
||||||
contacts = paginator.page(page)
|
|
||||||
except (EmptyPage, InvalidPage):
|
|
||||||
contacts = paginator.page(paginator.num_pages)
|
|
||||||
return render_to_response('juser/group_list.html', locals())
|
|
||||||
|
|
||||||
|
|
||||||
def group_detail(request):
|
|
||||||
group_id = request.GET.get('id', None)
|
|
||||||
if not group_id:
|
|
||||||
return HttpResponseRedirect('/')
|
|
||||||
group = UserGroup.objects.get(id=group_id)
|
|
||||||
return render_to_response('juser/group_detail.html', locals())
|
|
||||||
|
|
||||||
|
|
||||||
def group_del(request):
|
|
||||||
group_id = request.GET.get('id', None)
|
|
||||||
if not group_id:
|
|
||||||
return HttpResponseRedirect('/')
|
|
||||||
group = UserGroup.objects.get(id=group_id)
|
|
||||||
group.delete()
|
|
||||||
return HttpResponseRedirect('/juser/group_list/', locals())
|
|
||||||
|
|
||||||
|
|
||||||
def group_edit(request):
|
|
||||||
error = ''
|
|
||||||
msg = ''
|
|
||||||
header_title, path1, path2 = '淇敼灞炵粍 | Edit Group', 'juser', 'group_edit'
|
|
||||||
if request.method == 'GET':
|
|
||||||
group_id = request.GET.get('id', None)
|
|
||||||
group = UserGroup.objects.get(id=group_id)
|
|
||||||
group_name = group.name
|
|
||||||
comment = group.comment
|
|
||||||
|
|
||||||
return render_to_response('juser/group_add.html', locals())
|
|
||||||
else:
|
|
||||||
group_id = request.POST.get('group_id', None)
|
|
||||||
group_name = request.POST.get('group_name', None)
|
|
||||||
comment = request.POST.get('comment', '')
|
|
||||||
group = UserGroup.objects.filter(id=group_id)
|
|
||||||
group.update(name=group_name, comment=comment)
|
|
||||||
|
|
||||||
return HttpResponseRedirect('/juser/group_list/')
|
|
||||||
|
|
||||||
|
|
||||||
def user_list(request):
|
|
||||||
user_role = {'SU': u'瓒呯骇绠$悊鍛', 'GA': u'缁勭鐞嗗憳', 'CU': u'鏅氱敤鎴'}
|
|
||||||
header_title, path1, path2 = '鏌ョ湅鐢ㄦ埛 | Show User', 'juser', 'user_list'
|
|
||||||
users = contact_list = User.objects.all().order_by('id')
|
|
||||||
p = paginator = Paginator(contact_list, 10)
|
|
||||||
|
|
||||||
try:
|
|
||||||
page = int(request.GET.get('page', '1'))
|
|
||||||
except ValueError:
|
|
||||||
page = 1
|
|
||||||
|
|
||||||
try:
|
|
||||||
contacts = paginator.page(page)
|
|
||||||
except (EmptyPage, InvalidPage):
|
|
||||||
contacts = paginator.page(paginator.num_pages)
|
|
||||||
return render_to_response('juser/user_list.html', locals())
|
|
||||||
|
|
||||||
|
|
||||||
def user_detail(request):
|
|
||||||
user_id = request.GET.get('id', None)
|
|
||||||
if not user_id:
|
|
||||||
return HttpResponseRedirect('/')
|
|
||||||
user = User.objects.get(id=user_id)
|
|
||||||
return render_to_response('juser/user_detail.html', locals())
|
|
||||||
|
|
||||||
|
|
||||||
def user_del(request):
|
|
||||||
user_id = request.GET.get('id', None)
|
|
||||||
if not user_id:
|
|
||||||
return HttpResponseRedirect('/')
|
|
||||||
user = User.objects.get(id=user_id)
|
|
||||||
user.delete()
|
|
||||||
group = UserGroup.objects.get(name=user.username)
|
|
||||||
group.delete()
|
|
||||||
return HttpResponseRedirect('/juser/user_list/', locals())
|
|
||||||
|
|
||||||
|
|
||||||
def user_edit(request):
|
|
||||||
header_title, path1, path2 = '缂栬緫鐢ㄦ埛 | Edit User', 'juser', 'user_edit'
|
|
||||||
readonly = "readonly"
|
|
||||||
if request.method == 'GET':
|
|
||||||
user_id = request.GET.get('id', None)
|
|
||||||
if not user_id:
|
|
||||||
return HttpResponseRedirect('/')
|
|
||||||
user = User.objects.get(id=user_id)
|
|
||||||
username = user.username
|
|
||||||
password = user.password
|
|
||||||
ssh_key_pwd = user.ssh_key_pwd
|
|
||||||
name = user.name
|
|
||||||
all_group = UserGroup.objects.all()
|
|
||||||
groups = user.user_group.filter(type='M')
|
|
||||||
groups_str = ' '.join([str(group.id) for group in groups])
|
|
||||||
user_role = {'SU': u'瓒呯骇绠$悊鍛', 'GA': u'缁勭鐞嗗憳', 'CU': u'鏅氱敤鎴'}
|
|
||||||
role_post = user.role
|
|
||||||
ssh_pwd = user.ssh_pwd
|
|
||||||
email = user.email
|
|
||||||
|
|
||||||
else:
|
|
||||||
username = request.POST.get('username', None)
|
|
||||||
password = request.POST.get('password', None)
|
|
||||||
name = request.POST.get('name', None)
|
|
||||||
email = request.POST.get('email', '')
|
|
||||||
groups = request.POST.getlist('groups', None)
|
|
||||||
groups_str = ' '.join(groups)
|
|
||||||
role_post = request.POST.get('role', None)
|
|
||||||
ssh_pwd = request.POST.get('ssh_pwd', None)
|
|
||||||
ssh_key_pwd = request.POST.get('ssh_key_pwd', None)
|
|
||||||
is_active = request.POST.get('is_active', '1')
|
|
||||||
ldap_pwd = gen_rand_pwd(16)
|
|
||||||
all_group = UserGroup.objects.all()
|
|
||||||
user_role = {'SU': u'瓒呯骇绠$悊鍛', 'GA': u'缁勭鐞嗗憳', 'CU': u'鏅氱敤鎴'}
|
|
||||||
|
|
||||||
if username:
|
|
||||||
user = User.objects.get(username=username)
|
user = User.objects.get(username=username)
|
||||||
else:
|
except ObjectDoesNotExist:
|
||||||
return HttpResponseRedirect('/')
|
raise AddError('鐢ㄦ埛鑾峰彇澶辫触')
|
||||||
|
else:
|
||||||
if password != user.password:
|
group = UserGroup.objects.get(name=group_name)
|
||||||
password = md5_crypt(password)
|
group.user_set.add(user)
|
||||||
|
|
||||||
if ssh_pwd != user.ssh_pwd:
|
|
||||||
ssh_pwd = CRYPTOR.encrypt(ssh_pwd)
|
|
||||||
|
|
||||||
if ssh_key_pwd != user.ssh_key_pwd:
|
|
||||||
ssh_key_pwd = CRYPTOR.encrypt(ssh_key_pwd)
|
|
||||||
|
|
||||||
db_update_user(username=username,
|
|
||||||
password=password,
|
|
||||||
name=name,
|
|
||||||
email=email,
|
|
||||||
groups=groups,
|
|
||||||
role=role_post,
|
|
||||||
ssh_pwd=ssh_pwd,
|
|
||||||
ssh_key_pwd=ssh_key_pwd)
|
|
||||||
msg = u'淇敼鐢ㄦ埛鎴愬姛'
|
|
||||||
|
|
||||||
return HttpResponseRedirect('/juser/user_list/')
|
|
||||||
|
|
||||||
return render_to_response('juser/user_add.html', locals())
|
|
||||||
|
|
||||||
|
|
||||||
def db_add_user(**kwargs):
|
def db_add_user(**kwargs):
|
||||||
|
@ -444,13 +248,154 @@ def ldap_del_user(username):
|
||||||
ldap_conn.delete(sudo_dn)
|
ldap_conn.delete(sudo_dn)
|
||||||
|
|
||||||
|
|
||||||
def user_add(request):
|
def group_add(request):
|
||||||
error = ''
|
error = ''
|
||||||
msg = ''
|
msg = ''
|
||||||
header_title, path1, path2 = '娣诲姞鐢ㄦ埛 | Add User', 'juser', 'user_add'
|
header_title, path1, path2 = '娣诲姞灞炵粍 | Add Group', 'juser', 'group_add'
|
||||||
user_role = {'SU': u'瓒呯骇绠$悊鍛', 'GA': u'缁勭鐞嗗憳', 'CU': u'鏅氱敤鎴'}
|
group_types = {
|
||||||
all_group = UserGroup.objects.filter(type='M')
|
'P': '绉佹湁缁',
|
||||||
|
'M': '绠$悊缁',
|
||||||
|
'A': '鎺堟潈缁',
|
||||||
|
}
|
||||||
|
users = User.objects.all()
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
|
group_name = request.POST.get('group_name', '')
|
||||||
|
group_type = request.POST.get('group_type', 'A')
|
||||||
|
users_selected = request.POST.getlist('users_selected', '')
|
||||||
|
comment = request.POST.get('comment', '')
|
||||||
|
|
||||||
|
try:
|
||||||
|
if not group_name:
|
||||||
|
error = u'缁勫悕涓嶈兘涓虹┖'
|
||||||
|
raise AddError
|
||||||
|
group_db_add(name=group_name, comment=comment, type=group_type)
|
||||||
|
for user_id in users_selected:
|
||||||
|
group_add_user(group_name, user_id=user_id)
|
||||||
|
|
||||||
|
except AddError:
|
||||||
|
pass
|
||||||
|
except TypeError:
|
||||||
|
error = u'淇濆瓨鐢ㄦ埛缁勫け璐'
|
||||||
|
else:
|
||||||
|
msg = u'娣诲姞缁 %s 鎴愬姛' % group_name
|
||||||
|
|
||||||
|
return render_to_response('juser/group_add.html', locals())
|
||||||
|
|
||||||
|
|
||||||
|
def group_list(request):
|
||||||
|
header_title, path1, path2 = '鏌ョ湅灞炵粍 | Show Group', 'juser', 'group_list'
|
||||||
|
groups = contact_list = UserGroup.objects.filter(Q(type='M') | Q(type='A')).order_by('id')
|
||||||
|
p = paginator = Paginator(contact_list, 10)
|
||||||
|
|
||||||
|
try:
|
||||||
|
page = int(request.GET.get('page', '1'))
|
||||||
|
except ValueError:
|
||||||
|
page = 1
|
||||||
|
|
||||||
|
try:
|
||||||
|
contacts = paginator.page(page)
|
||||||
|
except (EmptyPage, InvalidPage):
|
||||||
|
contacts = paginator.page(paginator.num_pages)
|
||||||
|
return render_to_response('juser/group_list.html', locals())
|
||||||
|
|
||||||
|
|
||||||
|
def group_detail(request):
|
||||||
|
group_id = request.GET.get('id', None)
|
||||||
|
if not group_id:
|
||||||
|
return HttpResponseRedirect('/')
|
||||||
|
group = UserGroup.objects.get(id=group_id)
|
||||||
|
users = group.user_set.all()
|
||||||
|
return render_to_response('juser/group_detail.html', locals())
|
||||||
|
|
||||||
|
|
||||||
|
def group_del(request):
|
||||||
|
group_id = request.GET.get('id', None)
|
||||||
|
if not group_id:
|
||||||
|
return HttpResponseRedirect('/')
|
||||||
|
group = UserGroup.objects.get(id=group_id)
|
||||||
|
group.delete()
|
||||||
|
return HttpResponseRedirect('/juser/group_list/', locals())
|
||||||
|
|
||||||
|
|
||||||
|
def group_edit(request):
|
||||||
|
error = ''
|
||||||
|
msg = ''
|
||||||
|
header_title, path1, path2 = '淇敼灞炵粍 | Edit Group', 'juser', 'group_edit'
|
||||||
|
if request.method == 'GET':
|
||||||
|
group_id = request.GET.get('id', None)
|
||||||
|
group = UserGroup.objects.get(id=group_id)
|
||||||
|
group_name = group.name
|
||||||
|
comment = group.comment
|
||||||
|
|
||||||
|
return render_to_response('juser/group_add.html', locals())
|
||||||
|
else:
|
||||||
|
group_id = request.POST.get('group_id', None)
|
||||||
|
group_name = request.POST.get('group_name', None)
|
||||||
|
comment = request.POST.get('comment', '')
|
||||||
|
group = UserGroup.objects.filter(id=group_id)
|
||||||
|
group.update(name=group_name, comment=comment)
|
||||||
|
|
||||||
|
return HttpResponseRedirect('/juser/group_list/')
|
||||||
|
|
||||||
|
|
||||||
|
def user_list(request):
|
||||||
|
user_role = {'SU': u'瓒呯骇绠$悊鍛', 'GA': u'缁勭鐞嗗憳', 'CU': u'鏅氱敤鎴'}
|
||||||
|
header_title, path1, path2 = '鏌ョ湅鐢ㄦ埛 | Show User', 'juser', 'user_list'
|
||||||
|
users = contact_list = User.objects.all().order_by('id')
|
||||||
|
p = paginator = Paginator(contact_list, 10)
|
||||||
|
|
||||||
|
try:
|
||||||
|
page = int(request.GET.get('page', '1'))
|
||||||
|
except ValueError:
|
||||||
|
page = 1
|
||||||
|
|
||||||
|
try:
|
||||||
|
contacts = paginator.page(page)
|
||||||
|
except (EmptyPage, InvalidPage):
|
||||||
|
contacts = paginator.page(paginator.num_pages)
|
||||||
|
return render_to_response('juser/user_list.html', locals())
|
||||||
|
|
||||||
|
|
||||||
|
def user_detail(request):
|
||||||
|
user_id = request.GET.get('id', None)
|
||||||
|
if not user_id:
|
||||||
|
return HttpResponseRedirect('/')
|
||||||
|
user = User.objects.get(id=user_id)
|
||||||
|
return render_to_response('juser/user_detail.html', locals())
|
||||||
|
|
||||||
|
|
||||||
|
def user_del(request):
|
||||||
|
user_id = request.GET.get('id', None)
|
||||||
|
if not user_id:
|
||||||
|
return HttpResponseRedirect('/')
|
||||||
|
user = User.objects.get(id=user_id)
|
||||||
|
user.delete()
|
||||||
|
group = UserGroup.objects.get(name=user.username)
|
||||||
|
group.delete()
|
||||||
|
return HttpResponseRedirect('/juser/user_list/', locals())
|
||||||
|
|
||||||
|
|
||||||
|
def user_edit(request):
|
||||||
|
header_title, path1, path2 = '缂栬緫鐢ㄦ埛 | Edit User', 'juser', 'user_edit'
|
||||||
|
readonly = "readonly"
|
||||||
|
if request.method == 'GET':
|
||||||
|
user_id = request.GET.get('id', None)
|
||||||
|
if not user_id:
|
||||||
|
return HttpResponseRedirect('/')
|
||||||
|
user = User.objects.get(id=user_id)
|
||||||
|
username = user.username
|
||||||
|
password = user.password
|
||||||
|
ssh_key_pwd = user.ssh_key_pwd
|
||||||
|
name = user.name
|
||||||
|
all_group = UserGroup.objects.filter(Q(type='M') | Q(type='A'))
|
||||||
|
groups = user.user_group.filter(Q(type='M') | Q(type='A'))
|
||||||
|
groups_str = ' '.join([str(group.id) for group in groups])
|
||||||
|
user_role = {'SU': u'瓒呯骇绠$悊鍛', 'GA': u'缁勭鐞嗗憳', 'CU': u'鏅氱敤鎴'}
|
||||||
|
role_post = user.role
|
||||||
|
ssh_pwd = user.ssh_pwd
|
||||||
|
email = user.email
|
||||||
|
|
||||||
|
else:
|
||||||
username = request.POST.get('username', None)
|
username = request.POST.get('username', None)
|
||||||
password = request.POST.get('password', None)
|
password = request.POST.get('password', None)
|
||||||
name = request.POST.get('name', None)
|
name = request.POST.get('name', None)
|
||||||
|
@ -462,6 +407,56 @@ def user_add(request):
|
||||||
ssh_key_pwd = request.POST.get('ssh_key_pwd', None)
|
ssh_key_pwd = request.POST.get('ssh_key_pwd', None)
|
||||||
is_active = request.POST.get('is_active', '1')
|
is_active = request.POST.get('is_active', '1')
|
||||||
ldap_pwd = gen_rand_pwd(16)
|
ldap_pwd = gen_rand_pwd(16)
|
||||||
|
all_group = UserGroup.objects.filter(Q(type='M') | Q(type='A'))
|
||||||
|
user_role = {'SU': u'瓒呯骇绠$悊鍛', 'GA': u'缁勭鐞嗗憳', 'CU': u'鏅氱敤鎴'}
|
||||||
|
|
||||||
|
if username:
|
||||||
|
user = User.objects.get(username=username)
|
||||||
|
else:
|
||||||
|
return HttpResponseRedirect('/')
|
||||||
|
|
||||||
|
if password != user.password:
|
||||||
|
password = md5_crypt(password)
|
||||||
|
|
||||||
|
if ssh_pwd != user.ssh_pwd:
|
||||||
|
ssh_pwd = CRYPTOR.encrypt(ssh_pwd)
|
||||||
|
|
||||||
|
if ssh_key_pwd != user.ssh_key_pwd:
|
||||||
|
ssh_key_pwd = CRYPTOR.encrypt(ssh_key_pwd)
|
||||||
|
|
||||||
|
db_update_user(username=username,
|
||||||
|
password=password,
|
||||||
|
name=name,
|
||||||
|
email=email,
|
||||||
|
groups=groups,
|
||||||
|
role=role_post,
|
||||||
|
ssh_pwd=ssh_pwd,
|
||||||
|
ssh_key_pwd=ssh_key_pwd)
|
||||||
|
msg = u'淇敼鐢ㄦ埛鎴愬姛'
|
||||||
|
|
||||||
|
return HttpResponseRedirect('/juser/user_list/')
|
||||||
|
|
||||||
|
return render_to_response('juser/user_add.html', locals())
|
||||||
|
|
||||||
|
|
||||||
|
def user_add(request):
|
||||||
|
error = ''
|
||||||
|
msg = ''
|
||||||
|
header_title, path1, path2 = '娣诲姞鐢ㄦ埛 | Add User', 'juser', 'user_add'
|
||||||
|
user_role = {'SU': u'瓒呯骇绠$悊鍛', 'GA': u'缁勭鐞嗗憳', 'CU': u'鏅氱敤鎴'}
|
||||||
|
all_group = UserGroup.objects.filter(Q(type='M') | Q(type='A')).order_by('-type')
|
||||||
|
if request.method == 'POST':
|
||||||
|
username = request.POST.get('username', None)
|
||||||
|
password = request.POST.get('password', '')
|
||||||
|
name = request.POST.get('name', None)
|
||||||
|
email = request.POST.get('email', '')
|
||||||
|
groups = request.POST.getlist('groups', None)
|
||||||
|
groups_str = ' '.join(groups)
|
||||||
|
role_post = request.POST.get('role', 'CU')
|
||||||
|
ssh_pwd = request.POST.get('ssh_pwd', '')
|
||||||
|
ssh_key_pwd = request.POST.get('ssh_key_pwd', '')
|
||||||
|
is_active = request.POST.get('is_active', '1')
|
||||||
|
ldap_pwd = gen_rand_pwd(16)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if None in [username, password, ssh_key_pwd, name, groups, role_post, is_active]:
|
if None in [username, password, ssh_key_pwd, name, groups, role_post, is_active]:
|
||||||
|
@ -481,7 +476,7 @@ def user_add(request):
|
||||||
password=md5_crypt(password),
|
password=md5_crypt(password),
|
||||||
name=name, email=email,
|
name=name, email=email,
|
||||||
groups=groups, role=role_post,
|
groups=groups, role=role_post,
|
||||||
ssh_pwd=CRYPTOR.encrypt(ssh_pwd),
|
ssh_pwd=CRYPTOR.encrypt(ssh_pwd) if ssh_pwd else '',
|
||||||
ssh_key_pwd=CRYPTOR.encrypt(ssh_key_pwd),
|
ssh_key_pwd=CRYPTOR.encrypt(ssh_key_pwd),
|
||||||
ldap_pwd=CRYPTOR.encrypt(ldap_pwd),
|
ldap_pwd=CRYPTOR.encrypt(ldap_pwd),
|
||||||
is_active=is_active,
|
is_active=is_active,
|
||||||
|
@ -489,7 +484,7 @@ def user_add(request):
|
||||||
|
|
||||||
server_add_user(username, password, ssh_key_pwd)
|
server_add_user(username, password, ssh_key_pwd)
|
||||||
group_db_add(name=username, comment=username, type='P')
|
group_db_add(name=username, comment=username, type='P')
|
||||||
add_user_to_group(username=username, group_name=username)
|
group_add_user(group_name=username, username=username)
|
||||||
if LDAP_ENABLE:
|
if LDAP_ENABLE:
|
||||||
ldap_add_user(username, ldap_pwd)
|
ldap_add_user(username, ldap_pwd)
|
||||||
msg = u'娣诲姞鐢ㄦ埛 %s 鎴愬姛锛' % username
|
msg = u'娣诲姞鐢ㄦ埛 %s 鎴愬姛锛' % username
|
||||||
|
|
|
@ -36,10 +36,10 @@
|
||||||
<table class="table table-striped table-bordered table-hover " id="editable" >
|
<table class="table table-striped table-bordered table-hover " id="editable" >
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="text-center"><input type="checkbox" class="i-checks" name=""></th>
|
|
||||||
<th class="text-center">ID</th>
|
<th class="text-center">ID</th>
|
||||||
<th class="text-center">缁勫悕</th>
|
<th class="text-center">缁勫悕</th>
|
||||||
<th class="text-center">绫诲瀷</th>
|
<th class="text-center">绫诲瀷</th>
|
||||||
|
<th class="text-center">鎴愬憳鏁伴噺</th>
|
||||||
<th class="text-center">澶囨敞</th>
|
<th class="text-center">澶囨敞</th>
|
||||||
<th class="text-center">鎿嶄綔</th>
|
<th class="text-center">鎿嶄綔</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -47,10 +47,10 @@
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for group in contacts.object_list %}
|
{% for group in contacts.object_list %}
|
||||||
<tr class="gradeX">
|
<tr class="gradeX">
|
||||||
<td class="text-center"><input type="checkbox" class="i-checks" name=""></td>
|
|
||||||
<td class="text-center"> {{ group.id }} </td>
|
<td class="text-center"> {{ group.id }} </td>
|
||||||
<td class="text-center"> {{ group.name }} </td>
|
<td class="text-center"> {{ group.name }} </td>
|
||||||
<td class="text-center"> {{ group.type|group_type_to_str }} </td>
|
<td class="text-center"> {{ group.type|group_type_to_str }} </td>
|
||||||
|
<td class="text-center"> {{ group.id|member_count }} </td>
|
||||||
<td class="text-center"> {{ group.comment }} </td>
|
<td class="text-center"> {{ group.comment }} </td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<a href="../group_detail/?id={{ group.id }}" class="iframe btn btn-xs btn-primary">鎴愬憳</a>
|
<a href="../group_detail/?id={{ group.id }}" class="iframe btn btn-xs btn-primary">鎴愬憳</a>
|
||||||
|
|
|
@ -73,19 +73,19 @@
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="groups" class="col-lg-2 control-label">灞炵粍<span class="red-fonts">*</span></label>
|
<label for="groups" class="col-lg-2 control-label">灞炵粍<span class="red-fonts">*</span></label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<select id="groups" name="groups" class="form-control m-b" multiple>
|
<select id="groups" name="groups" class="form-control m-b" multiple size="10">
|
||||||
{% for group in all_group %}
|
{% for group in all_group %}
|
||||||
{% if groups_str %}
|
{% if groups_str %}
|
||||||
{% if group.id|int2str in groups_str %}
|
{% if group.id|int2str in groups_str %}
|
||||||
<option value="{{ group.id }}" selected>{{ group.name }}</option>
|
<option value="{{ group.id }}" selected>{{ group.name }} --- {{ group.type|group_type_to_str }}</option>
|
||||||
{% else %}
|
{% else %}
|
||||||
<option value="{{ group.id }}">{{ group.name }}</option>
|
<option value="{{ group.id }}">{{ group.name }} --- {{ group.type|group_type_to_str }}</option>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if forloop.first %}
|
{% if forloop.first %}
|
||||||
<option value="{{ group.id }}" selected>{{ group.name }}</option>
|
<option value="{{ group.id }}" selected>{{ group.name }} --- {{ group.type|group_type_to_str }}</option>
|
||||||
{% else %}
|
{% else %}
|
||||||
<option value="{{ group.id }}">{{ group.name }}</option>
|
<option value="{{ group.id }}">{{ group.name }} --- {{ group.type|group_type_to_str }}</option>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -16,9 +16,6 @@
|
||||||
<div class="contact-box">
|
<div class="contact-box">
|
||||||
<h2 class="text-center">{{ user.name }} 鐢ㄦ埛璇︽儏</h2>
|
<h2 class="text-center">{{ user.name }} 鐢ㄦ埛璇︽儏</h2>
|
||||||
<div class="ibox-content">
|
<div class="ibox-content">
|
||||||
<div class="">
|
|
||||||
<a target="_blank" href="/juser/user_add/" class="btn btn-sm btn-primary "> 娣诲姞 </a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="table table-striped table-bordered table-hover " id="editable" >
|
<table class="table table-striped table-bordered table-hover " id="editable" >
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -58,7 +55,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="gradeX">
|
<tr class="gradeX">
|
||||||
<td class="text-center">娣诲姞鏃堕棿</td>
|
<td class="text-center">娣诲姞鏃堕棿</td>
|
||||||
<td class="text-center">{{ user.joined }}</td>
|
<td class="text-center">{{ user.date_joined|stamp2str }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="gradeX">
|
<tr class="gradeX">
|
||||||
<td class="text-center">鏈鍚庣櫥褰</td>
|
<td class="text-center">鏈鍚庣櫥褰</td>
|
||||||
|
|
Loading鈥
Reference in New Issue