Commit 8bc40dbe authored by guanghongwei's avatar guanghongwei

基本完成用户管理

parent d3202601
...@@ -39,3 +39,4 @@ nosetests.xml ...@@ -39,3 +39,4 @@ nosetests.xml
node_modules node_modules
logs logs
keys keys
jumpserver.conf
...@@ -8,11 +8,11 @@ password = mysql234 ...@@ -8,11 +8,11 @@ password = mysql234
database = jumpserver database = jumpserver
[ldap] [ldap]
ldap_enable = 0 ldap_enable = 1
host_url = ldap://192.168.8.60:389 host_url = ldap://127.0.0.1:389
base_dn = dc=fengxing, dc=com base_dn = dc=jumpserver, dc=org
root_dn = cn=admin,dc=fengxing,dc=com root_dn = cn=admin,dc=jumpserver,dc=org
root_pw = 123456 root_pw = secret234
[websocket] [websocket]
web_socket_host = 127.0.0.1:3000 web_socket_host = 127.0.0.1:3000
......
...@@ -27,8 +27,12 @@ def int2str(value): ...@@ -27,8 +27,12 @@ def int2str(value):
@register.filter(name='get_role') @register.filter(name='get_role')
def get_role(user_id): def get_role(user_id):
user_role = {'SU': u'超级管理员', 'DA': u'部门管理员', 'CU': u'普通用户'} user_role = {'SU': u'超级管理员', 'DA': u'部门管理员', 'CU': u'普通用户'}
user = User.objects.get(id=user_id) user = User.objects.filter(id=user_id)
return user_role.get(str(user.role)) if user:
user = user[0]
return user_role.get(str(user.role), u"普通用户")
else:
return u"普通用户"
@register.filter(name='groups_str') @register.filter(name='groups_str')
......
...@@ -23,6 +23,7 @@ urlpatterns = patterns('juser.views', ...@@ -23,6 +23,7 @@ urlpatterns = patterns('juser.views',
(r'^user_list/$', 'user_list'), (r'^user_list/$', 'user_list'),
(r'^user_detail/$', 'user_detail'), (r'^user_detail/$', 'user_detail'),
(r'^user_del/$', 'user_del'), (r'^user_del/$', 'user_del'),
(r'^user_del_ajax/$', 'user_del_ajax'),
(r'^user_edit/$', 'user_edit'), (r'^user_edit/$', 'user_edit'),
(r'^profile/$', 'profile'), (r'^profile/$', 'profile'),
(r'^chg_pass/$', 'chg_pass'), (r'^chg_pass/$', 'chg_pass'),
......
...@@ -111,7 +111,7 @@ def db_update_user(**kwargs): ...@@ -111,7 +111,7 @@ def db_update_user(**kwargs):
for group_id in groups_post: for group_id in groups_post:
group = UserGroup.objects.filter(id=group_id) group = UserGroup.objects.filter(id=group_id)
group_select.extend(group) group_select.extend(group)
user.user_group = group_select user.group = group_select
def db_del_user(username): def db_del_user(username):
...@@ -203,27 +203,6 @@ def ldap_del_user(username): ...@@ -203,27 +203,6 @@ def ldap_del_user(username):
ldap_conn.delete(sudo_dn) ldap_conn.delete(sudo_dn)
# def ldap_group_add(group_name, username_list, gid):
# group_dn = "cn=%s,ou=Group,%s" % (group_name, LDAP_BASE_DN)
# group_attr = {'objectClass': ['posixGroup', 'top'],
# 'cn': [str(group_name)],
# 'userPassword': ['{crypt}x'],
# 'gidNumber': [gid],
# 'memberUid': username_list}
# ldap_conn.add(group_dn, group_attr)
# def group_add_ajax(request):
# group_type = request.POST.get('type', 'A')
# users_all = User.objects.all()
# if group_type == 'A':
# users = users_all
# else:
# users = [user for user in users_all if not user.user_group.filter(type='M')]
#
# return render_to_response('juser/group_add_ajax.html', locals(), context_instance=RequestContext(request))
def dept_add(request): def dept_add(request):
header_title, path1, path2 = '添加部门', '用户管理', '添加部门' header_title, path1, path2 = '添加部门', '用户管理', '添加部门'
if request.method == 'POST': if request.method == 'POST':
...@@ -494,11 +473,11 @@ def user_add(request): ...@@ -494,11 +473,11 @@ def user_add(request):
groups = request.POST.getlist('groups', []) groups = request.POST.getlist('groups', [])
role_post = request.POST.get('role', 'CU') role_post = request.POST.get('role', 'CU')
ssh_key_pwd = request.POST.get('ssh_key_pwd', '') ssh_key_pwd = request.POST.get('ssh_key_pwd', '')
is_active = request.POST.get('is_active', '1') is_active = True if request.POST.get('is_active', '1') == '1' else False
ldap_pwd = gen_rand_pwd(16) ldap_pwd = gen_rand_pwd(16)
try: try:
if None in [username, password, ssh_key_pwd, name, groups, role_post, is_active]: if '' in [username, password, ssh_key_pwd, name, groups, role_post, is_active]:
error = u'带*内容不能为空' error = u'带*内容不能为空'
raise AddError raise AddError
user = User.objects.filter(username=username) user = User.objects.filter(username=username)
...@@ -568,76 +547,87 @@ def user_list(request): ...@@ -568,76 +547,87 @@ def user_list(request):
def user_detail(request): def user_detail(request):
user_id = request.GET.get('id', None) user_id = request.GET.get('id', '')
if not user_id: if not user_id:
return HttpResponseRedirect('/') return HttpResponseRedirect('/juser/user_list/')
user = User.objects.get(id=user_id) user = User.objects.filter(id=user_id)
if user:
user = user[0]
return render_to_response('juser/user_detail.html', locals(), context_instance=RequestContext(request)) return render_to_response('juser/user_detail.html', locals(), context_instance=RequestContext(request))
def user_del(request): def user_del(request):
user_id = request.GET.get('id', None) user_id = request.GET.get('id', '')
if not user_id: if not user_id:
return HttpResponseRedirect('/') return HttpResponseRedirect('/')
user = User.objects.get(id=user_id) user = User.objects.filter(id=user_id)
user.delete() if user:
group = UserGroup.objects.get(name=user.username) user = user[0]
group.delete() user.delete()
server_del_user(user.username) server_del_user(user.username)
ldap_del_user(user.username) if LDAP_ENABLE:
return HttpResponseRedirect('/juser/user_list/', locals(), context_instance=RequestContext(request)) ldap_del_user(user.username)
return HttpResponseRedirect('/juser/user_list/')
def user_del_ajax(request):
user_ids = request.POST.get('ids')
for user_id in user_ids.split(','):
user = User.objects.filter(id=user_id)
if user:
user = user[0]
user.delete()
server_del_user(user.username)
if LDAP_ENABLE:
ldap_del_user(user.username)
return HttpResponse('删除成功')
def user_edit(request): def user_edit(request):
header_title, path1, path2 = '编辑用户 | Edit User', 'juser', 'user_edit' header_title, path1, path2 = '编辑用户', '用户管理', '用户编辑'
readonly = "readonly"
if request.method == 'GET': if request.method == 'GET':
user_id = request.GET.get('id', None) user_id = request.GET.get('id', '')
if not user_id: if not user_id:
return HttpResponseRedirect('/') return HttpResponseRedirect('/')
user = User.objects.get(id=user_id)
username = user.username user_role = {'SU': u'超级管理员', 'DA': u'部门管理员', 'CU': u'普通用户'}
password = user.password user = User.objects.filter(id=user_id)
ssh_key_pwd = user.ssh_key_pwd dept_all = DEPT.objects.all()
name = user.name group_all = UserGroup.objects.all()
manage_groups = UserGroup.objects.filter(type='M') if user:
auth_groups = UserGroup.objects.filter(type='A') user = user[0]
manage_group_id = user.user_group.get(type='M').id groups_str = ' '.join([str(group.id) for group in user.group.all()])
groups_str = ' '.join([str(group.id) for group in auth_groups])
user_role = {'SU': u'超级管理员', 'GA': u'组管理员', 'CU': u'普通用户'}
role_post = user.role
ssh_pwd = user.ssh_pwd
email = user.email
else: else:
username = request.POST.get('username', None) username = request.POST.get('username', '')
password = request.POST.get('password', None) password = request.POST.get('password', '')
name = request.POST.get('name', None) name = request.POST.get('name', '')
email = request.POST.get('email', '') email = request.POST.get('email', '')
manage_group_id = request.POST.get('manage_group', '') dept_id = request.POST.get('dept_id')
auth_groups = request.POST.getlist('groups', None) groups = request.POST.getlist('groups', [])
groups = auth_groups role_post = request.POST.get('role', 'CU')
groups.append(manage_group_id) ssh_key_pwd = request.POST.get('ssh_key_pwd', '')
groups_str = ' '.join(auth_groups) is_active = True if request.POST.get('is_active', '1') == '1' else False
role_post = request.POST.get('role', None)
ssh_pwd = request.POST.get('ssh_pwd', None) user_role = {'SU': u'超级管理员', 'DA': u'部门管理员', 'CU': u'普通用户'}
ssh_key_pwd = request.POST.get('ssh_key_pwd', None) dept = DEPT.objects.filter(id=dept_id)
is_active = request.POST.get('is_active', '1') if dept:
ldap_pwd = gen_rand_pwd(16) dept = dept[0]
all_group = UserGroup.objects.filter(Q(type='M') | Q(type='A')) else:
user_role = {'SU': u'超级管理员', 'GA': u'组管理员', 'CU': u'普通用户'} dept = DEPT.objects.get(id='1')
if username: if username:
user = User.objects.get(username=username) user = User.objects.filter(username=username)
if user:
user = user[0]
else: else:
return HttpResponseRedirect('/') return HttpResponseRedirect('/juser/user_list/')
if password != user.password: if password != user.password:
password = md5_crypt(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: if ssh_key_pwd != user.ssh_key_pwd:
ssh_key_pwd = CRYPTOR.encrypt(ssh_key_pwd) ssh_key_pwd = CRYPTOR.encrypt(ssh_key_pwd)
...@@ -646,14 +636,14 @@ def user_edit(request): ...@@ -646,14 +636,14 @@ def user_edit(request):
name=name, name=name,
email=email, email=email,
groups=groups, groups=groups,
dept=dept,
role=role_post, role=role_post,
ssh_pwd=ssh_pwd, is_active=is_active,
ssh_key_pwd=ssh_key_pwd) ssh_key_pwd=ssh_key_pwd)
msg = u'修改用户成功'
return HttpResponseRedirect('/juser/user_list/') return HttpResponseRedirect('/juser/user_list/')
return render_to_response('juser/user_add.html', locals(), context_instance=RequestContext(request)) return render_to_response('juser/user_edit.html', locals(), context_instance=RequestContext(request))
def profile(request): def profile(request):
......
...@@ -39,10 +39,16 @@ ...@@ -39,10 +39,16 @@
</tr> </tr>
<tr class="gradeX"> <tr class="gradeX">
<td class="text-center">角色</td> <td class="text-center">角色</td>
<td class="text-center">{{ user.id|get_role }}</td> <td class="text-center">{{ user.id }}</td>
</tr>
<tr class="gradeX">
<td class="text-center">部门</td>
<td class="text-center">
{{ user.dept.name }}
</td>
</tr> </tr>
<tr class="gradeX"> <tr class="gradeX">
<td class="text-center"></td> <td class="text-center"></td>
<td class="text-center"> <td class="text-center">
{% for group in user.user_group.all %} {% for group in user.user_group.all %}
{{ group.name }} {{ group.name }}
...@@ -59,7 +65,7 @@ ...@@ -59,7 +65,7 @@
</tr> </tr>
<tr class="gradeX"> <tr class="gradeX">
<td class="text-center">添加时间</td> <td class="text-center">添加时间</td>
<td class="text-center">{{ user.date_joined|stamp2str }}</td> <td class="text-center">{{ user.date_joined }}</td>
</tr> </tr>
<tr class="gradeX"> <tr class="gradeX">
<td class="text-center">最后登录</td> <td class="text-center">最后登录</td>
......
This diff is collapsed.
...@@ -30,8 +30,8 @@ ...@@ -30,8 +30,8 @@
<div class="ibox-content"> <div class="ibox-content">
<div class=""> <div class="">
<a target="_blank" href="/juser/user_add/" class="btn btn-sm btn-primary "> 添加 </a> <a target="_blank" href="/juser/user_add/" class="btn btn-sm btn-primary "> 添加用户 </a>
<a target="_blank" href="/juser/group_add/" class="btn btn-sm btn-danger "> 删除所选 </a> <a id="del_btn" class="btn btn-sm btn-danger "> 删除所选 </a>
<form id="search_form" method="get" action="" class="pull-right mail-search"> <form id="search_form" method="get" action="" class="pull-right mail-search">
<div class="input-group"> <div class="input-group">
<input type="text" class="form-control input-sm" id="search_input" name="search" placeholder="Search"> <input type="text" class="form-control input-sm" id="search_input" name="search" placeholder="Search">
...@@ -124,5 +124,23 @@ ...@@ -124,5 +124,23 @@
</div> </div>
</div> </div>
<script>
$(document).ready(function(){
$(".iframe").colorbox({iframe:true, width:"70%", height:"70%"});
var check_array = []
$('#del_btn').click(function(){
$(".gradeX input:checked").each(function() {check_array.push($(this).attr("value")) })
$(".gradeX input:checked").closest("tr").remove()
$.post("/juser/user_del_ajax/",
{ids: check_array.join(",")},
function(data){
alert(data)
}
)
})
});
</script>
{% endblock %} {% endblock %}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment