Commit a998de59 authored by guanghongwei's avatar guanghongwei

޸û

parent 2e5b2241
from juser.models import User
from jasset.models import Asset
from jumpserver.api import *
def name_proc(request):
user_id = request.session.get('user_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()
if role_id == 2:
user_total_num = User.objects.all().count()
user_active_num = User.objects.filter().count()
else:
user, dept = get_session_user_dept(request)
user_total_num = dept.user_set.all().count()
user_active_num = dept.user_set.filter(is_active=True).count()
host_total_num = Asset.objects.all().count()
host_active_num = Asset.objects.filter(is_active=True).count()
request.session.set_expiry(3600)
......
# coding: utf-8
import re
import time
from django import template
from juser.models import User, UserGroup, DEPT
from jasset.models import BisGroup
from jumpserver.api import *
register = template.Library()
......@@ -179,12 +177,19 @@ def to_name(user_id):
except:
return '非法用户'
@register.filter(name='to_role_name')
def to_role_name(role_id):
role_dict = {'0': '普通用户', '1': '部门管理员', '2': '超级管理员'}
return role_dict.get(str(role_id), '未知')
@register.filter(name='to_avatar')
def to_avatar(role_id='0'):
role_dict = {'0': 'user', '1': 'admin', '2': 'root'}
return role_dict.get(str(role_id), 'user')
@register.filter(name='get_user_asset_group')
def get_user_asset_group(user):
return user_perm_group_api(user)
\ No newline at end of file
......@@ -27,6 +27,6 @@ urlpatterns = patterns('juser.views',
(r'^user_del_ajax/$', 'user_del_ajax'),
(r'^user_edit/$', view_splitter, {'su': user_edit, 'adm': user_edit_adm}),
(r'^profile/$', 'profile'),
(r'^chg_pass/$', 'chg_pass'),
(r'^chg_info/$', 'chg_info'),
(r'^chg_role/$', 'chg_role'),
)
......@@ -233,10 +233,13 @@ def dept_list_adm(request):
return render_to_response('juser/dept_list.html', locals(), context_instance=RequestContext(request))
@require_admin
def chg_role(request):
request.session['role_id'] = 0
role = {'SU': 2, 'DA': 1, 'CU': 0}
user, dept = get_session_user_dept(request)
if request.session['role_id'] > 0:
request.session['role_id'] = 0
elif request.session['role_id'] == 0:
request.session['role_id'] = role.get(user.role, 0)
return HttpResponseRedirect('/')
......@@ -953,8 +956,36 @@ def profile(request):
return render_to_response('juser/user_detail.html', locals(), context_instance=RequestContext(request))
def chg_pass(request):
def chg_info(request):
header_title, path1, path2 = '修改信息 | Edit Info', '用户管理', '修改个人信息'
user_id = request.session.get('user_id')
user_set = User.objects.filter(id=user_id)
error = ''
if user_set:
user = user_set[0]
else:
return HttpResponseRedirect('/')
return render_to_response('juser/user_add.html', locals(), context_instance=RequestContext(request))
if request.method == 'POST':
name = request.POST.get('name', '')
password = request.POST.get('password', '')
ssh_key_pwd = request.POST.get('ssh_key_pwd', '')
email = request.POST.get('email', '')
if '' in [name, password, ssh_key_pwd, email]:
error = '不能为空'
if len(password) < 6 or len(ssh_key_pwd) < 6:
error = '密码须大于6位'
if not error:
if password != user.password:
password = md5_crypt(password)
if ssh_key_pwd != user.ssh_key_pwd:
ssh_key_pwd = md5_crypt(ssh_key_pwd)
user_set.update(name=name, password=password, ssh_key_pwd=ssh_key_pwd, email=email)
msg = '修改成功'
return render_to_response('juser/chg_info.html', locals(), context_instance=RequestContext(request))
<div class="footer fixed">
<div class="pull-right">
Version <strong>1.2.0</strong> GPL.
Version <strong>2.0.0</strong> GPL.
</div>
<div>
<strong>Copyright</strong> Jumpserver.org Organization &copy; 2014-2015
......
......@@ -66,7 +66,7 @@
<tr class="gradeX">
<td class="text-center"> {{ group.name }} </td>
<td class="text-center"> {{ group.dept.name }} </td>
<td class="text-center"><a href="/juser/user_list/?did={{ group.id }}">{{ group.id | member_count }} </a> </td>
<td class="text-center"><a href="/juser/user_list/?gid={{ group.id }}">{{ group.id | member_count }} </a> </td>
<td class="text-center"> {{ group.id | ugrp_perm_agrp_count }} </td>
<td class="text-center"> {{ group.id | ugrp_perm_asset_count }} </td>
<td class="text-center"> {{ group.id | ugrp_perm_asset_count }} </td>
......@@ -116,28 +116,7 @@
});
{# $(document).ready(function(){#}
{# $('#search_btn').click(function(){#}
{# if ($('#tab2').attr('class') == 'active'){#}
{# var tab='tab2'#}
{# } else {#}
{# var tab='tab1'#}
{# }#}
{##}
{# var search=$('#search_input').val()#}
{##}
{# $.post('/jperm/perm_list_ajax/',#}
{# {'tab': tab, 'search': search},#}
{# function(data){#}
{# if ($('#tab2').attr('class') == 'active'){#}
{# $('#tab-2').html(data)#}
{# } else {#}
{# $('#tab-1').html(data)#}
{# }#}
{# })#}
{##}
{# })#}
{# })#}
</script>
{% endblock %}
\ No newline at end of file
{% extends 'base.html' %}
{% load mytags %}
{% block content %}
{% include 'nav_cat_bar.html' %}
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-lg-10">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>编辑用户信息</h5>
<div class="ibox-tools">
<a class="collapse-link">
<i class="fa fa-chevron-up"></i>
</a>
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-wrench"></i>
</a>
<ul class="dropdown-menu dropdown-user">
<li><a href="#">未启用 1</a>
</li>
<li><a href="#">未启用 2</a>
</li>
</ul>
<a class="close-link">
<i class="fa fa-times"></i>
</a>
</div>
</div>
<div class="ibox-content">
<form method="post" id="userForm" class="form-horizontal" action="">
{% if error %}
<div class="alert alert-warning text-center">{{ error }}</div>
{% endif %}
{% if msg %}
<div class="alert alert-success text-center">{{ msg }}</div>
{% endif %}
<div class="form-group">
<div class="col-sm-8">
<input id="user_id" name="user_id" type="text" value="{{ user.id }}" style="display: none">
</div>
</div>
<div class="form-group">
<label for="name" class="col-sm-2 control-label">姓名<span class="red-fonts">*</span></label>
<div class="col-sm-8">
<input id="name" name="name" placeholder="Name" type="text" class="form-control" value="{{ user.name }}">
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<label for="password" class="col-sm-2 control-label">密码<span class="red-fonts">*</span></label>
<div class="col-sm-8">
<input id="password" name="password" placeholder="Password" type="password" class="form-control" value="{{ user.password }}">
<span class="help-block m-b-none">
登陆web的密码
</span>
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<label for="ssh_key_pwd" class="col-sm-2 control-label">密钥密码<span class="red-fonts">*</span></label>
<div class="col-sm-8">
<input id="ssh_key_pwd" name="ssh_key_pwd" placeholder="SSH Key Password" type="password" class="form-control" value="{{ user.ssh_key_pwd }}">
<span class="help-block m-b-none">
登陆 Jumpserver 使用的SSH密钥的密码
</span>
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<label for="email" class="col-sm-2 control-label">Email<span class="red-fonts">*</span></label>
<div class="col-sm-8">
<input id="email" name="email" type="email" placeholder="Email" class="form-control" value="{{ user.email }}" >
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<div class="col-sm-4 col-sm-offset-2">
<button class="btn btn-white" type="submit">取消</button>
<button id="submit_button" class="btn btn-primary" type="submit">确认修改</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<script>
$('#userForm').validator({
timely: 2,
theme: "yellow_right_effect",
fields: {
"password": {
rule: "required;length[6~50]",
tip: "输入密码",
ok: "",
msg: {required: "必须填写!"}
},
"ssh_key_pwd": {
rule: "required;length[6~50]",
tip: "ssh私钥密码",
ok: "",
msg: {required: "必须填写"}
},
"name": {
rule: "required",
tip: "姓名",
ok: "",
msg: {required: "必须填写"}
},
"email": {
rule: "required",
tip: "Email",
ok: "",
msg: {required: "必须填写"}
},
},
valid: function(form) {
form.submit();
}
});
</script>
{% endblock %}
\ No newline at end of file
......@@ -20,65 +20,61 @@
<table class="table table-striped table-bordered table-hover " id="editable" >
<thead>
<tr>
<th class="text-center">用户</th>
<th class="text-center">详情</th>
<td class="text-center" width="120">ID</td>
<td class="text-center">用户名</td>
<td class="text-center">姓名</td>
<td class="text-center">角色</td>
<td class="text-center">部门</td>
<td class="text-center">Email</td>
<td class="text-center">激活</td>
{# <td class="text-center">添加时间</td>#}
{# <td class="text-center">最后登录</td>#}
</tr>
</thead>
<tbody>
<tr class="gradeX">
<td class="text-center">ID</td>
<td class="text-center">{{ user.id }}</td>
</tr>
<tr class="gradeX">
<td class="text-center">username</td>
<td class="text-center">{{ user.username }}</td>
</tr>
<tr class="gradeX">
<td class="text-center">姓名</td>
<td class="text-center">{{ user.name }}</td>
</tr>
<tr class="gradeX">
<td class="text-center">角色</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 class="gradeX">
<td class="text-center">小组</td>
<td class="text-center">
{% for group in user.user_group.all %}
{{ group.name }}
{% endfor %}
</td>
</tr>
<tr class="gradeX">
<td class="text-center">Email</td>
<td class="text-center">{{ user.id | get_role }}</td>
<td class="text-center">{{ user.dept.name }}</td>
<td class="text-center">{{ user.email }}</td>
</tr>
<tr class="gradeX">
<td class="text-center">激活</td>
<td class="text-center">{{ user.is_active|bool2str }}</td>
{# <td class="text-center">{{ user.date_joined }}</td>#}
{# <td class="text-center">{{ user.last_login }}</td>#}
</tr>
<tr class="gradeX">
<td class="text-center">添加时间</td>
<td class="text-center">{{ user.date_joined }}</td>
<tr>
<td class="text-center">添加日期: </td>
<td colspan="2" class="text-center">{{ user.date_joined }}</td>
<td class="text-center">最后登录: </td>
<td colspan="3" class="text-center">{{ user.last_login }}</td>
</tr>
<tr class="gradeX">
<td class="text-center">最后登录</td>
<td class="text-center">{{ user.last_login }}</td>
<tr>
<td colspan="1" class="text-center">用户组:</td>
<td colspan="6" class="text-center">
{% for group in user.group.all %}
<b>{{ group.name }}</b>
{% endfor %}
</td>
</tr>
<tr class="gradeX">
<td class="text-center">授权主机组</td>
<td class="text-center">
{% for asset_group in asset_group_permed %}
{{ asset_group.name }}
<tr>
<td colspan="1" class="text-center">授权主机组:</td>
<td colspan="6" class="text-center">
{% for group in user|get_user_asset_group %}
<b>{{ group.name }}</b>
{% endfor %}
</td>
</tr>
{# #}
{# <tr class="gradeX">#}
{# <td class="text-center">授权主机组</td>#}
{# <td class="text-center">#}
{# {% for asset_group in asset_group_permed %}#}
{# {{ asset_group.name }}#}
{# {% endfor %}#}
{# </td>#}
{# </tr>#}
</table>
</div>
</div>
......
......@@ -72,7 +72,7 @@
<td class="text-center"> {{ user.id | get_role }}</td>
<td class="text-center">{{ user.is_active|bool2str }}</td>
<td class="text-center">
<a title="[ {{ user.name }} ] 详情" href="../user_detail/?id={{ user.id }}" class="iframe btn btn-xs btn-primary">详情</a>
<a title="[ {{ user.name }} ] 详情" value="../user_detail/?id={{ user.id }}" class="iframe btn btn-xs btn-primary">详情</a>
{% ifequal session_role_id 2 %}
<a href="../user_edit/?id={{ user.id }}" class="btn btn-xs btn-info">编辑</a>
<a href="../user_del/?id={{ user.id }}" class="btn btn-xs btn-danger">删除</a>
......@@ -80,7 +80,6 @@
<a href="../user_edit/?id={{ user.id }}" class="btn btn-xs btn-info {% if user.id|user_readonly %} disabled {% endif %}">编辑</a>
<a href="../user_del/?id={{ user.id }}" class="btn btn-xs btn-danger {% if user.id|user_readonly %} disabled {% endif %}">删除</a>
{% endifequal %}
</td>
</tr>
{% endfor %}
......@@ -102,8 +101,21 @@
<script>
$(document).ready(function(){
$(".iframe").colorbox({iframe:true, width:"70%", height:"70%"});
var check_array = []
$(".iframe").on('click', function() {
var url = $(this).attr("value");
$.layer({
type: 2,
title: '用户详情',
maxmin: true,
shift: 'top',
border: [2, 0.3, '#1AB394'],
shade: [0.5, '#000000'],
shadeClose: true,
area: ['800px', '600px'],
iframe: {src: url}
})
});
var check_array = [];
$('#del_btn').click(function(){
if (confirm("确定删除")) {
$(".gradeX input:checked").each(function() {check_array.push($(this).attr("value")) })
......
......@@ -8,14 +8,9 @@
<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">{{ 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>
{% ifequal session_role_id 2 %}
<li><a href="/juser/chg_role/">切换普通角色</a></li>
{% endifequal %}
{% ifequal session_role_id 1 %}
<li><a href="/juser/chg_role/">切换普通角色</a></li>
{% endifequal %}
<li><a value="/juser/user_detail/?id={{ session_user_id }}" class="iframe">个人信息</a></li>
<li><a href="/juser/chg_info/">修改信息</a></li>
<li><a href="/juser/chg_role/">切换角色</a></li>
<li class="divider"></li>
<li><a href="/logout/">注销</a></li>
......@@ -25,4 +20,20 @@
JS+
</div>
</li>
<script>
$(".iframe").on('click', function(){
var url= $(this).attr("value");
$.layer({
type: 2,
title: '个人信息',
maxmin: true,
shift: 'top',
border: [2, 0.3, '#1AB394'],
shade: [0.5, '#000000'],
shadeClose: true,
area : ['800px' , '600px'],
iframe: {src: url}
});
});
</script>
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