mirror of https://github.com/jumpserver/jumpserver
修改 用户添加 和 组添加
parent
d90b59191f
commit
ad2a4d2d5d
|
@ -9,6 +9,7 @@ import subprocess
|
||||||
from Crypto.PublicKey import RSA
|
from Crypto.PublicKey import RSA
|
||||||
import crypt
|
import crypt
|
||||||
from django.http import HttpResponseRedirect
|
from django.http import HttpResponseRedirect
|
||||||
|
import datetime
|
||||||
|
|
||||||
from django.shortcuts import render_to_response
|
from django.shortcuts import render_to_response
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
|
@ -93,12 +94,13 @@ def group_update_user(group_id, users_id):
|
||||||
def db_add_user(**kwargs):
|
def db_add_user(**kwargs):
|
||||||
groups_post = kwargs.pop('groups')
|
groups_post = kwargs.pop('groups')
|
||||||
user = User(**kwargs)
|
user = User(**kwargs)
|
||||||
group_select = []
|
|
||||||
for group_id in groups_post:
|
|
||||||
group = UserGroup.objects.filter(id=group_id)
|
|
||||||
group_select.extend(group)
|
|
||||||
user.save()
|
user.save()
|
||||||
user.user_group = group_select
|
if groups_post:
|
||||||
|
group_select = []
|
||||||
|
for group_id in groups_post:
|
||||||
|
group = UserGroup.objects.filter(id=group_id)
|
||||||
|
group_select.extend(group)
|
||||||
|
user.group = group_select
|
||||||
|
|
||||||
|
|
||||||
def db_update_user(**kwargs):
|
def db_update_user(**kwargs):
|
||||||
|
@ -155,7 +157,11 @@ def server_del_user(username):
|
||||||
def ldap_add_user(username, ldap_pwd):
|
def ldap_add_user(username, ldap_pwd):
|
||||||
user_dn = "uid=%s,ou=People,%s" % (username, LDAP_BASE_DN)
|
user_dn = "uid=%s,ou=People,%s" % (username, LDAP_BASE_DN)
|
||||||
password_sha512 = gen_sha512(gen_rand_pwd(6), ldap_pwd)
|
password_sha512 = gen_sha512(gen_rand_pwd(6), ldap_pwd)
|
||||||
user = User.objects.get(username=username)
|
user = User.objects.filter(username=username)
|
||||||
|
if user:
|
||||||
|
user = user[0]
|
||||||
|
else:
|
||||||
|
raise AddError(u'用户 %s 不存在' % username)
|
||||||
|
|
||||||
user_attr = {'uid': [str(username)],
|
user_attr = {'uid': [str(username)],
|
||||||
'cn': [str(username)],
|
'cn': [str(username)],
|
||||||
|
@ -278,14 +284,17 @@ def group_add(request, group_type_select='A'):
|
||||||
error = u'组名 或 部门 不能为空'
|
error = u'组名 或 部门 不能为空'
|
||||||
raise AddError(error)
|
raise AddError(error)
|
||||||
|
|
||||||
group_db_add(name=group_name, comment=comment)
|
dept = DEPT.objects.filter(id=dept_id)
|
||||||
for user_id in users_selected:
|
if dept:
|
||||||
group_add_user(group_name, user_id=user_id)
|
dept = dept[0]
|
||||||
|
else:
|
||||||
|
AddError(u'部门不存在')
|
||||||
|
|
||||||
|
db_add_group(name=group_name, dept=dept, comment=comment)
|
||||||
except AddError:
|
except AddError:
|
||||||
pass
|
pass
|
||||||
except TypeError:
|
except TypeError:
|
||||||
error = u'保存用户组失败'
|
error = u'保存小组失败'
|
||||||
else:
|
else:
|
||||||
msg = u'添加组 %s 成功' % group_name
|
msg = u'添加组 %s 成功' % group_name
|
||||||
|
|
||||||
|
@ -294,7 +303,7 @@ def group_add(request, group_type_select='A'):
|
||||||
|
|
||||||
def group_list(request):
|
def group_list(request):
|
||||||
header_title, path1, path2 = '查看属组 | Show Group', '用户管理', '查看用户组'
|
header_title, path1, path2 = '查看属组 | Show Group', '用户管理', '查看用户组'
|
||||||
groups = contact_list = UserGroup.objects.filter(Q(type='M') | Q(type='A')).order_by('type')
|
contact_list = UserGroup.objects.all()
|
||||||
p = paginator = Paginator(contact_list, 10)
|
p = paginator = Paginator(contact_list, 10)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -476,14 +485,15 @@ def user_add(request):
|
||||||
header_title, path1, path2 = '添加用户 | User Add', '用户管理', '添加用户'
|
header_title, path1, path2 = '添加用户 | User Add', '用户管理', '添加用户'
|
||||||
user_role = {'SU': u'超级管理员', 'DA': u'部门管理员', 'CU': u'普通用户'}
|
user_role = {'SU': u'超级管理员', 'DA': u'部门管理员', 'CU': u'普通用户'}
|
||||||
dept_all = DEPT.objects.all()
|
dept_all = DEPT.objects.all()
|
||||||
|
group_all = UserGroup.objects.all()
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
username = request.POST.get('username', None)
|
username = request.POST.get('username', '')
|
||||||
password = request.POST.get('password', '')
|
password = request.POST.get('password', '')
|
||||||
name = request.POST.get('name', None)
|
name = request.POST.get('name', '')
|
||||||
email = request.POST.get('email', '')
|
email = request.POST.get('email', '')
|
||||||
dept_id = request.POST.get('dept_id')
|
dept_id = request.POST.get('dept_id')
|
||||||
auth_groups = request.POST.getlist('groups', None)
|
groups = request.POST.getlist('groups', [])
|
||||||
role_post = request.POST.get('role', 'CU')
|
role_post = request.POST.get('role', 'CU')
|
||||||
ssh_key_pwd = request.POST.get('ssh_key_pwd', '')
|
ssh_key_pwd = request.POST.get('ssh_key_pwd', '')
|
||||||
is_active = request.POST.get('is_active', '1')
|
is_active = request.POST.get('is_active', '1')
|
||||||
|
@ -498,24 +508,27 @@ def user_add(request):
|
||||||
error = u'用户 %s 已存在' % username
|
error = u'用户 %s 已存在' % username
|
||||||
raise AddError
|
raise AddError
|
||||||
|
|
||||||
|
dept = DEPT.objects.filter(id=dept_id)
|
||||||
|
if dept:
|
||||||
|
dept = dept[0]
|
||||||
|
else:
|
||||||
|
error = u'部门不存在'
|
||||||
|
raise AddError(error)
|
||||||
|
|
||||||
except AddError:
|
except AddError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
time_now = time.time()
|
|
||||||
try:
|
try:
|
||||||
db_add_user(username=username,
|
db_add_user(username=username,
|
||||||
password=md5_crypt(password),
|
password=md5_crypt(password),
|
||||||
name=name, email=email,
|
name=name, email=email, dept=dept,
|
||||||
groups=groups, role=role_post,
|
groups=groups, role=role_post,
|
||||||
ssh_pwd=CRYPTOR.encrypt(ssh_pwd) if ssh_pwd else '',
|
|
||||||
ssh_key_pwd=CRYPTOR.encrypt(ssh_key_pwd),
|
ssh_key_pwd=CRYPTOR.encrypt(ssh_key_pwd),
|
||||||
ldap_pwd=CRYPTOR.encrypt(ldap_pwd),
|
ldap_pwd=CRYPTOR.encrypt(ldap_pwd),
|
||||||
is_active=is_active,
|
is_active=is_active,
|
||||||
date_joined=time_now)
|
date_joined=datetime.datetime.now())
|
||||||
|
|
||||||
server_add_user(username, password, ssh_key_pwd)
|
server_add_user(username, password, ssh_key_pwd)
|
||||||
group_db_add(name=username, comment=username, type='P')
|
|
||||||
group_add_user(group_name=username, username=username)
|
|
||||||
if LDAP_ENABLE:
|
if LDAP_ENABLE:
|
||||||
ldap_add_user(username, ldap_pwd)
|
ldap_add_user(username, ldap_pwd)
|
||||||
msg = u'添加用户 %s 成功!' % username
|
msg = u'添加用户 %s 成功!' % username
|
||||||
|
|
|
@ -36,9 +36,8 @@
|
||||||
<table class="table table-striped table-bordered table-hover " id="editable" >
|
<table class="table table-striped table-bordered table-hover " id="editable" >
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="text-center">ID</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>
|
||||||
<th class="text-center">操作</th>
|
<th class="text-center">操作</th>
|
||||||
|
@ -47,10 +46,9 @@
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for group in contacts.object_list %}
|
{% for group in contacts.object_list %}
|
||||||
<tr class="gradeX">
|
<tr class="gradeX">
|
||||||
<td class="text-center"> {{ group.id }} </td>
|
|
||||||
<td class="text-center"> {{ group.name }} </td>
|
<td class="text-center"> {{ group.name }} </td>
|
||||||
<td class="text-center"> {{ group.type|group_type_to_str }} </td>
|
<td class="text-center"> {{ group.dept.name }} </td>
|
||||||
<td class="text-center"> {{ group.id|member_count }} </td>
|
<td class="text-center"> {{ group.name }} </td>
|
||||||
<td class="text-center"> {{ group.comment }} </td>
|
<td class="text-center"> {{ group.comment }} </td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<a title="[ {{ group.name }} ] 成员信息" href="../group_detail/?id={{ group.id }}" class="iframe btn btn-xs btn-primary">成员</a>
|
<a title="[ {{ group.name }} ] 成员信息" href="../group_detail/?id={{ group.id }}" class="iframe btn btn-xs btn-primary">成员</a>
|
||||||
|
|
|
@ -39,14 +39,14 @@
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="username" class="col-sm-2 control-label">用户名<span class="red-fonts">*</span></label>
|
<label for="username" class="col-sm-2 control-label">用户名<span class="red-fonts">*</span></label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input id="username" name="username" placeholder="Username" type="text" class="form-control" value={{ username }} {{ readonly }}>
|
<input id="username" name="username" placeholder="Username" type="text" class="form-control" {% if error %}value="{{ username }}" {% endif %}>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="hr-line-dashed"></div>
|
<div class="hr-line-dashed"></div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="password" class="col-sm-2 control-label">密码<span class="red-fonts">*</span></label>
|
<label for="password" class="col-sm-2 control-label">密码<span class="red-fonts">*</span></label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input id="password" name="password" placeholder="Password" type="password" class="form-control" value={{ password }}>
|
<input id="password" name="password" placeholder="Password" type="password" class="form-control" {% if error %}value="{{ password }}" {% endif %}>
|
||||||
<span class="help-block m-b-none">
|
<span class="help-block m-b-none">
|
||||||
登陆web的密码
|
登陆web的密码
|
||||||
</span>
|
</span>
|
||||||
|
@ -56,7 +56,7 @@
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="ssh_key_pwd" class="col-sm-2 control-label">密钥密码<span class="red-fonts">*</span></label>
|
<label for="ssh_key_pwd" class="col-sm-2 control-label">密钥密码<span class="red-fonts">*</span></label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input id="ssh_key_pwd" name="ssh_key_pwd" placeholder="SSH Key Password" type="password" class="form-control" value="{{ ssh_key_pwd }}">
|
<input id="ssh_key_pwd" name="ssh_key_pwd" placeholder="SSH Key Password" type="password" class="form-control" {% if error %}value="{{ ssh_key_pwd }}" {% endif %}>
|
||||||
<span class="help-block m-b-none">
|
<span class="help-block m-b-none">
|
||||||
登陆 Jumpserver 使用的SSH密钥的密码
|
登陆 Jumpserver 使用的SSH密钥的密码
|
||||||
</span>
|
</span>
|
||||||
|
@ -66,14 +66,14 @@
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="name" class="col-sm-2 control-label">姓名<span class="red-fonts">*</span></label>
|
<label for="name" class="col-sm-2 control-label">姓名<span class="red-fonts">*</span></label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input id="name" name="name" placeholder="Name" type="text" class="form-control" value={{ name }} >
|
<input id="name" name="name" placeholder="Name" type="text" class="form-control" {% if error %}value="{{ name }}" {% endif %} >
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="hr-line-dashed"></div>
|
<div class="hr-line-dashed"></div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="manage_group" class="col-lg-2 control-label">部门<span class="red-fonts">*</span></label>
|
<label for="dept_id" class="col-lg-2 control-label">部门<span class="red-fonts">*</span></label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<select id="manage_group" name="manage_group" class="form-control m-b">
|
<select id="dept_id" name="dept_id" class="form-control m-b">
|
||||||
{% for dept in dept_all %}
|
{% for dept in dept_all %}
|
||||||
<option value="{{ dept.id }}">{{ dept.name }}</option>
|
<option value="{{ dept.id }}">{{ dept.name }}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -85,19 +85,11 @@
|
||||||
<label for="groups" class="col-lg-2 control-label">小组</label>
|
<label for="groups" class="col-lg-2 control-label">小组</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<select id="groups" name="groups" class="form-control m-b" multiple size="12">
|
<select id="groups" name="groups" class="form-control m-b" multiple size="12">
|
||||||
{% for group in groups %}
|
{% for group in group_all %}
|
||||||
{% if groups_str %}
|
{% if forloop.first %}
|
||||||
{% if group.id|int2str in groups_str %}
|
<option value="{{ group.id }}" selected>{{ group.name }}</option>
|
||||||
<option value="{{ group.id }}" selected>{{ group.name }}</option>
|
|
||||||
{% else %}
|
|
||||||
<option value="{{ group.id }}">{{ group.name }}</option>
|
|
||||||
{% endif %}
|
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if forloop.first %}
|
<option value="{{ group.id }}">{{ group.name }}</option>
|
||||||
<option value="{{ group.id }}" selected>{{ group.name }}</option>
|
|
||||||
{% else %}
|
|
||||||
<option value="{{ group.id }}">{{ group.name }}</option>
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
|
@ -122,7 +114,7 @@
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="email" class="col-sm-2 control-label">Email<span class="red-fonts">*</span></label>
|
<label for="email" class="col-sm-2 control-label">Email<span class="red-fonts">*</span></label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input id="email" name="email" type="email" placeholder="Email" class="form-control" value="{{ email }}">
|
<input id="email" name="email" type="email" placeholder="Email" class="form-control" {% if error %}value="{{ email }}" {% endif %}>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="hr-line-dashed"></div>
|
<div class="hr-line-dashed"></div>
|
||||||
|
@ -180,7 +172,7 @@ $('#userForm').validator({
|
||||||
ok: "",
|
ok: "",
|
||||||
msg: {required: "必须填写"}
|
msg: {required: "必须填写"}
|
||||||
},
|
},
|
||||||
"manage_group": {
|
"dept_id": {
|
||||||
rule: "checked",
|
rule: "checked",
|
||||||
tip: "选择部门",
|
tip: "选择部门",
|
||||||
ok: "",
|
ok: "",
|
||||||
|
|
Loading…
Reference in New Issue