From c8444ef73ac97069e0bd35a809abe10ba2001712 Mon Sep 17 00:00:00 2001 From: guanghongwei <hongwei.guang@yolu-inc.com> Date: Fri, 3 Oct 2014 22:04:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=BE=A7=E7=82=B2=E5=A7=9E=E9=8D=92=E5=97=99?= =?UTF-8?q?=E7=B2=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webroot/AutoSa/AutoSa/urls.py | 2 + webroot/AutoSa/AutoSa/views.py | 158 ++++++++++++++++-------- webroot/AutoSa/templates/addGroup.html | 30 +++++ webroot/AutoSa/templates/base.html | 3 + webroot/AutoSa/templates/chgGroup.html | 41 ++++++ webroot/AutoSa/templates/chgPass.html | 10 +- webroot/AutoSa/templates/chgUser.html | 2 +- webroot/AutoSa/templates/error.html | 2 +- webroot/AutoSa/templates/info.html | 47 +++++++ webroot/AutoSa/templates/showGroup.html | 32 +++++ 10 files changed, 270 insertions(+), 57 deletions(-) create mode 100644 webroot/AutoSa/templates/addGroup.html create mode 100644 webroot/AutoSa/templates/chgGroup.html create mode 100644 webroot/AutoSa/templates/info.html create mode 100644 webroot/AutoSa/templates/showGroup.html diff --git a/webroot/AutoSa/AutoSa/urls.py b/webroot/AutoSa/AutoSa/urls.py index 37885677..874a24cf 100644 --- a/webroot/AutoSa/AutoSa/urls.py +++ b/webroot/AutoSa/AutoSa/urls.py @@ -17,6 +17,8 @@ urlpatterns = patterns('', (r'^showUser/$', views.showUser), (r'^addUser/$', views.addUser), (r'^chgUser/$', views.chgUser), + (r'^showGroup/$', views.showGroup), + (r'^addGroup/$', views.addGroup), (r'^showAssets/$', views.showAssets), (r'^addAssets/$', views.addAssets), (r'^showPerm/$', views.showPerm), diff --git a/webroot/AutoSa/AutoSa/views.py b/webroot/AutoSa/AutoSa/views.py index 80b84067..a2367e82 100644 --- a/webroot/AutoSa/AutoSa/views.py +++ b/webroot/AutoSa/AutoSa/views.py @@ -218,10 +218,11 @@ def is_super_user(request): def install(request): user = User.objects.filter(username='admin') if user: - return HttpResponseRedirect('/login/') + error = 'å·²ç»å®‰è£…,请出é‡å¤å®‰è£….' + return render_to_response('info.html', {'error': error}) else: u = User( - id=700, + id=800, username='admin', password=md5_crypt('admin'), key_pass=md5_crypt('admin'), @@ -230,7 +231,8 @@ def install(request): is_superuser=True, ldap_password=md5_crypt('admin')) u.save() - return HttpResponse('Install successfully, please refresh this page.') + msg = '安装æˆåŠŸ' + return render_to_response('info.html', {'msg': msg}) def login(request): @@ -466,7 +468,6 @@ def chgUser(request): """修改用户信æ¯""" error = '' msg = '' - jm = PyCrypt(key) if request.method == "GET": username = request.GET.get('username') @@ -489,11 +490,6 @@ def chgUser(request): group_post = request.REQUEST.getlist('group') groups = [] user = User.objects.get(username=username) - all_groups = Group.objects.all() - - # 获得原æ¥çš„,然设为åˆå§‹å€¼ - ori_is_admin = "checked" if user.is_admin else '' - ori_is_superuser = 'checked' if user.is_superuser else '' # å±žç»„çš„èŽ·å– for group_name in group_post: @@ -511,10 +507,7 @@ def chgUser(request): error = u'带*内容ä¸èƒ½ä¸ºç©º' if error: - return render_to_response('chgUser.html', - {'user': user, 'user_menu': 'active', 'is_admin': ori_is_admin, - 'is_superuser': ori_is_superuser, 'groups': all_groups, 'error': error}, - context_instance=RequestContext(request)) + return render_to_response('info.html', {'error': error}) u = User.objects.get(username=username) u.name = name @@ -524,10 +517,63 @@ def chgUser(request): u.save() msg = u'ä¿®æ”¹ç”¨æˆ·ä¿¡æ¯æˆåŠŸ' - return render_to_response('chgUser.html', - {'user': user, 'user_menu': 'active', 'is_admin': is_admin, - 'is_superuser': is_superuser, 'groups': all_groups, 'msg': msg}, - context_instance=RequestContext(request)) + return render_to_response('info.html', {'msg': msg}) + + +@superuser_required +def addGroup(request): + error = '' + msg = '' + if request.method == 'POST': + group_name = request.POST.get('name') + if not group_name: + group = Group(name=group_name) + group.save() + msg = u'%s å±žç»„æ·»åŠ æˆåŠŸ' % group_name + else: + error = u'ä¸èƒ½ä¸ºç©º' + return render_to_response('addGroup.html', + {'error': error, 'msg': msg}, + context_instance=RequestContext(request)) + + +@superuser_required +def showGroup(request): + groups = Group.objects.all() + if request.method == 'POST': + selected_group = request.REQUEST.getlist('selected') + if selected_group: + for group_id in selected_group: + group = Group.objects.get(id=group_id) + group.delete() + msg = 'åˆ é™¤æˆåŠŸ' + else: + error = 'è¯·é€‰æ‹©åˆ é™¤çš„ç»„' + + return render_to_response('showGroup.html', {'error': error, 'msg': msg}, + context_instance=RequestContext(request)) + + +@superuser_required +def chgGroup(request): + error = '' + msg = '' + if request.method == 'GET': + group_id = request.GET.get(id) + group = Group.objects.get(id=group_id) + else: + group_id = request.POST.get(id) + group_name = request.POST.get(name) + if not group_name: + error = u'ä¸èƒ½ä¸ºç©º' + else: + group = Group.objects.get(id=group_id) + group['name'] = group_name + group.save() + msg = u'修改æˆåŠŸ' + + return render_to_response('chgGroup.html', {'group': group, 'error': error, 'msg': msg}, + context_instance=RequestContext(request)) @admin_required @@ -600,8 +646,8 @@ def showPerm(request): elif request.method == 'GET': if request.GET.get('username'): username = request.GET.get('username') - user = User.objects.filter(username=username)[0] - assets_user = AssetsUser.objects.filter(uid=user.id) + user = User.objects.get(username=username) + assets_user = AssetsUser.objects.filter(uid=user.id).order_by() return render_to_response('perms.html', {'user': user, 'assets': assets_user, 'perm_menu': 'active'}, context_instance=RequestContext(request)) @@ -655,28 +701,42 @@ def addPerm(request): @login_required def chgPass(request): - """修改登录系统的密ç """ + """修改登录密ç """ error = '' msg = '' - if request.method == 'POST': - username = request.session.get('username') - oldpass = request.POST.get('oldpass') + is_self = False + + if request.method == 'GET': + if is_admin_user(request): + username = request.GET.get('username') + else: + username = request.session.get('username') + is_self = True + + return render_to_response('chgKey.html', + {'username': username, 'is_self': is_self}, + context_instance=RequestContext(request)) + else: + username = request.POST.get('username') + user = User.objects.get(username=username) password = request.POST.get('password') - password_confirm = request.POST.get('password_confirm') - user = User.objects.get(username) - if '' in [oldpass, password, password_confirm]: - error = '带*内容ä¸èƒ½ä¸ºç©º' - elif md5_crypt(oldpass) != user.password: - error = '密ç 䏿£ç¡®' - elif password != password_confirm: - error = '两次密ç ä¸åŒ¹é…' + password_again = request.POST.get('password_again') - if not error: - user.password = md5_crypt(password) - user.save() + if not is_admin_user(request): + oldpass = request.POST.get('oldpass') + if oldpass != user.password: + error = '原æ¥å¯†ç 䏿£ç¡®' - return render_to_response('chgPass.html', {'msg': msg, 'error': error, 'pass_menu': 'active'}, - context_instance=RequestContext(request)) + if password != password_again: + error = '密ç ä¸åŒ¹é…' + + if error: + return render_to_response('info.html', {'error': error}) + + user['password'] = password + user.save() + + return render_to_response('info.html', {'msg': 'ä¿®æ”¹å¯†ç æˆåŠŸ'}) @login_required @@ -687,8 +747,9 @@ def chgKey(request): is_self = False if request.method == 'GET': - username = request.GET.get('username') - if not username: + if is_admin_user(request): + username = request.GET.get('username') + else: username = request.session.get('username') is_self = True @@ -696,35 +757,30 @@ def chgKey(request): {'username': username, 'is_self': is_self}, context_instance=RequestContext(request)) else: - try: - oldpass = request.POST.get('oldpass') - except KeyError: - pass - else: - username = request.POST.get('username') - user = User.objects.get(username=username) - if oldpass != user.key_pass: - error = '原æ¥å¯†ç 䏿£ç¡®' - username = request.POST.get('username') user = User.objects.get(username=username) password = request.POST.get('password') password_again = request.POST.get('password_again') + if not is_admin_user(request): + oldpass = request.POST.get('oldpass') + if oldpass != user.key_pass: + error = '原æ¥å¯†ç 䏿£ç¡®' + if password != password_again: error = '密ç ä¸åŒ¹é…' if error: - return HttpResponse(error) + return render_to_response('info.html', {'error': error}) keyfile = '%s/keys/%s' % (base_dir, username) jm = PyCrypt(key) ret = bash('ssh-keygen -p -P %s -N %s -f %s' % (jm.decrypt(user.key_pass), password, keyfile)) if ret != 0: error = '更改ç§é’¥å¯†ç 错误' - return HttpResponse(error) + return render_to_response('info.hmtl', {'error': error}) user['keypass'] = password user.save() - return HttpResponse('ä¿®æ”¹å¯†ç æˆåŠŸ') + return render_to_response('info.html', {'msg': 'ä¿®æ”¹å¯†ç æˆåŠŸ'}) diff --git a/webroot/AutoSa/templates/addGroup.html b/webroot/AutoSa/templates/addGroup.html new file mode 100644 index 00000000..4bad03ec --- /dev/null +++ b/webroot/AutoSa/templates/addGroup.html @@ -0,0 +1,30 @@ +{% extends 'base.html' %} +{% block content %} + <form class="form-horizontal" role="form" method="post" action="" > + <fieldset > + <legend>æ·»åŠ å±žç»„</legend> + {% if error %} + <div class="alert alert-danger"> + {{ error }} + </div> + {% endif %} + {% if msg %} + <div class="alert alert-success"> + {{ msg }} + </div> + {% endif %} + <div class="form-group"> + <label for="name" class="col-sm-2 control-label">属组<span style="color: red"> *</span></label> + <div class="col-sm-4"> + <input type="text" class="form-control" id="name" name="name" placeholder="属组"> + </div> + </div> + + <div class="form-group"> + <div class="col-sm-offset-2 col-sm-4"> + <button class="btn btn-primary">æ·»åŠ </button> + </div> + </div> + </fieldset> + </form> +{% endblock %} \ No newline at end of file diff --git a/webroot/AutoSa/templates/base.html b/webroot/AutoSa/templates/base.html index aebc58d0..f7478c58 100644 --- a/webroot/AutoSa/templates/base.html +++ b/webroot/AutoSa/templates/base.html @@ -90,6 +90,9 @@ <ul id="userMenu" class="nav nav-list navbar-collapse.in menu-second"> <li><a href="/showUser/"><i class="glyphicon glyphicon-send"></i> 查看用户</a></li> <li><a href="/addUser/"><i class="glyphicon glyphicon-send"></i> æ·»åŠ ç”¨æˆ·</a></li> + <li><a href="/showGroup/"><i class="glyphicon glyphicon-send"></i> 查看属组</a></li> + <li><a href="/addGroup/"><i class="glyphicon glyphicon-send"></i> æ·»åŠ å±žç»„</a></li> + <li><a href="/addUser/"><i class="glyphicon glyphicon-send"></i> Sudo管ç†</a></li> </ul> <!--<div class="menu-first" ><a href="#monitorMenu" data-toggle="collapse"><i class="glyphicon glyphicon-th"></i> 执行命令</a></div> <ul id="monitorMenu" class="nav nav-list navbar-collapse.in menu-second"> diff --git a/webroot/AutoSa/templates/chgGroup.html b/webroot/AutoSa/templates/chgGroup.html new file mode 100644 index 00000000..f9cae1ec --- /dev/null +++ b/webroot/AutoSa/templates/chgGroup.html @@ -0,0 +1,41 @@ +{% extends 'base.html' %} +{% block content %} + <form class="form-horizontal" role="form" method="post" action="/chgGroup/" > + <fieldset > + <legend>修改用户信æ¯</legend> + {% if error %} + <div class="alert alert-danger"> + {{ error }} + </div> + {% endif %} + + {% if msg %} + <div class="alert alert-success"> + {{ msg }} + </div> + {% endif %} + <div class="form-group"> + <div class="col-sm-4"> + <input type="text" id="oldname" name="oldname" class="form-control" value="{{ group.id }}" hidden="hidden"> + </div> + </div> + <div class="form-group"> + <label for="oldname" class="col-sm-2 control-label">原æ¥å±žç»„<span style="color: red"> *</span></label> + <div class="col-sm-4"> + <input type="text" id="oldname" name="oldname" class="form-control" value="{{ group.name }}" readOnly="readOnly"> + </div> + </div> + <div class="form-group"> + <label for="name" class="col-sm-2 control-label">属组<span style="color: red"> *</span></label> + <div class="col-sm-4"> + <input type="text" id="name" name="name" class="form-control" placeholder="属组"> + </div> + </div> + <div class="form-group"> + <div class="col-sm-offset-2 col-sm-4"> + <button class="btn btn-primary">修改</button> + </div> + </div> + </fieldset> + </form> +{% endblock %} \ No newline at end of file diff --git a/webroot/AutoSa/templates/chgPass.html b/webroot/AutoSa/templates/chgPass.html index e383a40e..d365acc3 100644 --- a/webroot/AutoSa/templates/chgPass.html +++ b/webroot/AutoSa/templates/chgPass.html @@ -13,12 +13,14 @@ {{ msg }} </div> {% endif %} + {% if is_self %} <div class="form-group"> - <label for="oldpass" class="col-sm-2 control-label">原æ¥å¯†ç <span style="color: red"> *</span></label> + <label for="oldpass" class="col-sm-2 control-label">原æ¥çš„密ç <span style="color: red"> *</span></label> <div class="col-sm-4"> - <input type="password" class="form-control" id="oldpass" name="oldpass" placeholder="用户å"> + <input type="password" class="form-control" id="oldpass" name="oldpass" placeholder="原æ¥å¯†ç "> </div> </div> + {% endif %} <div class="form-group"> <label for="password" class="col-sm-2 control-label">新密ç <span style="color: red"> *</span></label> <div class="col-sm-4"> @@ -26,9 +28,9 @@ </div> </div> <div class="form-group"> - <label for="password_confirm" class="col-sm-2 control-label">确认密ç <span style="color: red"> *</span></label> + <label for="password_again" class="col-sm-2 control-label">确认密ç <span style="color: red"> *</span></label> <div class="col-sm-4"> - <input type="password" class="form-control" id="password_confirm" name="password_confirm" placeholder="确认密ç "> + <input type="password" class="form-control" id="password_again" name="password_again" placeholder="确认密ç "> </div> </div> <div class="form-group"> diff --git a/webroot/AutoSa/templates/chgUser.html b/webroot/AutoSa/templates/chgUser.html index ec20fb45..a710fc8b 100644 --- a/webroot/AutoSa/templates/chgUser.html +++ b/webroot/AutoSa/templates/chgUser.html @@ -34,7 +34,7 @@ </div> <div class="form-group"> <label for="key_pass" class="col-sm-2 control-label">密钥密ç <span style="color: red"> *</span></label> - <a href="/chgKey/?username={{ user.username }}">修改密钥密ç </a> + <a href="/chgKey/?username={{ user.username }}">修改密ç </a> </div> <div class="form-group"> <label for="name" class="col-sm-2 control-label">å§“å<span style="color: red"> *</span></label> diff --git a/webroot/AutoSa/templates/error.html b/webroot/AutoSa/templates/error.html index 60c44f49..82cbdf2a 100644 --- a/webroot/AutoSa/templates/error.html +++ b/webroot/AutoSa/templates/error.html @@ -3,7 +3,7 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>错误页é¢</title> +<title>通知</title> <style type="text/css"> body{ diff --git a/webroot/AutoSa/templates/info.html b/webroot/AutoSa/templates/info.html new file mode 100644 index 00000000..21707ca8 --- /dev/null +++ b/webroot/AutoSa/templates/info.html @@ -0,0 +1,47 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<title>ä¿¡æ¯</title> + +<style type="text/css"> +body{ + font-family:"Hiragino Sans GB W3", "微软雅黑", "Helvetica Neue", Helvetica, Arial, "宋体", sans-serif; + color: #575757; + background: #444 url(/static/images/bg-login.gif) +} + +</style> +<script language="javascript"> + var i=2; + window.setInterval("settime()",1000); + window.setTimeout("toload()",5000); + function settime(){ + var divinner=document.getElementById("settime"); + divinner.innerText=i; + i--; + } + function toload(){ + history.go(-1); + } +</script> +</head> + +<body> + +{% if msg %} +<div class="alert alert-success"><b>æˆåŠŸ:</b>{{ msg }}</div> +{% endif %} + +{% if error %} +<div class="alert alert-danger"><b>错误:</b>{{ error }}</div> +{% endif %} +</body> +</html> + + + + + + diff --git a/webroot/AutoSa/templates/showGroup.html b/webroot/AutoSa/templates/showGroup.html new file mode 100644 index 00000000..8ce2cb6b --- /dev/null +++ b/webroot/AutoSa/templates/showGroup.html @@ -0,0 +1,32 @@ +{% extends 'base.html' %} +{% block content %} + <form method="post" action=""> + {% if info %} + <p class="alert alert-success"> + {{ info }} + </p> + {% endif %} + <table class="table table-striped table-hover table-condensed"> + <thead> + <tr> + <th><input onclick="selectAll()" type="checkbox" name="select_all" style="select_all" id="select_all"/></th> + <th>ID</th> + <th>属组</th> + <th>修改</th> + </tr> + </thead> + <tbody> + {% for group in groups %} + <tr> + <td><input type="checkbox" name="selected" value="{{ group.id }}"></td> + <td>{{ group.id }}</td> + <td>{{ group.name }}</td> + <td><a href="/chgGroup/?id={{ group.id }}">修改</a></td> + </tr> + {% endfor %} + </tbody> + </form> + </table> + <button class="btn btn-primary">åˆ é™¤</button> + </form> +{% endblock %} \ No newline at end of file -- 2.18.0