mirror of https://github.com/jumpserver/jumpserver
用户详情
parent
532646a431
commit
35c818f4a0
|
@ -97,7 +97,9 @@ def group_list(request):
|
|||
header_title, path1, path2 = u'查看资产组', u'资产管理', u'查看资产组'
|
||||
keyword = request.GET.get('keyword', '')
|
||||
asset_group_list = AssetGroup.objects.all()
|
||||
|
||||
group_id = request.GET.get('id')
|
||||
if group_id:
|
||||
asset_group_list = asset_group_list.filter(id=group_id)
|
||||
if keyword:
|
||||
asset_group_list = asset_group_list.filter(Q(name__contains=keyword) | Q(comment__contains=keyword))
|
||||
|
||||
|
@ -261,7 +263,7 @@ def asset_list(request):
|
|||
asset_group_all = AssetGroup.objects.all()
|
||||
asset_types = ASSET_TYPE
|
||||
asset_status = ASSET_STATUS
|
||||
|
||||
asset_id = request.GET.get('id')
|
||||
idc_name = request.GET.get('idc', '')
|
||||
group_name = request.GET.get('group', '')
|
||||
asset_type = request.GET.get('asset_type', '')
|
||||
|
@ -294,6 +296,9 @@ def asset_list(request):
|
|||
if status:
|
||||
asset_find = asset_find.filter(status__contains=status)
|
||||
|
||||
if asset_id:
|
||||
asset_find = asset_find.filter(id=asset_id)
|
||||
|
||||
if keyword:
|
||||
asset_find = asset_find.filter(
|
||||
Q(hostname__contains=keyword) |
|
||||
|
|
|
@ -43,13 +43,16 @@ def get_group_user_perm(ob):
|
|||
asset_groups = rule.asset_group.all()
|
||||
assets = rule.asset.all()
|
||||
perm_roles = rule.role.all()
|
||||
group_assets = []
|
||||
for asset_group in asset_groups:
|
||||
group_assets.extend(asset_group.asset_set.all())
|
||||
# 获取一个规则授权的角色和对应主机
|
||||
for role in perm_roles:
|
||||
if perm_role.get('role'):
|
||||
perm_role[role]['asset'] = perm_role[role].get('asset', set()).union(set(assets))
|
||||
if perm_role.get(role):
|
||||
perm_role[role]['asset'] = perm_role[role].get('asset', set()).union(set(assets).union(set(group_assets)))
|
||||
perm_role[role]['asset_group'] = perm_role[role].get('asset_group', set()).union(set(asset_groups))
|
||||
else:
|
||||
perm_role[role] = {'asset': set(assets), 'asset_group': set(asset_groups)}
|
||||
perm_role[role] = {'asset': set(assets).union(set(group_assets)), 'asset_group': set(asset_groups)}
|
||||
|
||||
# 获取一个规则用户授权的资产
|
||||
for asset in assets:
|
||||
|
|
|
@ -23,12 +23,14 @@ def perm_rule_list(request):
|
|||
"""
|
||||
# 渲染数据
|
||||
header_title, path1, path2 = "授权规则", "规则管理", "查看规则"
|
||||
|
||||
# 获取所有规则
|
||||
rules_list = PermRule.objects.all()
|
||||
|
||||
rule_id = request.GET.get('id')
|
||||
# TODO: 搜索和分页
|
||||
keyword = request.GET.get('search', '')
|
||||
if rule_id:
|
||||
rules_list = rules_list.filter(id=rule_id)
|
||||
|
||||
if keyword:
|
||||
rules_list = rules_list.filter(Q(name=keyword))
|
||||
|
||||
|
@ -226,12 +228,15 @@ def perm_role_list(request):
|
|||
|
||||
# 获取所有系统角色
|
||||
roles_list = PermRole.objects.all()
|
||||
|
||||
role_id = request.GET.get('id')
|
||||
# TODO: 搜索和分页
|
||||
keyword = request.GET.get('search', '')
|
||||
if keyword:
|
||||
roles_list = roles_list.filter(Q(name=keyword))
|
||||
|
||||
if role_id:
|
||||
roles_list = roles_list.filter(id=role_id)
|
||||
|
||||
roles_list, p, roles, page_range, current_page, show_first, show_end = pages(roles_list, request)
|
||||
|
||||
return my_render('jperm/perm_role_list.html', locals(), request)
|
||||
|
|
|
@ -7,7 +7,7 @@ import time
|
|||
from django import template
|
||||
from jperm.models import PermPush
|
||||
from jumpserver.api import *
|
||||
from jasset.models import AssetAlias
|
||||
from jperm.perm_api import get_group_user_perm
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
@ -294,3 +294,13 @@ def get_disk_info(disk_info):
|
|||
except Exception:
|
||||
disk_size = ''
|
||||
return disk_size
|
||||
|
||||
|
||||
@register.filter(name='user_perm_asset_num')
|
||||
def user_perm_asset_num(user_id):
|
||||
user = get_object(User, id=user_id)
|
||||
if user:
|
||||
user_perm_info = get_group_user_perm(user)
|
||||
return len(user_perm_info.get('asset').keys())
|
||||
else:
|
||||
return 0
|
||||
|
|
|
@ -231,24 +231,20 @@ def user_list(request):
|
|||
@require_role(role='user')
|
||||
def user_detail(request):
|
||||
header_title, path1, path2 = '用户详情', '用户管理', '用户详情'
|
||||
# if request.session.get('role_id') == 0:
|
||||
# user_id = request.user.id
|
||||
# else:
|
||||
# user_id = request.GET.get('id', '')
|
||||
# if request.session.get('role_id') == 1:
|
||||
# user, dept = get_session_user_dept(request)
|
||||
# if not validate(request, user=[user_id]):
|
||||
# return HttpResponseRedirect('/')
|
||||
user_id = request.GET.get('id', '')
|
||||
if not user_id:
|
||||
if request.session.get('role_id') == 0:
|
||||
user_id = request.user.id
|
||||
else:
|
||||
user_id = request.GET.get('id', '')
|
||||
|
||||
user = get_object(User, id=user_id)
|
||||
if not user:
|
||||
return HttpResponseRedirect('/juser/user_list/')
|
||||
user = User.objects.get(id=user_id)
|
||||
# if user:
|
||||
# pass
|
||||
# asset_group_permed = user.get_asset_group()
|
||||
# logs_last = Log.objects.filter(user=user.name).order_by('-start_time')[0:10]
|
||||
# logs_all = Log.objects.filter(user=user.name).order_by('-start_time')
|
||||
# logs_num = len(logs_all)
|
||||
|
||||
user_perm_info = get_group_user_perm(user)
|
||||
role_assets = user_perm_info.get('role')
|
||||
user_log_ten = Log.objects.filter(user=user.username).order_by('id')[0:10]
|
||||
user_log_last = Log.objects.filter(user=user.username).order_by('id')[0:50]
|
||||
user_log_last_num = len(user_log_last)
|
||||
|
||||
return my_render('juser/user_detail.html', locals(), request)
|
||||
|
||||
|
@ -406,11 +402,6 @@ def user_edit(request):
|
|||
return my_render('juser/user_edit.html', locals(), request)
|
||||
|
||||
|
||||
# @require_role(role='admin')
|
||||
def user_edit_adm(request):
|
||||
pass
|
||||
|
||||
|
||||
def profile(request):
|
||||
a = request.user.id
|
||||
a = request.user.groups
|
||||
|
@ -489,11 +480,3 @@ def down_key(request):
|
|||
return response
|
||||
return HttpResponse('No Key File. Contact Admin.')
|
||||
|
||||
|
||||
@require_role(role='user')
|
||||
def RunCommand(request):
|
||||
if request.method == 'GET':
|
||||
GUP = get_group_user_perm(request.user)
|
||||
print GUP
|
||||
assets = GUP.get('asset')
|
||||
return render_to_response('juser/run_command.html', locals(), context_instance=RequestContext(request))
|
|
@ -222,7 +222,7 @@
|
|||
var url='/jperm/role/get/?id=' + $(this).attr('value');
|
||||
var href = $(this).attr('href');
|
||||
var new_url = '/jlog/web_terminal/?id=' + $(this).attr('value') + '&role=';
|
||||
var hostname = $(this).closest('tr').find('.hostname')[0].innerHTML;
|
||||
var hostname = $(this).closest('tr').find('.hostname a')[0].innerHTML;
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: url,
|
||||
|
@ -247,6 +247,7 @@
|
|||
$.each(dataArray, function(index, value){
|
||||
aUrl += '<a onclick="windowOpen(this); return false" class="btn btn-xs btn-primary newa" href=' + new_url + value + ' value=' + hostname + '>' + value + '</a> '
|
||||
});
|
||||
console.log(aUrl);
|
||||
layer.alert(aUrl, {
|
||||
skin: 'layui-layer-molv',
|
||||
title: '多个角色,请选择一个连接',
|
||||
|
|
|
@ -76,6 +76,36 @@
|
|||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-navy">授权主机数量</td>
|
||||
<td>
|
||||
{{ user_perm_info.asset.keys | length }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-navy">授权主机组</td>
|
||||
<td>
|
||||
<table class="table">
|
||||
{% for group in user_perm_info.asset_group.keys%}
|
||||
<tr>
|
||||
<td><a href="/jasset/group_list/?id={{ group.id }}">{{ group.name }}</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-navy">授权规则</td>
|
||||
<td>
|
||||
<table class="table">
|
||||
{% for rule in user_perm_info.rule%}
|
||||
<tr>
|
||||
<td><a href="/jperm/role/?id={{ rule.id }}">{{ rule.name }}</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -94,10 +124,6 @@
|
|||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">Config option 1</a>
|
||||
</li>
|
||||
<li><a href="#">Config option 2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
<i class="fa fa-times"></i>
|
||||
|
@ -106,33 +132,35 @@
|
|||
</div>
|
||||
<div class="ibox-content ibox-heading">
|
||||
<h3>用户的所有授权主机</h3>
|
||||
<small><i class="fa fa-map-marker"></i> 这里包含了用户所有的主机组和组下的主机.</small>
|
||||
<small><i class="fa fa-map-marker"></i> 这里包含了用户授权角色和角色下的主机.</small>
|
||||
</div>
|
||||
<div class="ibox-content inspinia-timeline">
|
||||
{# {% for group in user|get_user_asset_group %}#}
|
||||
{# <div class="timeline-item">#}
|
||||
{# <div class="row">#}
|
||||
{# <div class="col-xs-3 date">#}
|
||||
{# <i class="fa fa-repeat"></i>#}
|
||||
{# <b><a href="/jperm/perm_list/?uid={{ user.id }}&agid={{ group.id }}">{{ group.name }}</a></b>#}
|
||||
{# <br>#}
|
||||
{# <small class="text-navy">共: {{ group | group_asset_list_count }}台</small>#}
|
||||
{# </div>#}
|
||||
{# <div class="col-xs-7 content no-top-border">#}
|
||||
{# <p class="m-b-xs"><strong>{{ group.comment }}</strong></p>#}
|
||||
{# <p>#}
|
||||
{# {% for asset in group|group_asset_list %}#}
|
||||
{# {{ asset.ip }}<br>#}
|
||||
{# {% endfor %}#}
|
||||
{# </p>#}
|
||||
{# <p></p>#}
|
||||
{# </div>#}
|
||||
{# </div>#}
|
||||
{# </div>#}
|
||||
{# {% endfor %}#}
|
||||
{# {% if not user|get_user_asset_group %}#}
|
||||
{# (无)#}
|
||||
{# {% endif %}#}
|
||||
{% for role, assets in role_assets.items %}
|
||||
<div class="timeline-item">
|
||||
<div class="row">
|
||||
<div class="col-xs-3 date">
|
||||
<i class="fa fa-info"></i>
|
||||
<b>
|
||||
<a href="/jperm/role/&id={{ role.id }}">{{ role.name }}</a></b>
|
||||
<br>
|
||||
<small class="text-navy">共: {{ assets.asset | length }}台</small>
|
||||
</div>
|
||||
<div class="col-xs-7 content no-top-border">
|
||||
<p class="m-b-xs">
|
||||
<strong>{{ role.comment }}</strong></p>
|
||||
<p>
|
||||
{% for asset in assets.asset %}
|
||||
<a href="/jasset/asset_list/?id={{ asset.id }}">{{ asset.hostname }}</a><br>
|
||||
{% endfor %}
|
||||
</p>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% ifequal '{{ asset.asset | length }}' 0 %}
|
||||
(无)
|
||||
{% endifequal %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -147,8 +175,9 @@
|
|||
</div>
|
||||
<div class="ibox-content">
|
||||
<div id="last">
|
||||
|
||||
<div class="feed-activity-list" >
|
||||
{% for log in logs_last %}
|
||||
{% for log in user_log_ten %}
|
||||
<div class="feed-element">
|
||||
<a href="profile.html" class="pull-left">
|
||||
<img alt="image" class="img-circle" src="/static/img/{{ session_role_id | to_avatar }}.png">
|
||||
|
@ -161,18 +190,18 @@
|
|||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% if not logs_last %}
|
||||
{% if not user_log_ten %}
|
||||
(暂无)
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if logs_num > 10 %}
|
||||
<button id="show" class="btn btn-primary btn-block m-t"><i class="fa fa-arrow-down"></i> Show All</button>
|
||||
{% if user_log_last_num > 10 %}
|
||||
<button id="show" class="btn btn-primary btn-block m-t"><i class="fa fa-arrow-down"></i> Show More</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div id="all" style="display: none">
|
||||
<div class="feed-activity-list" >
|
||||
{% for log in logs_all %}
|
||||
{% for log in user_log_last %}
|
||||
<div class="feed-element">
|
||||
<a href="profile.html" class="pull-left">
|
||||
<img alt="image" class="img-circle" src="/static/img/{{ session_role_id | to_avatar }}.png">
|
||||
|
|
|
@ -47,7 +47,8 @@
|
|||
<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>
|
||||
|
@ -59,10 +60,11 @@
|
|||
<td class="text-center">
|
||||
<input type="checkbox" name="checked" value="{{ user.id }}">
|
||||
</td>
|
||||
<td class="text-center"> {{ user.username }} </td>
|
||||
<td class="text-center"><a href="../user_detail/?id={{ user.id }}">{{ user.username }}</a></td>
|
||||
<td class="text-center"> {{ user.name }} </td>
|
||||
<td class="text-center" title="{% for user_group in user.group.all %} {{ user_group.name }} {% endfor %}"> {{ user.group.all | groups2str }} </td>
|
||||
<td class="text-center"> {{ user.id | get_role }}</td>
|
||||
<th class="text-center">{{ user.id | user_perm_asset_num }}</th>
|
||||
<td class="text-center">{{ user.is_active | bool2str }}</td>
|
||||
<td class="text-center">
|
||||
{% if user.username|key_exist %}
|
||||
|
@ -72,7 +74,6 @@
|
|||
{% endif %}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<a href="../user_detail/?id={{ user.id }}" class="btn btn-xs btn-primary">详情</a>
|
||||
<a href="../user_edit/?id={{ user.id }}" class="btn btn-xs btn-info">编辑</a>
|
||||
<a value="{{ user.uuid }}" class="btn btn-xs btn-warning email">Email</a>
|
||||
<a value="../user_del/?id={{ user.id }}" class="btn btn-xs btn-danger del {% if user.username == 'admin' %} disabled {% endif %}">删除</a>
|
||||
|
|
Loading…
Reference in New Issue