mirror of https://github.com/jumpserver/jumpserver
添加权限管理
parent
475501595e
commit
a7800b9a7a
|
@ -9,7 +9,7 @@ from jperm.models import Perm, SudoPerm, CmdGroup, DeptPerm
|
|||
from django.core.paginator import Paginator, EmptyPage, InvalidPage
|
||||
from django.db.models import Q
|
||||
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:
|
||||
|
@ -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
|
||||
|
||||
|
||||
@require_admin
|
||||
def perm_add(request):
|
||||
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()
|
||||
|
||||
|
||||
@require_super_user
|
||||
def dept_perm_edit(request):
|
||||
header_title, path1, path2 = u'閮ㄩ棬鎺堟潈娣诲姞', u'鎺堟潈绠$悊', u'閮ㄩ棬鎺堟潈娣诲姞'
|
||||
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))
|
||||
|
||||
|
||||
@require_admin
|
||||
def perm_list(request):
|
||||
header_title, path1, path2 = u'灏忕粍鎺堟潈', u'鎺堟潈绠$悊', u'鎺堟潈璇︽儏'
|
||||
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))
|
||||
|
||||
|
||||
@require_super_user
|
||||
def dept_perm_list(request):
|
||||
header_title, path1, path2 = '鏌ョ湅閮ㄩ棬', '鎺堟潈绠$悊', '閮ㄩ棬鎺堟潈'
|
||||
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()
|
||||
|
||||
|
||||
@require_super_user
|
||||
def perm_edit(request):
|
||||
if request.method == 'GET':
|
||||
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))
|
||||
|
||||
|
||||
@require_admin
|
||||
def perm_detail(request):
|
||||
header_title, path1, path2 = u'缂栬緫鎺堟潈', u'鎺堟潈绠$悊', u'鎺堟潈璇︽儏'
|
||||
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))
|
||||
|
||||
|
||||
@require_admin
|
||||
def perm_del(request):
|
||||
perm_id = request.GET.get('id')
|
||||
perm = Perm.objects.filter(id=perm_id)
|
||||
|
@ -190,6 +197,7 @@ def perm_del(request):
|
|||
return HttpResponseRedirect('/jperm/perm_list/')
|
||||
|
||||
|
||||
@require_admin
|
||||
def perm_asset_detail(request):
|
||||
header_title, path1, path2 = u'鐢ㄦ埛鎺堟潈涓绘満', u'鏉冮檺绠$悊', u'鐢ㄦ埛涓绘満璇︽儏'
|
||||
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)
|
||||
|
||||
|
||||
@require_admin
|
||||
def sudo_add(request):
|
||||
header_title, path1, path2 = u'Sudo鎺堟潈', u'鏉冮檺绠$悊', u'娣诲姞Sudo鏉冮檺'
|
||||
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))
|
||||
|
||||
|
||||
@require_admin
|
||||
def sudo_list(request):
|
||||
header_title, path1, path2 = u'Sudo鎺堟潈', u'鏉冮檺绠$悊', u'Sudo鏉冮檺璇︽儏'
|
||||
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))
|
||||
|
||||
|
||||
@require_admin
|
||||
def sudo_edit(request):
|
||||
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))
|
||||
|
||||
|
||||
@require_admin
|
||||
def sudo_detail(request):
|
||||
header_title, path1, path2 = u'Sudo鎺堟潈璇︽儏', u'鎺堟潈绠$悊', u'鎺堟潈璇︽儏'
|
||||
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))
|
||||
|
||||
|
||||
@require_admin
|
||||
def sudo_del(request):
|
||||
sudo_perm_id = request.GET.get('id', '0')
|
||||
sudo_perm = SudoPerm.objects.filter(id=int(sudo_perm_id))
|
||||
|
@ -383,6 +396,7 @@ def sudo_del(request):
|
|||
return HttpResponseRedirect('/jperm/sudo_list/')
|
||||
|
||||
|
||||
@require_admin
|
||||
def cmd_add(request):
|
||||
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))
|
||||
|
||||
|
||||
@require_admin
|
||||
def cmd_edit(request):
|
||||
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))
|
||||
|
||||
|
||||
@require_admin
|
||||
def cmd_list(request):
|
||||
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))
|
||||
|
||||
|
||||
@require_admin
|
||||
def cmd_del(request):
|
||||
cmd_group_id = request.GET.get('id')
|
||||
cmd_group = CmdGroup.objects.filter(id=cmd_group_id)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
__author__ = 'guanghongwei'
|
||||
#coding: utf-8
|
||||
|
||||
from django.http import HttpResponseRedirect
|
||||
from juser.models import User, UserGroup
|
||||
from jasset.models import Asset, BisGroup
|
||||
|
||||
|
@ -46,3 +47,28 @@ def asset_perm_api(asset):
|
|||
user_permed_list.extend(user_group.user_set.all())
|
||||
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
|
||||
|
|
|
@ -3,10 +3,11 @@ from juser.models import User
|
|||
|
||||
def name_proc(request):
|
||||
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_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}
|
||||
|
||||
|
|
|
@ -121,4 +121,3 @@ USE_TZ = False
|
|||
|
||||
STATIC_URL = '/static/'
|
||||
|
||||
SESSION_COOKIE_AGE = 3600
|
||||
|
|
|
@ -21,6 +21,7 @@ from django.template import RequestContext
|
|||
from juser.models import User, UserGroup
|
||||
from jlog.models import Log
|
||||
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__)))
|
||||
CONF = ConfigParser()
|
||||
|
@ -52,10 +53,6 @@ def getDaysByNum(num):
|
|||
return t
|
||||
|
||||
|
||||
def base(request):
|
||||
return render_to_response('base.html', context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def get_data(data, items, option):
|
||||
dic = {}
|
||||
li_date, li_str = getDaysByNum(7)
|
||||
|
@ -74,6 +71,7 @@ def get_data(data, items, option):
|
|||
return dic
|
||||
|
||||
|
||||
@require_login
|
||||
def index(request):
|
||||
path1, path2 = u'浠〃鐩', 'Dashboard'
|
||||
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]
|
||||
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')
|
||||
print "##############%s" % request.session.get('role_id')
|
||||
|
||||
top = {'user': '娲昏穬鐢ㄦ埛鏁', 'host': '娲昏穬涓绘満鏁', 'times': '鐧诲綍娆℃暟'}
|
||||
top_dic = {}
|
||||
|
@ -207,7 +206,7 @@ def login(request):
|
|||
request.session['user_id'] = user.id
|
||||
if user.role == 'SU':
|
||||
request.session['role_id'] = 2
|
||||
elif user.role == 'GA':
|
||||
elif user.role == 'DA':
|
||||
request.session['role_id'] = 1
|
||||
else:
|
||||
request.session['role_id'] = 0
|
||||
|
|
|
@ -23,7 +23,7 @@ from connect import PyCrypt, KEY
|
|||
from connect import BASE_DIR
|
||||
from connect import CONF
|
||||
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:
|
||||
LDAP_HOST_URL = CONF.get('ldap', 'host_url')
|
||||
|
@ -204,6 +204,7 @@ def ldap_del_user(username):
|
|||
ldap_conn.delete(sudo_dn)
|
||||
|
||||
|
||||
@require_super_user
|
||||
def dept_add(request):
|
||||
header_title, path1, path2 = '娣诲姞閮ㄩ棬', '鐢ㄦ埛绠$悊', '娣诲姞閮ㄩ棬'
|
||||
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))
|
||||
|
||||
|
||||
@require_super_user
|
||||
def dept_list(request):
|
||||
header_title, path1, path2 = '鏌ョ湅閮ㄩ棬', '鐢ㄦ埛绠$悊', '鏌ョ湅閮ㄩ棬'
|
||||
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))
|
||||
|
||||
|
||||
@require_super_user
|
||||
def dept_detail(request):
|
||||
dept_id = request.GET.get('id', None)
|
||||
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))
|
||||
|
||||
|
||||
@require_super_user
|
||||
def dept_del(request):
|
||||
dept_id = request.GET.get('id', None)
|
||||
if not dept_id or dept_id in ['1', '2']:
|
||||
|
@ -285,6 +289,7 @@ def dept_member_update(dept, users_id_list):
|
|||
user.save()
|
||||
|
||||
|
||||
@require_super_user
|
||||
def dept_del_ajax(request):
|
||||
dept_ids = request.POST.get('dept_ids')
|
||||
for dept_id in dept_ids.split(','):
|
||||
|
@ -292,6 +297,7 @@ def dept_del_ajax(request):
|
|||
return HttpResponse("鍒犻櫎鎴愬姛")
|
||||
|
||||
|
||||
@require_super_user
|
||||
def dept_edit(request):
|
||||
header_title, path1, path2 = '閮ㄩ棬缂栬緫', '鐢ㄦ埛绠$悊', '閮ㄩ棬缂栬緫'
|
||||
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))
|
||||
|
||||
|
||||
@require_admin
|
||||
def group_add(request):
|
||||
error = ''
|
||||
msg = ''
|
||||
|
@ -358,6 +365,7 @@ def group_add(request):
|
|||
return render_to_response('juser/group_add.html', locals(), context_instance=RequestContext(request))
|
||||
|
||||
|
||||
@require_admin
|
||||
def group_list(request):
|
||||
header_title, path1, path2 = '鏌ョ湅灏忕粍', '鐢ㄦ埛绠$悊', '鏌ョ湅灏忕粍'
|
||||
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))
|
||||
|
||||
|
||||
@require_admin
|
||||
def group_detail(request):
|
||||
group_id = request.GET.get('id', None)
|
||||
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))
|
||||
|
||||
|
||||
@require_admin
|
||||
def group_del(request):
|
||||
group_id = request.GET.get('id', '')
|
||||
if not group_id:
|
||||
|
@ -387,6 +397,7 @@ def group_del(request):
|
|||
return HttpResponseRedirect('/juser/group_list/')
|
||||
|
||||
|
||||
@require_admin
|
||||
def group_del_ajax(request):
|
||||
group_ids = request.POST.get('group_ids')
|
||||
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)
|
||||
|
||||
|
||||
@require_admin
|
||||
def group_edit(request):
|
||||
error = ''
|
||||
msg = ''
|
||||
|
@ -436,6 +448,7 @@ def group_edit(request):
|
|||
return HttpResponseRedirect('/juser/group_list/')
|
||||
|
||||
|
||||
@require_admin
|
||||
def user_add(request):
|
||||
error = ''
|
||||
msg = ''
|
||||
|
@ -502,6 +515,7 @@ def user_add(request):
|
|||
return render_to_response('juser/user_add.html', locals(), context_instance=RequestContext(request))
|
||||
|
||||
|
||||
@require_admin
|
||||
def user_list(request, option=""):
|
||||
user_role = {'SU': u'瓒呯骇绠$悊鍛', 'GA': u'缁勭鐞嗗憳', 'CU': u'鏅氱敤鎴'}
|
||||
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))
|
||||
|
||||
|
||||
@require_admin
|
||||
def user_detail(request):
|
||||
user_id = request.GET.get('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))
|
||||
|
||||
|
||||
@require_admin
|
||||
def user_del(request):
|
||||
user_id = request.GET.get('id', '')
|
||||
if not user_id:
|
||||
|
@ -559,6 +575,7 @@ def user_del(request):
|
|||
return HttpResponseRedirect('/juser/user_list/')
|
||||
|
||||
|
||||
@require_admin
|
||||
def user_del_ajax(request):
|
||||
user_ids = request.POST.get('ids')
|
||||
for user_id in user_ids.split(','):
|
||||
|
@ -573,6 +590,7 @@ def user_del_ajax(request):
|
|||
return HttpResponse('鍒犻櫎鎴愬姛')
|
||||
|
||||
|
||||
@require_admin
|
||||
def user_edit(request):
|
||||
header_title, path1, path2 = '缂栬緫鐢ㄦ埛', '鐢ㄦ埛绠$悊', '鐢ㄦ埛缂栬緫'
|
||||
if request.method == 'GET':
|
||||
|
|
|
@ -28,7 +28,22 @@
|
|||
</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="">
|
||||
{% if error %}
|
||||
<div class="alert alert-warning text-center">{{ error }}</div>
|
||||
|
@ -163,6 +178,9 @@
|
|||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
@ -187,24 +205,6 @@ $('#sudoPerm').validator({
|
|||
tip: "杈撳叆sudoas鐢ㄦ埛",
|
||||
ok: "",
|
||||
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(){
|
||||
$("#submit_button").click(function(){
|
||||
$('#users_selected option').each(function(){
|
||||
$('#sudoPerm option').each(function(){
|
||||
$(this).prop('selected', true)
|
||||
})
|
||||
})
|
||||
|
|
|
@ -27,6 +27,22 @@
|
|||
</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=""><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="">
|
||||
{% if error %}
|
||||
<div class="alert alert-warning text-center">{{ error }}</div>
|
||||
|
@ -68,6 +84,10 @@
|
|||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -29,9 +29,21 @@
|
|||
</div>
|
||||
|
||||
<div class="ibox-content">
|
||||
<div class="">
|
||||
<a target="_blank" href="/jperm/cmd_add/" class="btn btn-sm btn-primary "> 娣诲姞 </a>
|
||||
</div>
|
||||
<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="active"><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">
|
||||
|
||||
<table class="table table-striped table-bordered table-hover " id="editable" >
|
||||
<thead>
|
||||
|
@ -57,6 +69,10 @@
|
|||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="dataTables_info" id="editable_info" role="status" aria-live="polite">
|
||||
|
|
|
@ -29,6 +29,19 @@
|
|||
</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="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="">
|
||||
{% if error %}
|
||||
<div class="alert alert-warning text-center">{{ error }}</div>
|
||||
|
@ -173,6 +186,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
@ -180,5 +194,3 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% endblock %}
|
|
@ -29,30 +29,15 @@
|
|||
</div>
|
||||
|
||||
<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-heading">
|
||||
<div class="panel-options">
|
||||
<ul class="nav nav-tabs">
|
||||
<li id="tab1" class="active"><a data-toggle="tab" href="#tab-1">鏌ョ湅鎺堟潈</a></li>
|
||||
{# <li id="tab2" class=""><a data-toggle="tab" href="#tab-2">鐢ㄦ埛鎺堟潈璇︽儏</a></li>#}
|
||||
<li style="float: right">
|
||||
{# <form method="get" action="" class="pull-right mail-search">#}
|
||||
{# <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>
|
||||
<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>
|
||||
|
|
|
@ -32,9 +32,9 @@
|
|||
<div class="">
|
||||
<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>
|
||||
<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">
|
||||
<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">
|
||||
<button id='search_btn' type="submit" class="btn btn-sm btn-primary">
|
||||
Search
|
||||
|
@ -68,7 +68,7 @@
|
|||
<td class="text-center"> {{ user.username }} </td>
|
||||
<td class="text-center"> {{ user.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.is_active|bool2str }}</td>
|
||||
<td class="text-center">
|
||||
|
|
|
@ -45,19 +45,8 @@
|
|||
</li>
|
||||
|
||||
<li id="sudo_add">
|
||||
<a href="/jperm/sudo_add/">Sudo娣诲姞</a>
|
||||
<a href="/jperm/sudo_list/">Sudo鎺堟潈</a>
|
||||
</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>
|
||||
</li>
|
||||
<li id="jlog">
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
</span>
|
||||
<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> <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">
|
||||
<li><a href="/juser/profile/">涓汉淇℃伅</a></li>
|
||||
<li><a href="/juser/chg_pass/">淇敼瀵嗙爜</a></li>
|
||||
|
|
Loading鈥
Reference in New Issue