添加权限管理

pull/6/head
guanghongwei 2015-03-13 00:09:18 +08:00
parent 475501595e
commit a7800b9a7a
14 changed files with 153 additions and 71 deletions

View File

@ -9,7 +9,7 @@ from jperm.models import Perm, SudoPerm, CmdGroup, DeptPerm
from django.core.paginator import Paginator, EmptyPage, InvalidPage from django.core.paginator import Paginator, EmptyPage, InvalidPage
from django.db.models import Q from django.db.models import Q
from jumpserver.views import LDAP_ENABLE, ldap_conn, CONF, page_list_return, pages from jumpserver.views import LDAP_ENABLE, ldap_conn, CONF, page_list_return, pages
from jumpserver.api import user_perm_asset_api from jumpserver.api import user_perm_asset_api, require_admin, require_super_user, require_login
if LDAP_ENABLE: if LDAP_ENABLE:
@ -36,6 +36,7 @@ def user_asset_cmd_groups_get(user_groups_select='', asset_groups_select='', cmd
return user_groups_select_list, asset_groups_select_list, cmd_groups_select_list return user_groups_select_list, asset_groups_select_list, cmd_groups_select_list
@require_admin
def perm_add(request): def perm_add(request):
header_title, path1, path2 = u'涓绘満鎺堟潈娣诲姞', u'鎺堟潈绠$悊', u'鎺堟潈娣诲姞' header_title, path1, path2 = u'涓绘満鎺堟潈娣诲姞', u'鎺堟潈绠$悊', u'鎺堟潈娣诲姞'
@ -79,6 +80,7 @@ def dept_add_asset(dept_id, asset_list):
DeptPerm(dept=dept, asset=asset).save() DeptPerm(dept=dept, asset=asset).save()
@require_super_user
def dept_perm_edit(request): def dept_perm_edit(request):
header_title, path1, path2 = u'閮ㄩ棬鎺堟潈娣诲姞', u'鎺堟潈绠$悊', u'閮ㄩ棬鎺堟潈娣诲姞' header_title, path1, path2 = u'閮ㄩ棬鎺堟潈娣诲姞', u'鎺堟潈绠$悊', u'閮ㄩ棬鎺堟潈娣诲姞'
if request.method == 'GET': if request.method == 'GET':
@ -97,6 +99,7 @@ def dept_perm_edit(request):
return render_to_response('jperm/dept_perm_edit.html', locals(), context_instance=RequestContext(request)) return render_to_response('jperm/dept_perm_edit.html', locals(), context_instance=RequestContext(request))
@require_admin
def perm_list(request): def perm_list(request):
header_title, path1, path2 = u'灏忕粍鎺堟潈', u'鎺堟潈绠$悊', u'鎺堟潈璇︽儏' header_title, path1, path2 = u'灏忕粍鎺堟潈', u'鎺堟潈绠$悊', u'鎺堟潈璇︽儏'
keyword = request.GET.get('search', '') keyword = request.GET.get('search', '')
@ -109,6 +112,7 @@ def perm_list(request):
return render_to_response('jperm/perm_list.html', locals(), context_instance=RequestContext(request)) return render_to_response('jperm/perm_list.html', locals(), context_instance=RequestContext(request))
@require_super_user
def dept_perm_list(request): def dept_perm_list(request):
header_title, path1, path2 = '鏌ョ湅閮ㄩ棬', '鎺堟潈绠$悊', '閮ㄩ棬鎺堟潈' header_title, path1, path2 = '鏌ョ湅閮ㄩ棬', '鎺堟潈绠$悊', '閮ㄩ棬鎺堟潈'
keyword = request.GET.get('search') keyword = request.GET.get('search')
@ -142,6 +146,7 @@ def perm_group_update(user_group_id, asset_groups_id_list):
Perm(user_group=user_group, asset_group=asset_group).save() Perm(user_group=user_group, asset_group=asset_group).save()
@require_super_user
def perm_edit(request): def perm_edit(request):
if request.method == 'GET': if request.method == 'GET':
header_title, path1, path2 = u'缂栬緫鎺堟潈', u'鎺堟潈绠$悊', u'鎺堟潈缂栬緫' header_title, path1, path2 = u'缂栬緫鎺堟潈', u'鎺堟潈绠$悊', u'鎺堟潈缂栬緫'
@ -161,6 +166,7 @@ def perm_edit(request):
return render_to_response('jperm/perm_edit.html', locals(), context_instance=RequestContext(request)) return render_to_response('jperm/perm_edit.html', locals(), context_instance=RequestContext(request))
@require_admin
def perm_detail(request): def perm_detail(request):
header_title, path1, path2 = u'缂栬緫鎺堟潈', u'鎺堟潈绠$悊', u'鎺堟潈璇︽儏' header_title, path1, path2 = u'缂栬緫鎺堟潈', u'鎺堟潈绠$悊', u'鎺堟潈璇︽儏'
perm_id = request.GET.get('id') perm_id = request.GET.get('id')
@ -181,6 +187,7 @@ def perm_detail(request):
return render_to_response('jperm/perm_detail.html', locals(), context_instance=RequestContext(request)) return render_to_response('jperm/perm_detail.html', locals(), context_instance=RequestContext(request))
@require_admin
def perm_del(request): def perm_del(request):
perm_id = request.GET.get('id') perm_id = request.GET.get('id')
perm = Perm.objects.filter(id=perm_id) perm = Perm.objects.filter(id=perm_id)
@ -190,6 +197,7 @@ def perm_del(request):
return HttpResponseRedirect('/jperm/perm_list/') return HttpResponseRedirect('/jperm/perm_list/')
@require_admin
def perm_asset_detail(request): def perm_asset_detail(request):
header_title, path1, path2 = u'鐢ㄦ埛鎺堟潈涓绘満', u'鏉冮檺绠$悊', u'鐢ㄦ埛涓绘満璇︽儏' header_title, path1, path2 = u'鐢ㄦ埛鎺堟潈涓绘満', u'鏉冮檺绠$悊', u'鐢ㄦ埛涓绘満璇︽儏'
user_id = request.GET.get('id') user_id = request.GET.get('id')
@ -273,6 +281,7 @@ def sudo_ldap_add(name, users_runas, user_groups_select, asset_groups_select,
ldap_conn.add(sudo_dn, sudo_attr) ldap_conn.add(sudo_dn, sudo_attr)
@require_admin
def sudo_add(request): def sudo_add(request):
header_title, path1, path2 = u'Sudo鎺堟潈', u'鏉冮檺绠$悊', u'娣诲姞Sudo鏉冮檺' header_title, path1, path2 = u'Sudo鎺堟潈', u'鏉冮檺绠$悊', u'娣诲姞Sudo鏉冮檺'
user_groups = UserGroup.objects.filter(id__gt=2) user_groups = UserGroup.objects.filter(id__gt=2)
@ -294,6 +303,7 @@ def sudo_add(request):
return render_to_response('jperm/sudo_add.html', locals(), context_instance=RequestContext(request)) return render_to_response('jperm/sudo_add.html', locals(), context_instance=RequestContext(request))
@require_admin
def sudo_list(request): def sudo_list(request):
header_title, path1, path2 = u'Sudo鎺堟潈', u'鏉冮檺绠$悊', u'Sudo鏉冮檺璇︽儏' header_title, path1, path2 = u'Sudo鎺堟潈', u'鏉冮檺绠$悊', u'Sudo鏉冮檺璇︽儏'
contact_list = SudoPerm.objects.all() contact_list = SudoPerm.objects.all()
@ -302,6 +312,7 @@ def sudo_list(request):
return render_to_response('jperm/sudo_list.html', locals(), context_instance=RequestContext(request)) return render_to_response('jperm/sudo_list.html', locals(), context_instance=RequestContext(request))
@require_admin
def sudo_edit(request): def sudo_edit(request):
header_title, path1, path2 = u'Sudo鎺堟潈', u'鎺堟潈绠$悊', u'Sudo淇敼' header_title, path1, path2 = u'Sudo鎺堟潈', u'鎺堟潈绠$悊', u'Sudo淇敼'
@ -348,6 +359,7 @@ def sudo_edit(request):
return render_to_response('jperm/sudo_edit.html', locals(), context_instance=RequestContext(request)) return render_to_response('jperm/sudo_edit.html', locals(), context_instance=RequestContext(request))
@require_admin
def sudo_detail(request): def sudo_detail(request):
header_title, path1, path2 = u'Sudo鎺堟潈璇︽儏', u'鎺堟潈绠$悊', u'鎺堟潈璇︽儏' header_title, path1, path2 = u'Sudo鎺堟潈璇︽儏', u'鎺堟潈绠$悊', u'鎺堟潈璇︽儏'
sudo_perm_id = request.GET.get('id') sudo_perm_id = request.GET.get('id')
@ -372,6 +384,7 @@ def sudo_detail(request):
return render_to_response('jperm/sudo_detail.html', locals(), context_instance=RequestContext(request)) return render_to_response('jperm/sudo_detail.html', locals(), context_instance=RequestContext(request))
@require_admin
def sudo_del(request): def sudo_del(request):
sudo_perm_id = request.GET.get('id', '0') sudo_perm_id = request.GET.get('id', '0')
sudo_perm = SudoPerm.objects.filter(id=int(sudo_perm_id)) sudo_perm = SudoPerm.objects.filter(id=int(sudo_perm_id))
@ -383,6 +396,7 @@ def sudo_del(request):
return HttpResponseRedirect('/jperm/sudo_list/') return HttpResponseRedirect('/jperm/sudo_list/')
@require_admin
def cmd_add(request): def cmd_add(request):
header_title, path1, path2 = u'sudo鍛戒护娣诲姞', u'鎺堟潈绠$悊', u'鍛戒护缁勬坊鍔' header_title, path1, path2 = u'sudo鍛戒护娣诲姞', u'鎺堟潈绠$悊', u'鍛戒护缁勬坊鍔'
@ -399,6 +413,7 @@ def cmd_add(request):
return render_to_response('jperm/sudo_cmd_add.html', locals(), context_instance=RequestContext(request)) return render_to_response('jperm/sudo_cmd_add.html', locals(), context_instance=RequestContext(request))
@require_admin
def cmd_edit(request): def cmd_edit(request):
header_title, path1, path2 = u'sudo鍛戒护淇敼', u'鎺堟潈绠$悊绠$悊', u'鍛戒护缁勪慨鏀' header_title, path1, path2 = u'sudo鍛戒护淇敼', u'鎺堟潈绠$悊绠$悊', u'鍛戒护缁勪慨鏀'
@ -425,6 +440,7 @@ def cmd_edit(request):
return render_to_response('jperm/sudo_cmd_add.html', locals(), context_instance=RequestContext(request)) return render_to_response('jperm/sudo_cmd_add.html', locals(), context_instance=RequestContext(request))
@require_admin
def cmd_list(request): def cmd_list(request):
header_title, path1, path2 = u'sudo鍛戒护鏌ョ湅', u'鏉冮檺绠$悊', u'Sudo鍛戒护娣诲姞' header_title, path1, path2 = u'sudo鍛戒护鏌ョ湅', u'鏉冮檺绠$悊', u'Sudo鍛戒护娣诲姞'
@ -443,6 +459,7 @@ def cmd_list(request):
return render_to_response('jperm/sudo_cmd_list.html', locals(), context_instance=RequestContext(request)) return render_to_response('jperm/sudo_cmd_list.html', locals(), context_instance=RequestContext(request))
@require_admin
def cmd_del(request): def cmd_del(request):
cmd_group_id = request.GET.get('id') cmd_group_id = request.GET.get('id')
cmd_group = CmdGroup.objects.filter(id=cmd_group_id) cmd_group = CmdGroup.objects.filter(id=cmd_group_id)

View File

@ -1,5 +1,6 @@
__author__ = 'guanghongwei' #coding: utf-8
from django.http import HttpResponseRedirect
from juser.models import User, UserGroup from juser.models import User, UserGroup
from jasset.models import Asset, BisGroup from jasset.models import Asset, BisGroup
@ -46,3 +47,28 @@ def asset_perm_api(asset):
user_permed_list.extend(user_group.user_set.all()) user_permed_list.extend(user_group.user_set.all())
return user_permed_list return user_permed_list
def require_login(func):
"""瑕佹眰鐧诲綍鐨勮楗板櫒"""
def _deco(request, *args, **kwargs):
if not request.session.get('user_id'):
return HttpResponseRedirect('/login/')
return func(request, *args, **kwargs)
return _deco
def require_super_user(func):
def _deco(request, *args, **kwargs):
if request.session.get('role_id', 0) != 2:
print "##########%s" % request.session.get('role_id', 0)
return HttpResponseRedirect('/')
return func(request, *args, **kwargs)
return _deco
def require_admin(func):
def _deco(request, *args, **kwargs):
if request.session.get('role_id', 0) < 1:
return HttpResponseRedirect('/')
return func(request, *args, **kwargs)
return _deco

View File

@ -3,10 +3,11 @@ from juser.models import User
def name_proc(request): def name_proc(request):
user_id = request.session.get('user_id') user_id = request.session.get('user_id')
role = request.session.get('role_id') role_id = request.session.get('role_id')
user_total_num = User.objects.all().count() user_total_num = User.objects.all().count()
user_active_num = User.objects.filter(is_active=True).count() user_active_num = User.objects.filter(is_active=True).count()
request.session.set_expiry(3600)
return {'session_user_id': user_id, 'session_role_id': role, return {'session_user_id': user_id, 'session_role_id': role_id,
'user_total_num': user_total_num, 'user_active_num': user_active_num} 'user_total_num': user_total_num, 'user_active_num': user_active_num}

View File

@ -121,4 +121,3 @@ USE_TZ = False
STATIC_URL = '/static/' STATIC_URL = '/static/'
SESSION_COOKIE_AGE = 3600

View File

@ -21,6 +21,7 @@ from django.template import RequestContext
from juser.models import User, UserGroup from juser.models import User, UserGroup
from jlog.models import Log from jlog.models import Log
from jasset.models import Asset, BisGroup, IDC from jasset.models import Asset, BisGroup, IDC
from jumpserver.api import require_admin, require_super_user, require_login
BASE_DIR = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) BASE_DIR = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
CONF = ConfigParser() CONF = ConfigParser()
@ -52,10 +53,6 @@ def getDaysByNum(num):
return t return t
def base(request):
return render_to_response('base.html', context_instance=RequestContext(request))
def get_data(data, items, option): def get_data(data, items, option):
dic = {} dic = {}
li_date, li_str = getDaysByNum(7) li_date, li_str = getDaysByNum(7)
@ -74,6 +71,7 @@ def get_data(data, items, option):
return dic return dic
@require_login
def index(request): def index(request):
path1, path2 = u'浠〃鐩', 'Dashboard' path1, path2 = u'浠〃鐩', 'Dashboard'
users = User.objects.all() users = User.objects.all()
@ -87,6 +85,7 @@ def index(request):
user_top_ten = week_data.values('user').annotate(times=Count('user')).order_by('-times')[:10] user_top_ten = week_data.values('user').annotate(times=Count('user')).order_by('-times')[:10]
host_top_ten = week_data.values('host').annotate(times=Count('host')).order_by('-times')[:10] host_top_ten = week_data.values('host').annotate(times=Count('host')).order_by('-times')[:10]
user_dic, host_dic = get_data(week_data, user_top_ten, 'user'), get_data(week_data, host_top_ten, 'host') user_dic, host_dic = get_data(week_data, user_top_ten, 'user'), get_data(week_data, host_top_ten, 'host')
print "##############%s" % request.session.get('role_id')
top = {'user': '娲昏穬鐢ㄦ埛鏁', 'host': '娲昏穬涓绘満鏁', 'times': '鐧诲綍娆℃暟'} top = {'user': '娲昏穬鐢ㄦ埛鏁', 'host': '娲昏穬涓绘満鏁', 'times': '鐧诲綍娆℃暟'}
top_dic = {} top_dic = {}
@ -207,7 +206,7 @@ def login(request):
request.session['user_id'] = user.id request.session['user_id'] = user.id
if user.role == 'SU': if user.role == 'SU':
request.session['role_id'] = 2 request.session['role_id'] = 2
elif user.role == 'GA': elif user.role == 'DA':
request.session['role_id'] = 1 request.session['role_id'] = 1
else: else:
request.session['role_id'] = 0 request.session['role_id'] = 0

View File

@ -23,7 +23,7 @@ from connect import PyCrypt, KEY
from connect import BASE_DIR from connect import BASE_DIR
from connect import CONF from connect import CONF
from jumpserver.views import md5_crypt, LDAPMgmt, LDAP_ENABLE, ldap_conn, page_list_return, pages from jumpserver.views import md5_crypt, LDAPMgmt, LDAP_ENABLE, ldap_conn, page_list_return, pages
from jumpserver.api import user_perm_group_api from jumpserver.api import user_perm_group_api, require_login, require_super_user, require_admin
if LDAP_ENABLE: if LDAP_ENABLE:
LDAP_HOST_URL = CONF.get('ldap', 'host_url') LDAP_HOST_URL = CONF.get('ldap', 'host_url')
@ -204,6 +204,7 @@ def ldap_del_user(username):
ldap_conn.delete(sudo_dn) ldap_conn.delete(sudo_dn)
@require_super_user
def dept_add(request): def dept_add(request):
header_title, path1, path2 = '娣诲姞閮ㄩ棬', '鐢ㄦ埛绠$悊', '娣诲姞閮ㄩ棬' header_title, path1, path2 = '娣诲姞閮ㄩ棬', '鐢ㄦ埛绠$悊', '娣诲姞閮ㄩ棬'
if request.method == 'POST': if request.method == 'POST':
@ -224,6 +225,7 @@ def dept_add(request):
return render_to_response('juser/dept_add.html', locals(), context_instance=RequestContext(request)) return render_to_response('juser/dept_add.html', locals(), context_instance=RequestContext(request))
@require_super_user
def dept_list(request): def dept_list(request):
header_title, path1, path2 = '鏌ョ湅閮ㄩ棬', '鐢ㄦ埛绠$悊', '鏌ョ湅閮ㄩ棬' header_title, path1, path2 = '鏌ョ湅閮ㄩ棬', '鐢ㄦ埛绠$悊', '鏌ョ湅閮ㄩ棬'
keyword = request.GET.get('search') keyword = request.GET.get('search')
@ -237,6 +239,7 @@ def dept_list(request):
return render_to_response('juser/dept_list.html', locals(), context_instance=RequestContext(request)) return render_to_response('juser/dept_list.html', locals(), context_instance=RequestContext(request))
@require_super_user
def dept_detail(request): def dept_detail(request):
dept_id = request.GET.get('id', None) dept_id = request.GET.get('id', None)
if not dept_id: if not dept_id:
@ -248,6 +251,7 @@ def dept_detail(request):
return render_to_response('juser/dept_detail.html', locals(), context_instance=RequestContext(request)) return render_to_response('juser/dept_detail.html', locals(), context_instance=RequestContext(request))
@require_super_user
def dept_del(request): def dept_del(request):
dept_id = request.GET.get('id', None) dept_id = request.GET.get('id', None)
if not dept_id or dept_id in ['1', '2']: if not dept_id or dept_id in ['1', '2']:
@ -285,6 +289,7 @@ def dept_member_update(dept, users_id_list):
user.save() user.save()
@require_super_user
def dept_del_ajax(request): def dept_del_ajax(request):
dept_ids = request.POST.get('dept_ids') dept_ids = request.POST.get('dept_ids')
for dept_id in dept_ids.split(','): for dept_id in dept_ids.split(','):
@ -292,6 +297,7 @@ def dept_del_ajax(request):
return HttpResponse("鍒犻櫎鎴愬姛") return HttpResponse("鍒犻櫎鎴愬姛")
@require_super_user
def dept_edit(request): def dept_edit(request):
header_title, path1, path2 = '閮ㄩ棬缂栬緫', '鐢ㄦ埛绠$悊', '閮ㄩ棬缂栬緫' header_title, path1, path2 = '閮ㄩ棬缂栬緫', '鐢ㄦ埛绠$悊', '閮ㄩ棬缂栬緫'
if request.method == 'GET': if request.method == 'GET':
@ -323,6 +329,7 @@ def dept_edit(request):
return render_to_response('juser/dept_edit.html', locals(), context_instance=RequestContext(request)) return render_to_response('juser/dept_edit.html', locals(), context_instance=RequestContext(request))
@require_admin
def group_add(request): def group_add(request):
error = '' error = ''
msg = '' msg = ''
@ -358,6 +365,7 @@ def group_add(request):
return render_to_response('juser/group_add.html', locals(), context_instance=RequestContext(request)) return render_to_response('juser/group_add.html', locals(), context_instance=RequestContext(request))
@require_admin
def group_list(request): def group_list(request):
header_title, path1, path2 = '鏌ョ湅灏忕粍', '鐢ㄦ埛绠$悊', '鏌ョ湅灏忕粍' header_title, path1, path2 = '鏌ョ湅灏忕粍', '鐢ㄦ埛绠$悊', '鏌ョ湅灏忕粍'
keyword = request.GET.get('search', '') keyword = request.GET.get('search', '')
@ -370,6 +378,7 @@ def group_list(request):
return render_to_response('juser/group_list.html', locals(), context_instance=RequestContext(request)) return render_to_response('juser/group_list.html', locals(), context_instance=RequestContext(request))
@require_admin
def group_detail(request): def group_detail(request):
group_id = request.GET.get('id', None) group_id = request.GET.get('id', None)
if not group_id: if not group_id:
@ -379,6 +388,7 @@ def group_detail(request):
return render_to_response('juser/group_detail.html', locals(), context_instance=RequestContext(request)) return render_to_response('juser/group_detail.html', locals(), context_instance=RequestContext(request))
@require_admin
def group_del(request): def group_del(request):
group_id = request.GET.get('id', '') group_id = request.GET.get('id', '')
if not group_id: if not group_id:
@ -387,6 +397,7 @@ def group_del(request):
return HttpResponseRedirect('/juser/group_list/') return HttpResponseRedirect('/juser/group_list/')
@require_admin
def group_del_ajax(request): def group_del_ajax(request):
group_ids = request.POST.get('group_ids') group_ids = request.POST.get('group_ids')
for group_id in group_ids.split(','): for group_id in group_ids.split(','):
@ -404,6 +415,7 @@ def group_update_member(group_id, users_id_list):
group.user_set.add(user) group.user_set.add(user)
@require_admin
def group_edit(request): def group_edit(request):
error = '' error = ''
msg = '' msg = ''
@ -436,6 +448,7 @@ def group_edit(request):
return HttpResponseRedirect('/juser/group_list/') return HttpResponseRedirect('/juser/group_list/')
@require_admin
def user_add(request): def user_add(request):
error = '' error = ''
msg = '' msg = ''
@ -502,6 +515,7 @@ def user_add(request):
return render_to_response('juser/user_add.html', locals(), context_instance=RequestContext(request)) return render_to_response('juser/user_add.html', locals(), context_instance=RequestContext(request))
@require_admin
def user_list(request, option=""): def user_list(request, option=""):
user_role = {'SU': u'瓒呯骇绠$悊鍛', 'GA': u'缁勭鐞嗗憳', 'CU': u'鏅氱敤鎴'} user_role = {'SU': u'瓒呯骇绠$悊鍛', 'GA': u'缁勭鐞嗗憳', 'CU': u'鏅氱敤鎴'}
header_title, path1, path2 = '鏌ョ湅鐢ㄦ埛', '鐢ㄦ埛绠$悊', '鐢ㄦ埛鍒楄〃' header_title, path1, path2 = '鏌ョ湅鐢ㄦ埛', '鐢ㄦ埛绠$悊', '鐢ㄦ埛鍒楄〃'
@ -533,6 +547,7 @@ def user_list(request, option=""):
return render_to_response('juser/user_list.html', locals(), context_instance=RequestContext(request)) return render_to_response('juser/user_list.html', locals(), context_instance=RequestContext(request))
@require_admin
def user_detail(request): def user_detail(request):
user_id = request.GET.get('id', '') user_id = request.GET.get('id', '')
if not user_id: if not user_id:
@ -545,6 +560,7 @@ def user_detail(request):
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))
@require_admin
def user_del(request): def user_del(request):
user_id = request.GET.get('id', '') user_id = request.GET.get('id', '')
if not user_id: if not user_id:
@ -559,6 +575,7 @@ def user_del(request):
return HttpResponseRedirect('/juser/user_list/') return HttpResponseRedirect('/juser/user_list/')
@require_admin
def user_del_ajax(request): def user_del_ajax(request):
user_ids = request.POST.get('ids') user_ids = request.POST.get('ids')
for user_id in user_ids.split(','): for user_id in user_ids.split(','):
@ -573,6 +590,7 @@ def user_del_ajax(request):
return HttpResponse('鍒犻櫎鎴愬姛') return HttpResponse('鍒犻櫎鎴愬姛')
@require_admin
def user_edit(request): def user_edit(request):
header_title, path1, path2 = '缂栬緫鐢ㄦ埛', '鐢ㄦ埛绠$悊', '鐢ㄦ埛缂栬緫' header_title, path1, path2 = '缂栬緫鐢ㄦ埛', '鐢ㄦ埛绠$悊', '鐢ㄦ埛缂栬緫'
if request.method == 'GET': if request.method == 'GET':

View File

@ -28,7 +28,22 @@
</div> </div>
</div> </div>
<div class="ibox-content"> <div class="panel blank-panel">
<div class="panel-heading">
<div class="panel-options">
<ul class="nav nav-tabs">
<li id="tab1" class=""><a href="/jperm/sudo_list/">鏌ョ湅Sudo鎺堟潈</a></li>
<li id="tab2" class="active"><a href="/jperm/sudo_add/">Sudo鎺堟潈娣诲姞</a></li>
<li id="tab3" class=""><a href="/jperm/cmd_list/">鏌ョ湅鍛戒护缁</a></li>
<li id="tab4" class=""><a href="/jperm/cmd_add/">娣诲姞鍛戒护缁</a></li>
</ul>
</div>
</div>
<div class="panel-body">
<div class="tab-content">
<div id="tab-1" class="tab-pane active">
<form id="sudoPerm" method="post" class="form-horizontal" action=""> <form id="sudoPerm" method="post" class="form-horizontal" action="">
{% if error %} {% if error %}
<div class="alert alert-warning text-center">{{ error }}</div> <div class="alert alert-warning text-center">{{ error }}</div>
@ -163,6 +178,9 @@
</div> </div>
</div> </div>
</form> </form>
</div>
</div>
</div>
</div> </div>
</div> </div>
@ -187,24 +205,6 @@ $('#sudoPerm').validator({
tip: "杈撳叆sudoas鐢ㄦ埛", tip: "杈撳叆sudoas鐢ㄦ埛",
ok: "", ok: "",
msg: {required: "蹇呴』濉啓!"} msg: {required: "蹇呴』濉啓!"}
},
"user_groups_select": {
rule: "required",
tip: "閫夋嫨鐢ㄦ埛缁",
ok: "",
msg: {checked: "鑷冲皯閫夋嫨涓涓敤鎴风粍"}
},
"asset_groups_select": {
rule: "required",
tip: "閫夋嫨涓绘満缁",
ok: "",
msg: {checked: "鑷冲皯閫夋嫨涓涓富鏈虹粍"}
},
"cmd_groups_select": {
rule: "required",
tip: "閫夋嫨鍛戒护缁",
ok: "",
msg: {checked: "鑷冲皯閫夋嫨涓涓懡浠ょ粍"}
} }
}, },
@ -216,7 +216,7 @@ $('#sudoPerm').validator({
$(document).ready(function(){ $(document).ready(function(){
$("#submit_button").click(function(){ $("#submit_button").click(function(){
$('#users_selected option').each(function(){ $('#sudoPerm option').each(function(){
$(this).prop('selected', true) $(this).prop('selected', true)
}) })
}) })

View File

@ -27,6 +27,22 @@
</div> </div>
</div> </div>
<div class="ibox-content"> <div class="ibox-content">
<div class="panel blank-panel">
<div class="panel-heading">
<div class="panel-options">
<ul class="nav nav-tabs">
<li id="tab1" class=""><a href="/jperm/sudo_list/">鏌ョ湅Sudo鎺堟潈</a></li>
<li id="tab2" class=""><a href="/jperm/sudo_add/">Sudo鎺堟潈娣诲姞</a></li>
<li id="tab3" class=""><a href="/jperm/cmd_list/">鏌ョ湅鍛戒护缁</a></li>
<li id="tab4" class="active"><a href="/jperm/cmd_add/">娣诲姞鍛戒护缁</a></li>
</ul>
</div>
</div>
<div class="panel-body">
<div class="tab-content">
<div id="tab-1" class="tab-pane active">
<form id="cmdForm" method="post" class="form-horizontal" action=""> <form id="cmdForm" method="post" class="form-horizontal" action="">
{% if error %} {% if error %}
<div class="alert alert-warning text-center">{{ error }}</div> <div class="alert alert-warning text-center">{{ error }}</div>
@ -73,6 +89,10 @@
</div> </div>
</div> </div>
</div> </div>
</div>
</div>
</div>
</div>
<script> <script>
$('#cmdForm').validator({ $('#cmdForm').validator({

View File

@ -29,9 +29,21 @@
</div> </div>
<div class="ibox-content"> <div class="ibox-content">
<div class=""> <div class="panel blank-panel">
<a target="_blank" href="/jperm/cmd_add/" class="btn btn-sm btn-primary "> 娣诲姞 </a> <div class="panel-heading">
<div class="panel-options">
<ul class="nav nav-tabs">
<li id="tab1" class=""><a href="/jperm/sudo_list/">鏌ョ湅Sudo鎺堟潈</a></li>
<li id="tab2" class=""><a href="/jperm/sudo_add/">Sudo鎺堟潈娣诲姞</a></li>
<li id="tab3" class="active"><a href="/jperm/cmd_list/">鏌ョ湅鍛戒护缁</a></li>
<li id="tab4" class=""><a href="/jperm/cmd_add/">娣诲姞鍛戒护缁</a></li>
</ul>
</div> </div>
</div>
<div class="panel-body">
<div class="tab-content">
<div id="tab-1" class="tab-pane active">
<table class="table table-striped table-bordered table-hover " id="editable" > <table class="table table-striped table-bordered table-hover " id="editable" >
<thead> <thead>
@ -57,6 +69,10 @@
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div>
</div>
</div>
</div>
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<div class="dataTables_info" id="editable_info" role="status" aria-live="polite"> <div class="dataTables_info" id="editable_info" role="status" aria-live="polite">

View File

@ -29,6 +29,19 @@
</div> </div>
<div class="ibox-content"> <div class="ibox-content">
<div class="panel blank-panel">
<div class="panel-heading">
<div class="panel-options">
<ul class="nav nav-tabs">
<li id="tab1" class="active"><a href="/jperm/sudo_list/">鏌ョ湅Sudo鎺堟潈</a></li>
<li id="tab2" class=""><a href="/jperm/sudo_add/">Sudo鎺堟潈娣诲姞</a></li>
<li id="tab3" class=""><a href="/jperm/cmd_list/">鏌ョ湅鍛戒护缁</a></li>
<li id="tab4" class=""><a href="/jperm/cmd_add/">娣诲姞鍛戒护缁</a></li>
</ul>
</div>
</div>
<div class="panel-body">
<form id="sudoPerm" method="post" class="form-horizontal" action=""> <form id="sudoPerm" method="post" class="form-horizontal" action="">
{% if error %} {% if error %}
<div class="alert alert-warning text-center">{{ error }}</div> <div class="alert alert-warning text-center">{{ error }}</div>
@ -173,6 +186,7 @@
</div> </div>
</div> </div>
</form> </form>
</div>
</div> </div>
</div> </div>
@ -180,5 +194,3 @@
</div> </div>
</div> </div>
{% endblock %}

View File

@ -29,30 +29,15 @@
</div> </div>
<div class="ibox-content"> <div class="ibox-content">
{# <div class="" style="margin-left: 15px;">#}
{# <a target="_blank" href="/jperm/cmd_add/" class="btn btn-sm btn-primary "> 娣诲姞鍛戒护缁 </a>#}
{# <a target="_blank" href="/jperm/cmd_list/" class="btn btn-sm btn-warning "> 鏌ョ湅鍛戒护缁 </a>#}
{# <a target="_blank" href="/jperm/sudo_add/" class="btn btn-sm btn-danger "> Sudo鎺堟潈娣诲姞 </a>#}
{# </div>#}
<div class="panel blank-panel"> <div class="panel blank-panel">
<div class="panel-heading"> <div class="panel-heading">
<div class="panel-options"> <div class="panel-options">
<ul class="nav nav-tabs"> <ul class="nav nav-tabs">
<li id="tab1" class="active"><a data-toggle="tab" href="#tab-1">鏌ョ湅鎺堟潈</a></li> <li id="tab1" class="active"><a href="/jperm/sudo_list/">鏌ョ湅Sudo鎺堟潈</a></li>
{# <li id="tab2" class=""><a data-toggle="tab" href="#tab-2">鐢ㄦ埛鎺堟潈璇︽儏</a></li>#} <li id="tab2" class=""><a href="/jperm/sudo_add/">Sudo鎺堟潈娣诲姞</a></li>
<li style="float: right"> <li id="tab3" class=""><a href="/jperm/cmd_list/">鏌ョ湅鍛戒护缁</a></li>
{# <form method="get" action="" class="pull-right mail-search">#} <li id="tab4" class=""><a href="/jperm/cmd_add/">娣诲姞鍛戒护缁</a></li>
{# <div class="input-group">#}
{# <input type="text" class="form-control input-sm" id="search_input" name="search" placeholder="Search">#}
{# <div class="input-group-btn">#}
{# <button id='search_btn' type="button" class="btn btn-sm btn-primary">#}
{# Search#}
{# </button>#}
{# </div>#}
{# </div>#}
{# </form>#}
</li>
</ul> </ul>
</div> </div>
</div> </div>

View File

@ -32,9 +32,9 @@
<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 id="del_btn" 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="./search/" 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="keyword" placeholder="Search">
<div class="input-group-btn"> <div class="input-group-btn">
<button id='search_btn' type="submit" class="btn btn-sm btn-primary"> <button id='search_btn' type="submit" class="btn btn-sm btn-primary">
Search Search
@ -68,7 +68,7 @@
<td class="text-center"> {{ user.username }} </td> <td class="text-center"> {{ user.username }} </td>
<td class="text-center"> {{ user.name }} </td> <td class="text-center"> {{ user.name }} </td>
<td class="text-center"> {{ user.dept.name }} </td> <td class="text-center"> {{ user.dept.name }} </td>
<td class="text-center"> {{ user.group.all | group_str2 }} </td> <td class="text-center" title="{% for user_group in user.group.all %} {{ user_group.name }} {% endfor %}"> {{ user.group.all | group_str2 }} </td>
<td class="text-center"> {{ user.id | get_role }}</td> <td class="text-center"> {{ user.id | get_role }}</td>
<td class="text-center">{{ user.is_active|bool2str }}</td> <td class="text-center">{{ user.is_active|bool2str }}</td>
<td class="text-center"> <td class="text-center">

View File

@ -45,19 +45,8 @@
</li> </li>
<li id="sudo_add"> <li id="sudo_add">
<a href="/jperm/sudo_add/">Sudo娣诲姞</a> <a href="/jperm/sudo_list/">Sudo鎺堟潈</a>
</li> </li>
<li id="sudo_list">
<a href="/jperm/sudo_list/">Sudo鏌ョ湅</a>
</li>
<li id="cmd_add">
<a href="/jperm/cmd_add/">鍛戒护缁勬坊鍔</a>
</li>
<li id="cmd_list">
<a href="/jperm/cmd_list/">鍛戒护缁勬煡鐪</a>
</li>
</ul> </ul>
</li> </li>
<li id="jlog"> <li id="jlog">

View File

@ -6,7 +6,7 @@
</span> </span>
<a data-toggle="dropdown" class="dropdown-toggle" href="#"> <a data-toggle="dropdown" class="dropdown-toggle" href="#">
<span class="clear"> <span class="block m-t-xs"> <strong class="font-bold">{{ session_user_id | to_name}}</strong> <span class="clear"> <span class="block m-t-xs"> <strong class="font-bold">{{ session_user_id | to_name}}</strong>
</span> <span class="text-muted text-xs block">{{ role_id | to_role_name }} <b class="caret"></b></span> </span> </a> </span> <span class="text-muted text-xs block">{{ session_role_id | to_role_name }} <b class="caret"></b></span> </span> </a>
<ul class="dropdown-menu animated fadeInRight m-t-xs"> <ul class="dropdown-menu animated fadeInRight m-t-xs">
<li><a href="/juser/profile/">涓汉淇℃伅</a></li> <li><a href="/juser/profile/">涓汉淇℃伅</a></li>
<li><a href="/juser/chg_pass/">淇敼瀵嗙爜</a></li> <li><a href="/juser/chg_pass/">淇敼瀵嗙爜</a></li>